處理表的行遷移的問題
檢測遷移和連結
使用ANALYZE 命令檢測遷移和連結:
SQL> ANALYZE TABLE oe.orders COMPUTE STATISTICS;
Table Analyzed.
SQL> SELECT num_rows, avg_row_len, chain_cnt
2 FROM DBA_TABLES
3 WHERE table_name='ORDERS';
NUM_ROWS AVG_ROW_LEN CHAIN_CNT
---------- ----------- ----------
1171 67 83
使用Statspack/AWR 檢測遷移和連結:
Statistic Total per Second per Trans
table fetch continued row 34,964 0.7 0.2
先執行utlchain.sql指令碼來建立CHAINED_ROWS表
SQL> @D:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlchain.sql
選擇已遷移的行
SQL> ANALYZE TABLE oe.orders LIST CHAINED ROWS;
Table analyzed.
SQL> SELECT owner_name, table_name, head_rowid
2 FROM chained_rows
3 WHERE table_name = 'ORDERS';
OWNER_NAME TABLE_NAME HEAD_ROWID
---------- ---------- ------------------
SALES ORDER_HIST AAAAluAAHAAAAA1AAA
SALES ORDER_HIST AAAAluAAHAAAAA1AAB
消除已遷移的行
匯出/匯入:
– 匯出表
– 刪除或截斷表
– 匯入表
MOVE 表命令:
– ALTER TABLE EMPLOYEES MOVE
重新定義聯機表
複製已遷移的行:
– 使用ANALYZE 查詢遷移的行
– 將遷移的行復制到新表
– 從原始表刪除遷移行
– 將行從新表複製到原始表
下面是採用MOVE表命令的方式
-- Created on 2012-5-24 by ADMINISTRATOR
declare
cursor lj is SELECT table_name, num_rows, avg_row_len, chain_cnt FROM DBA_TABLES a where a.owner='SSCP2'
and a.chain_cnt>0;
cursor sy(p_tablename in varchar2) is
select * from dba_indexes a where a.owner='SSCP2' and a.table_name=''||''||p_tablename||''||'';
sql_c varchar2(200):=null;
cl_flag number(2):=1;
begin
for r in lj loop
sql_c:=null;
sql_c:='alter table sscp2.'||r.table_name||' move';
begin
execute immediate ''||sql_c;
exception
when others then
dbms_output.put_line('執行表移動出錯的表'||r.table_name);
cl_flag:=0;
end ;
if cl_flag=1 then
for l in sy(r.table_name) loop
dbms_output.put_line(l.index_name);
sql_c:=null;
sql_c:='alter index sscp2.'||l.index_name||' rebuild';
begin
execute immediate ''||sql_c;
exception
when others then
dbms_output.put_line('重建出錯的索引'||l.index_name);
end ;
end loop;
sql_c:='analyze table sscp2.'||r.table_name||' compute statistics';
begin
execute immediate ''||sql_c;
exception
when others then
dbms_output.put_line('分析表出錯'||r.table_name);
end ;
end if;
end loop;
end;
SQL> SELECT table_name, num_rows, avg_row_len, chain_cnt FROM DBA_TABLES a where a.owner='SSCP2'
2 and a.chain_cnt>0;
TABLE_NAME NUM_ROWS AVG_ROW_LEN CHAIN_CNT
------------------------------ ---------- ----------- ----------
ABSB 2479525 114 3041
ABS8 29230869 149 195428
IDS2 453402 60 132
ICSW 78087 37 37
ICS1 759167 49 5521
IC12 729809 111 9
IC10 256770 170 62
ADS3 17472005 186 2221
ADS1 544695 130 53
ACSN 39821 90 4
ACS6 1940197 82 162
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-730801/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遷移後處理外來鍵約束的問題
- 對Oracle分割槽表進行表空間遷移並處理ORA-14511問題Oracle
- docker 遷移映象到其他機器執行報錯OCI 問題處理Docker
- 行遷移(鏈化行)問題
- 海量資料處理_使用外部表進行資料遷移
- 利用RMAN遷移表空間碰到的問題(五)
- 利用RMAN遷移表空間碰到的問題(四)
- 利用RMAN遷移表空間碰到的問題(三)
- 利用RMAN遷移表空間碰到的問題(二)
- 利用RMAN遷移表空間碰到的問題(一)
- X7一體機資料庫遷移問題處理資料庫
- 處理TEMP表空間滿的問題
- 解析PHP處理換行符的問題PHP
- 排除表中的行連結和行遷移
- 關於 Laravel 遷移遇到的問題Laravel
- 遷移學習中的BN問題遷移學習
- MySQL遷移檔案的小問題MySql
- 處理問題的方法
- xml處理的問題XML
- 聊聊國產資料庫遷移中的表連線效能問題資料庫
- 自然語言處理中的遷移學習(下)自然語言處理遷移學習
- 自然語言處理中的遷移學習(上)自然語言處理遷移學習
- 【問題處理】同樣的並行表,同樣的索引結構,不同的執行計劃並行索引
- sysaux 表空間不足問題處理UX
- 遷移Qt專案的路徑問題QT
- 使用資料泵遷移遇到的問題
- 關於Oracle資料庫中行遷移/行連結的問題Oracle資料庫
- 【問題處理】使用trim和 replace處理字串中的換行符號字串符號
- mysql的處理能力問題MySql
- 查詢表存在大量行遷移
- 資料遷移中需要考慮的問題
- 傳輸表空間及問題處理
- 遷移表到新的表空間
- Oracle資料庫關於錶行連線和行遷移處理方案Oracle資料庫
- xtts遷移時ORA-353處理TTS
- 清除行遷移的例子
- JSF的outputText時,無法處理換行問題JS
- 一個NBU問題的處理