33.重建控制檔案(rac模式下)
阿新 • • 發佈:2022-03-29
控制檔案是什麼,在前面的文章中也已經說過,這裡主要說一下重建控制檔案
1.檢視控制檔案所在的位置
這裡怎樣檢視控制檔案的位置
SQL> show parameter control_files; NAME TYPE ------------------------------------ --------------------------------- VALUE ------------------------------ control_files string /oradata/orcl/control01.ctl, /oradata/orcl/control02.ctl
2.重建控制檔案
使用sqlplus連線到已經mount或open的rac資料庫
sql> alter database backup controlfile to trace noresetlogs; ##當執行這個命令是會在alert.log中會記錄備庫控制檔案的日誌,且在tracefile中找到整個crontol檔案的sql語句
(備份控制檔案):
alter database backup controlfile to '/u02/app/oracle/control.ctl';
或者使用這種方法,把控制檔案內容給打印出來:建議使用這中方法檢視控制檔案內容
alter database backup controlfile to trace as '/tmp/controlfile.log';
3.編寫control.sql檔案
這裡的control.sql檔案要根據上面檢視到的控制檔案進行寫入(很簡單)
4.關閉資料庫的所有例項
srvctl stop database -d db_name -o immeidate
5.備份當前的控制檔案
alter database backup controlfile to '/u02/app/oracle/control.ctl';
6.確保所有的設定都是針對thread 1
instance =1 thread = 1
7.將引數檔案中的cluster_database 設定為false
sql> startup nomount sql> alter system set cluster_database=false scope=spfile; sql> shutdown
8.執行指令碼(這一步是在第7步和第8步之間的)
sqlplus / as sysdba SQL> @control.sql
9.將引數cluster_database設定為true
sql> alter system set cluster_database=true scope=spfile;
10.關閉資料庫
shu immeidate
11.啟動所有例項並檢視狀態
srvctl start database -d db_name srvctl status database -d db_name
##這裡想要說幾個要注意的點:
1.跑control.sql指令碼時,先要把資料置於nomount狀態,然後修改引數cluster_database為false,這個引數是rac叢集引數,然後再跑control.sql指令碼。
2.跑完之後,需要在修改引數cluster_database為true. 然後再shu immeidate資料,最後再用srvctl啟動資料。
3.如果是單例項的話,那麼就不需要設定cluster_database,直接在nomount狀態下執行control.sql語句。