问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问oracle表空间下面几个参数是什么呢意思啊,谢谢

发布网友 发布时间:2022-04-30 20:04

我来回答

4个回答

懂视网 时间:2022-05-01 00:26

每个块都有一个块首部。这个块首部中有一个事务表。事务表中会建立一些条目来描述哪些事务将块上的哪些行/元素锁定。这个事务表的初始大小由对象的INITRANS 设置指定。对于表,这个值默认为2(索引的INITRANS 也默认为2)。事务表会根据需要动态扩展,最大达到MAXTRANS 个条目(假设块上有足够的自由空间)。所分配的每个事务条目需要占用块首部中的23~24 字节的存储空间。注意,对于Oracle 10g,MAXTRANS 则会忽略,所有段的MAXTRANS 都是255。


也就是说,如果某个事物锁定了这个块的数据,则会在这个地方记录事务的标识,当然那个事务要先看一下这个地方是不是已经有人占用了,如果有,则去看看那个事务是否为活动状态。如果不活动,比如已经提交或者回滚,则可以覆盖这个地方。如果活动,则需要等待(闩的作用)

所以,如果有大量的并发访问使用的这个块,则参数不能太小,否则资源竞争将导致系统并发性能下降。

测试了一下ORACLE 并发事务的时候的块分配和ITL 管理,
略去大部分的测试过程,大概的结果小结如下:
1. INITRANS =1 时 并发多个INSERT 事务(本次测试最多5个)的时候并不会由于ITL的争用而等待组塞,ORACLE 采取的策略是每个INSERT事物分配不同的一些块来使用,这样各个会话之间就不会产生冲突,除非段没有多余的块(次种情况与本次的主题无关).

2.INITRANS =1 时 并发多个UPDATE事务(本次测试最多7个)的时候也不会由于ITL的争用而导致等待产生,此时ORACLE除了使用默认的ITL之外,另外动态扩展所需要的ITL,紧紧在非常极端的情况下才会出现等待,(当然应用层面的死锁或等待与本主题无关)。
1) 该BLOCK没有FREE空间了,注意FREE参数的设置不能太小。
2) 该块使用的ITL总数,超过该块允许的ITL的最大值min(round(block_size*0.5/24) - 2 ,255) 。
   要达到这样的极端情况实际的生产情况是很难的,应该比业务SQL的死锁出现的概率更小。

小结:创建表的时候除非已经清楚,大部分的情况下没有必要调整INITRANS参数,通常1-4以下足够用了,INITRANS 设置非常大的时候ORACLE 有出现坏块的BUG,另外FREE 参数倒是要注意不能随意改小,除非你已经很清楚更改的后果.


参考部分INSERT 测试代码 :
( 分3个SESSION insert的 ,x字段1开头的是SESSION 1 插入的,其他2个也类似   )

SQL*Plus: Release 10.1.0.4.0 - Production on Wed Apr 16 10:40:17 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters and Data Mining options

SQL> create table xx (x number) storage(initial 64k next 64k) initrans 2
Table created.
SQL> truncate table xx;
Table truncated.
SQL> select dbms_rowid.rowid_relative_fno(rowid) file#, dbms_rowid.rowid_block_number(rowid) block# from xx;
no rows selected
SQL> INSERT INTO XX SELECT 11 FROM DUAL;
1 row created.
SQL>                                    
SQL> set linesize 200
SQL> column SEGMENT_NAME format a16
select SEGMENT_NAME,EXTENT_ID,BLOCKS,BYTES from user_extents where segment_name =‘XX‘;SQL>

SEGMENT_NAME      EXTENT_ID     BLOCKS      BYTES
---------------- ---------- ---------- ----------
XX                        0        128    1048576

SQL> select x ,dbms_rowid.rowid_relative_fno(rowid) file#, dbms_rowid.rowid_block_number(rowid) block# from xx;

         X      FILE#     BLOCK#
---------- ---------- ----------
        11         51       4590

SQL> INSERT INTO XX SELECT 12 FROM DUAL;

1 row created.

SQL> select x ,dbms_rowid.rowid_relative_fno(rowid) file#, dbms_rowid.rowid_block_number(rowid) block# from xx;

         X      FILE#     BLOCK#
---------- ---------- ----------
        12         51       4534
        11         51       4590

SQL> 
SQL> INSERT INTO XX SELECT 13 from dual;

1 row created.

SQL> select x ,dbms_rowid.rowid_relative_fno(rowid) file#, dbms_rowid.rowid_block_number(rowid) block# from xx;

         X      FILE#     BLOCK#
---------- ---------- ----------
        12         51       4534
        11         51       4590
        13         51       4658

SQL> INSERT INTO XX SELECT 14 from dual;

1 row created.

SQL> select x ,dbms_rowid.rowid_relative_fno(rowid) file#, dbms_rowid.rowid_block_number(rowid) block# from xx;

         X      FILE#     BLOCK#
---------- ---------- ----------
        12         51       4534
        11         51       4590
        13         51       4658
        14         51       4658

SQL> select x ,dbms_rowid.rowid_relative_fno(rowid) file#, dbms_rowid.rowid_block_number(rowid) block# from xx;

         X      FILE#     BLOCK#
---------- ---------- ----------
        12         51       4534
        11         51       4590
        13         51       4658
        14         51       4658

SQL> commit;

Commit complete.

SQL> INSERT INTO XX SELECT 15 from dual;

1 row created.

SQL> insert into xx select 16 from dual;

1 row created.

SQL> commit;

Commit complete.

SQL> select x ,dbms_rowid.rowid_relative_fno(rowid) file#, dbms_rowid.rowid_block_number(rowid) block# from xx order by x;

         X      FILE#     BLOCK#
---------- ---------- ----------
        11         51       4590
        12         51       4534
        13         51       4658
        14         51       4658
        15         51       4658
        16         51       4658
        
        21         51       4537
        22         51       4537
        23         51       4537
        24         51       4537
        25         51       4537
        26         51       4537
        
        
        31         51       4680
        32         51       4614
        33         51       4614
        34         51       4614
        35         51       4614
        36         51       4614

18 rows selected.

[转]Oracle中INITRANS和MAXTRANS参数

标签:

热心网友 时间:2022-04-30 21:34

pctfree 块中保留用于UPDATE操作的空间百分比,当数据占用的空间达到此上限时,新的数据将不能再插入到此块 中;

每个块都有一个块首部。这个块首部中有一个事务表。事务表中会建立一些条目来描述哪些事务将块上的哪些行/元素锁定。这个事务表的初始大小由对象的INITRANS 设置指定。对于表,这个值默认为2(索引的INITRANS 也默认为2)。事务表会根据需要动态扩展,最大达到MAXTRANS 个条目(假设块上有足够的自由空间)。所分配的每个事务条目需要占用块首部中的23~24 字节的存储空间。注意,对于Oracle 10g,MAXTRANS 则会忽略,所有段的MAXTRANS 都是255。

也就是说,如果某个事物锁定了这个块的数据,则会在这个地方记录事务的标识,当然那个事务要先看一下这个地方是不是已经有人占用了,如果有,则去看看那个事务是否为活动状态。如果不活动,比如已经提交或者回滚,则可以覆盖这个地方。如果活动,则需要等待(闩的作用)

所以,如果有大量的并发访问使用的这个块,则参数不能太小,否则资源竞争将导致系统并发性能下降。

测试了一下ORACLE 并发事务的时候的块分配和ITL 管理,
略去大部分的测试过程,大概的结果小结如下:
1. INITRANS =1 时 并发多个INSERT 事务(本次测试最多5个)的时候并不会由于ITL的争用而等待组塞,ORACLE 采取的策略是每个INSERT事物分配不同的一些块来使用,这样各个会话之间就不会产生冲突,除非段没有多余的块(次种情况与本次的主题无关).

2.INITRANS =1 时并发多个UPDATE事务(本次测试最多7个)的时候也不会由于ITL的争用而导致等待产生,此时ORACLE除了使用默认的ITL之外,另外动态扩展所需要的ITL,紧紧在非常极端的情况下才会出现等待,(当然应用层面的死锁或等待与本主题无关)。
1) 该BLOCK没有FREE空间了,注意FREE参数的设置不能太小。
2) 该块使用的ITL总数,超过该块允许的ITL的最大值min(round(block_size*0.5/24) - 2 ,255) 。
要达到这样的极端情况实际的生产情况是很难的,应该比业务SQL的死锁出现的概率更小。

热心网友 时间:2022-04-30 22:52

第一个参数pctfree是数据块的可用空间的百分比。
可以这样认为:数据块一般由块头、表目录、行目录、可用空间以及数据构成

前3项就是固定的管理开销,记录着数据块的基本信息,一定存在的。剩下的就是可用空间跟你是数据了,当你插入数据很多,你的可用空间当然小啦。

后面2个都是跟事务有关的参数,initrans指的是初始化的事务数量,后面那个理所当然是最大事务的数量了。

热心网友 时间:2022-05-01 00:26

pctfree 用于控制数据块中空闲空间
initrans 用于控制访问数据块的事务数量,也会影响数据块头部空间的使用情况
maxtrans用于决定数据块的事务总数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁告诉我一下,韩语中,“遵命”怎么说 想开个甜品店,不知道哪里可以学习呢 如何取消微信新号绑定的手机号? 翼支付-翼建钟情活动内容是什么? 怎么参加翼支付“翼建钟情”活动? 翼支付--翼建钟情立减10元-建行这次活动有具体名额限制吗? 西凤酒是哪里的 货车总重量不超过二十吨就不算超载吗? 自卸货车上装有二十多吨货已经有四五天了对货车能伤害哪个部位? 如何回复别人的"忙里偷闲"? 为什么IPAD 4一插上数据线就会自动开机? 巷、庞、烘、俏的形近字是什么 出的形近字 步的形近字 四年级上册走月亮形近字组词 通达信macd选股公式 dif=0.03如何编写? 网银能转账到支付宝吗 女生冬天六件套是哪六件? ATM能转账到支付宝吗? 椭圆的参数方程中,自变量θ角的几何意义? 问题 椭圆参数方程中参数的取值范围如何确定? 一个挂耳旁加一个走组词. 冬天穿什么样的棉鞋才保暖而且质量又好? 怎样求参数方程参数的范围 步的形近字是什么 椭圆参数方程中的角度是哪个角? 走的近义词有哪些 椭圆的参数方程 各个变量的意义 走相近的字? 对方没有支付宝可以转账到我的支付宝吗?对方的给我转的帐怎么会出现转账成功,我支付宝也没有收到? 趟的形近字 OPPO手机的发展史是什么样的? 求自杀小队一小时零七分钟的那段音乐是什么,小丑跳水救小丑女那段, 蝙蝠侠:阿卡姆骑士 小丑女试玩视频 小丑女怎么用 小丑女治疗小丑,和被小丑电击出自哪部电影,有知道的么? 青元乳业注册过商标吗?还有哪些分类可以注册? 北方大地中的青元集团真实存在吗? 《北方大地》大结局是什么 各主角最终结 北方大地里王中天的秘书白音是谁 中国传统商务和电子商务的区别 电子商务和传统商务有什么不同? 电子商务主体与传统商业主体存在那些区别? 电子商务与传统交易的区别是什么? 传统商务与电子商务之间有什么区别和联系? 电子商务与传统商务相比具有的特点 电子商务和传统商务模式相比,有哪些优点和缺点? 电子交易与传统交易的区别与联系 佳木斯有网贷逾期能贷款的 华硕电脑K52D系列的 怎样调节屏幕亮度 华硕windows10怎么调节屏幕亮度