一次行迁移记录的解决方案
2010-07-14 16:59
375 查看
一、查找出有迁移记录的表(解决迁移记录后还是能查出此表,在处理的时候不可以根据这个来判断)
SELECT
owner owner
, table_name table_name
, '' partition_name
, num_rows num_rows
, ROUND((chain_cnt/num_rows)*100, 2) || '%' pct_chained_rows
, avg_row_len avg_row_length
FROM
(select
owner
, table_name
, chain_cnt
, num_rows
, avg_row_len
from
sys.dba_tables
where
chain_cnt is not null
and num_rows is not null
and chain_cnt > 0
and num_rows > 0
and owner != 'SYS')
UNION ALL
SELECT
table_owner owner
, table_name table_name
, partition_name partition_name
, num_rows num_rows
, '<div align="right">' || ROUND((chain_cnt/num_rows)*100, 2) || '%</div>' pct_chained_rows
, avg_row_len avg_row_length
FROM
(select
table_owner
, table_name
, partition_name
, chain_cnt
, num_rows
, avg_row_len
from
sys.dba_tab_partitions
where
chain_cnt is not null
and num_rows is not null
and chain_cnt > 0
and num_rows > 0
and table_owner != 'SYS') b
WHERE
(chain_cnt/num_rows)*100 > 10;
------------------------------------------------------
二、创建记录表
SQL> @/u01/app/oracle/product/10.1/rdbms/admin/utlchain.sql
三、记录发生迁移记录,注意一定要查是否有关联关系,如果有则先禁用后启用
analyze table WFPROCESSINST list chained rows into chained_rows;
select count(*) from chained_rows;4934
select * from chained_rows;
select index_name,index_type,table_name from user_indexes where table_name='WFPROCESSINST';
select constraint_name,constraint_type,table_name from user_constraints d where d.r_constraint_name
in(select constraint_name from user_constraints where table_name='WFPROCESSINST')
-------------有迁移记录的行 consistent gets 不是1---------------------------
SQL> set autotrace on
SQL> select * from WFPROCESSINST where rowid='AAANLvAAIAABJBlAAD';
7 consistent gets
-------------对迁移记录的处理
create table terminal_temp as
select * from WFPROCESSINST where rowid in(select head_rowid from chained_rows where table_name = 'WFPROCESSINST');
copy from tssa/tssa2006@sxtsioms to tssa/tssa2006@sxtsioms create terminal_temp using select * from WFPROCESSINST where rowid in(select head_rowid from chained_rows where table_name = 'WFPROCESSINST');
-------------------------
select count(*)from WFPROCESSINST;31493
select count(*)from terminal_temp;4934
delete WFPROCESSINST
where rowid in
(select head_rowid
from chained_rows
where table_name = 'WFPROCESSINST');
commit;
---------------------
insert into WFPROCESSINST select * from terminal_temp;
copy from tssa/tssa2006@sxtsioms to tssa/tssa2006@sxtsioms Append WFPROCESSINST using select * from terminal_temp;
--------查看处理结果
SQL> set autotrace on
SQL> select * from WFPROCESSINST where rowid='AAANLvAAIAABJBlAAD';
1 consistent gets
truncate table chained_rows;
analyze table WFPROCESSINST list chained rows into chained_rows
select count(*) from chained_rows;---0
SELECT
owner owner
, table_name table_name
, '' partition_name
, num_rows num_rows
, ROUND((chain_cnt/num_rows)*100, 2) || '%' pct_chained_rows
, avg_row_len avg_row_length
FROM
(select
owner
, table_name
, chain_cnt
, num_rows
, avg_row_len
from
sys.dba_tables
where
chain_cnt is not null
and num_rows is not null
and chain_cnt > 0
and num_rows > 0
and owner != 'SYS')
UNION ALL
SELECT
table_owner owner
, table_name table_name
, partition_name partition_name
, num_rows num_rows
, '<div align="right">' || ROUND((chain_cnt/num_rows)*100, 2) || '%</div>' pct_chained_rows
, avg_row_len avg_row_length
FROM
(select
table_owner
, table_name
, partition_name
, chain_cnt
, num_rows
, avg_row_len
from
sys.dba_tab_partitions
where
chain_cnt is not null
and num_rows is not null
and chain_cnt > 0
and num_rows > 0
and table_owner != 'SYS') b
WHERE
(chain_cnt/num_rows)*100 > 10;
------------------------------------------------------
二、创建记录表
SQL> @/u01/app/oracle/product/10.1/rdbms/admin/utlchain.sql
三、记录发生迁移记录,注意一定要查是否有关联关系,如果有则先禁用后启用
analyze table WFPROCESSINST list chained rows into chained_rows;
select count(*) from chained_rows;4934
select * from chained_rows;
select index_name,index_type,table_name from user_indexes where table_name='WFPROCESSINST';
select constraint_name,constraint_type,table_name from user_constraints d where d.r_constraint_name
in(select constraint_name from user_constraints where table_name='WFPROCESSINST')
-------------有迁移记录的行 consistent gets 不是1---------------------------
SQL> set autotrace on
SQL> select * from WFPROCESSINST where rowid='AAANLvAAIAABJBlAAD';
7 consistent gets
-------------对迁移记录的处理
create table terminal_temp as
select * from WFPROCESSINST where rowid in(select head_rowid from chained_rows where table_name = 'WFPROCESSINST');
copy from tssa/tssa2006@sxtsioms to tssa/tssa2006@sxtsioms create terminal_temp using select * from WFPROCESSINST where rowid in(select head_rowid from chained_rows where table_name = 'WFPROCESSINST');
-------------------------
select count(*)from WFPROCESSINST;31493
select count(*)from terminal_temp;4934
delete WFPROCESSINST
where rowid in
(select head_rowid
from chained_rows
where table_name = 'WFPROCESSINST');
commit;
---------------------
insert into WFPROCESSINST select * from terminal_temp;
copy from tssa/tssa2006@sxtsioms to tssa/tssa2006@sxtsioms Append WFPROCESSINST using select * from terminal_temp;
--------查看处理结果
SQL> set autotrace on
SQL> select * from WFPROCESSINST where rowid='AAANLvAAIAABJBlAAD';
1 consistent gets
truncate table chained_rows;
analyze table WFPROCESSINST list chained rows into chained_rows
select count(*) from chained_rows;---0
相关文章推荐
- 记一次eclipse到android studio 的项目迁移记录
- 记录一次悲催的SharePoint “迁移”
- Linux下一次数据仓库进行迁移记录
- 记录一次mysql迁移数据至greenplum的过程
- ADB识别失败,驱动显示感叹号解决方案——记录一次驱动重装导致的不识别手机问题
- Linux下一次数据仓库进行迁移记录
- 记录一次升级迁移的过程
- Ubuntu16.04 记录一次安装greenplum的过程,以及遇到的问题与部分解决方案
- 记录一次悲催的SharePoint “迁移”
- 记录一次禅道迁移安装目录引起的二维码生成失败的问题解决
- 记录一次迁移mysqldb中出现的server _errno=1227
- 记录一次文件迁移
- 一次Oracle数据库挂载迁移的过程记录
- 记录一次Git问题及其解决方案
- 一次lvs迁移记录
- 记录一次gitlab->github企业版的迁移
- 向后台一次提交多条记录的解决方案
- 一次mysql数据库迁移的过程记录
- 记录一次spring mvc事务不起作用的解决方案
- 记一次跨域问题的解决方案