dde*_*any 5 oracle indexing deadlock blob oracle11gr2
我有一个带有BLOB列的分区表.当多个用户从该表中删除每个事务多行时,我们经常遇到ORA-00060死锁,根据trc文件,死锁是由LOB索引分区中的ITL死锁引起的.所以我想重新创建具有比默认值2更高的LOB索引INITRANS的表.我可以为非分区表执行此操作create table ... ( ... lob (...) store as ... ( ... index ... (... initrans 10 ... ) ) )
,但是对于分区表,Oracle说"ORA-22879:不能对分区表使用LOB INDEX子句" ".有没有其他方法可以为分区LOB索引设置INITRANS?
(更新:请注意,我不需要更改现有表,我可以从头开始重新创建它.这通常更容易.)
jonearles的编辑如下:
以下是常规方法不起作用的示例:
create table test1(a number, b clob)
partition by range (a) (partition p1 values less than (1));
select * from dba_indexes where owner = user and table_name = 'TEST1';
--ORA-22864: cannot ALTER or DROP LOB indexes
alter index SYS_IL0000111806C00002$$ initrans 3;
Run Code Online (Sandbox Code Playgroud)
有趣的是,指数DDL看起来很奇怪.下面的代码不会运行 - 索引中没有表达式,括号甚至没有关闭.
select dbms_metadata.get_ddl('INDEX', 'SYS_IL0000111806C00002$$') from dual;
CREATE UNIQUE INDEX "JHELLER"."SYS_IL0000111806C00002$$" ON "JHELLER"."TEST1" (
PCTFREE 10 INITRANS 1 MAXTRANS 255
STORAGE(
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) LOCAL
(PARTITION "SYS_IL_P19289"
PCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING
STORAGE( INITIAL 65536 NEXT 1048576 MAXEXTENTS 2147483645
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ,
PARTITION "SYS_IL_P19290"
PCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING
STORAGE( INITIAL 65536 NEXT 1048576 MAXEXTENTS 2147483645
BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" )
PARALLEL (DEGREE 0 INSTANCES 0)
Run Code Online (Sandbox Code Playgroud)
Dav*_*sta -1
看起来错误背后的原因是 LOB 也已分区,因此您需要单独更改每个分区。我发现 Oracle 的一条注释表明他们移动 LOB 分区的方法是:
alter table <table name> move partition <table partition name>
lob (<lob column name>) store as (tablespace <lob tablespace name>)
Run Code Online (Sandbox Code Playgroud)
所以我想知道您是否也可以使用它来更改其存储参数,例如:
alter table <table name> move partition <table partition name>
lob (<lob column name>) store as (... index ... (... initrans 10 ... ) ) )
Run Code Online (Sandbox Code Playgroud)
我没有启用分区,所以无法尝试。
归档时间: |
|
查看次数: |
3018 次 |
最近记录: |