Oracle控制文件損壞的恢復方案
一 說明
1.1 遷移說明
把表空間TS_HX_SB_IDX、IDX_SSD_HX中的全部索引遷移至表空間TS_SSD_IDX。
1.2 遷移流程
整體遷移流程:(因為索引量很大,需要分批進行遷移)
| 步驟 | 流程計劃 | 時間估算 |
|---|---|---|
| 1 | 遷移用戶HX_YH、HX_RD、HX_JC、HX_PZ、HX_DJ、HX_ZM、HX_RD索引(無分區(qū)) | 一個晚上 |
| 2 | 遷移用戶HX_ZS索引(有分區(qū)) | 一個晚上 |
| 3 | 遷移用戶HX_SB索引(首先遷移分區(qū)索引(小索引)一節(jié)點上跑,非分區(qū)索引(小索引)二節(jié)點上跑) | 一個晚上 |
| 4 | 遷移用戶HX_SB剩下的索引 | 一個晚上 |
總結(jié)時間:4個晚上
總計花費業(yè)務停機時間:0
二 索引遷移詳細操作流程
2.1 前期準備
統(tǒng)計各個用戶在此兩表空間的索引量大小,以便計劃遷移。
SQL> select segment_type,sum(bytes)/1024/1024 m from dba_segments where owner='HX_SB' and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX') group by segment_type;
SEGMENT_TYPE M
------------------ ----------
INDEX 494088.25
INDEX PARTITION 236043.688
SQL> select segment_type,sum(bytes)/1024/1024 m from dba_segments where owner='HX_ZS' and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX') group by segment_type;
SEGMENT_TYPE M
------------------ ----------
INDEX 45650.75
INDEX PARTITION 99813.3125
SQL> select segment_type,sum(bytes)/1024/1024 m from dba_segments where owner='HX_RD' and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX') group by segment_type;
SEGMENT_TYPE M
------------------ ----------
INDEX 8373.6875
這些都沒有分區(qū):
單位(M)
HX_YH 50
HX_RD 8373.6875
HX_JC 4.0625
HX_PZ 640.4375
HX_DJ 3732
HX_ZM 39
綜上:計劃先遷移HX_RD、 HX_YH、HX_RD、HX_JC、HX_PZ、HX_DJ、HX_ZM這些用戶的索引,再遷移HX_ZS,最后分批遷移HX_SB索引。
2.2 撰寫遷移腳本(無分區(qū))
重建普通索引腳本:
su – oracle
sqlplus / as sysdba
set lin 400
set pagesize 0
spool /home/oracle/idx/hx_rd.sql
select 'alter index '||a.owner||'.'||a.index_name||' rebuild tablespace TS_SSD_IDX online parallel 4;' from dba_indexes a where a.owner='HX_RD' and not exists(select * from dba_part_indexes b where a.owner=b.owner and a.index_name=b.index_name) and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX');
spool off;
修改parallel腳本:
su – oracle
sqlplus / as sysdba
set lin 400
set pagesize 0
spool /home/oracle/idx/hx_rd_parallel.sql
select 'alter index '||a.owner||'.'||a.index_name||' noparallel;' from dba_indexes a where a.owner='HX_RD' and not exists(select * from dba_part_indexes b where a.owner=b.owner and a.index_name=b.index_name) and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX');
spool off;
注意事項:
把hx_dr.sql和hx_rd_parallel.sql中無關(guān)信息刪除。(比如select ‘alter’…… 最后的33 rows selected),hx_rd.sql文件中只保留alter index hx_rd.index_name rebuild TS_SSD_IDX online parallel 4; hx_rd_parallel.sql文件中只保留 alter index hx_rd.index_name noparallel;即可。
最后撰寫hx_rd.sh腳本。
vi hx_rd.sh [oracle@ljw sql]$ cat 2.sh #!/bin/sh sqlplus "/ as sysdba" <<EOF host echo "*******************begin rebuild*****************",`date` @idx/hx_rd.sql; host echo "*******************end rebuild*******************",`date` host echo "*******************begin noparalel***************",`date` @hx_rd_parallel.sql; host echo "*******************end noparalel*****************",`date` EOF
2.3 撰寫遷移腳本(有分區(qū))
重建普通索引腳本:
su – oracle
sqlplus / as sysdba
set lin 400
set pagesize 0
spool /home/oracle/idx/hx_zs.sql
select 'alter index '||a.owner||'.'||a.index_name||' rebuild tablespace TS_SSD_IDX online parallel 4;' from dba_indexes a where a.owner='HX_ZS' and not exists(select * from dba_part_indexes b where a.owner=b.owner and a.index_name=b.index_name) and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX');
spool off;
重建分區(qū)索引腳本:
su – oracle
sqlplus / as sysdba
set lin 400
set pagesize 0
spool /home/oracle/idx/hx_zs_part.sql
select 'alter index '||a.owner||'.'||a.index_name||' rebuild partition '||b.partition_name||' tablespace TS_SSD_IDX online parallel 4;' from dba_part_indexes a,dba_ind_partitions b where a.owner=b.index_owner and a.index_name=b.index_name and a.owner='HX_ZS' and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX');
spool off;
修改普通索引parallel腳本:
su – oracle
sqlplus / as sysdba
set lin 400
set pagesize 0
spool /home/oracle/idx/hx_zs_parallel.sql
select 'alter index '||a.owner||'.'||a.index_name||' noparallel;' from dba_indexes a where a.owner='HX_RD' and not exists(select * from dba_part_indexes b where a.owner=b.owner and a.index_name=b.index_name) and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX');
spool off;
修改分區(qū)索引parallel腳本:
su – oracle
sqlplus / as sysdba
set lin 400
set pagesize 0
spool /home/oracle/idx/hx_zs_part_parallel.sql
select 'alter index '||a.owner||'.'||a.index_name||' noparallel;' from dba_part_indexes a,dba_ind_partitions b where a.owner=b.index_owner and a.index_name=b.index_name and a.owner='HX_ZS' and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX') group by a.owner,a.index_name;
spool off;
注意事項和前面一樣,刪除。sql中無關(guān)信息。
最后撰寫hx_rd.sh腳本。
vi hx_rd.sh #!/bin/sh sqlplus "/ as sysdba" <<EOF host echo "*******************begin rebuild*****************",`date` @idx/hx_zs.sql; @hx_zs_part.sql; host echo "*******************end rebuild*******************",`date` host echo "*******************begin noparalel***************",`date` @hx_zs_parallel.sql; @hx_zs_part_parallel.sql; host echo "*******************end noparalel*****************",`date` EOF
2.4 執(zhí)行腳本
cd 到相應目錄下
nohup ./hx_rd.sh & 即可
2.5 檢查索引遷移成功與否
檢查源表空間中是否還存在索引:
select index_name,degree,tablespace_name from dba_indexes where owner='HX_RD' and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX');
檢查遷移到的表空間中是否有索引:
select index_name,degree,tablespace_name from dba_indexes where owner='HX_RD' and tablespace_name in ('TS_SSD_IDX');
常用語句:
如:
查詢HX_SB用戶下普通索引的大小:
select segment_name,segment_type,bytes/1024/1024 m from dba_segments where owner='HX_SB' and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX') and segment_type='INDEX' order by bytes;
查詢HX_SB用戶下分區(qū)索引的大?。?/p>
select segment_name,segment_type,partition_name,bytes/1024/1024 m from dba_segments where owner='HX_SB' and tablespace_name in('TS_HX_SB_IDX','IDX_SSD_HX') and segment_type='INDEX PARTITION' order by bytes;
到此這篇關(guān)于Oracle控制文件損壞的恢復方案的文章就介紹到這了,更多相關(guān)Oracle控制文件損壞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在OracleE數(shù)據(jù)庫的字段上建立索引的方法
在OracleE數(shù)據(jù)庫的字段上建立索引的方法...2007-04-04
oracle使用sql語句增加字段示例(sql刪除字段語句)
oracle使用sql語句增加修改刪除字段示例2013-12-12
Linux環(huán)境下重啟Oracle數(shù)據(jù)庫詳細圖文教程
Linux系統(tǒng)下網(wǎng)站出現(xiàn)問題的時候,可通過重啟oracle數(shù)據(jù)庫進行處理,這篇文章主要給大家介紹了關(guān)于Linux環(huán)境下重啟Oracle數(shù)據(jù)庫詳細圖文教程的相關(guān)資料,需要的朋友可以參考下2023-12-12

