添加冗餘控制文件天然是爲數據庫的安全增長一層保障,畢竟單鏈路控制文件仍是稍微有點危險的,畢竟是庫文件的樞紐。廢話很少說,進入今天的主題,for RAC 天然也能夠 for 單機,如有此方面需求樓主後期會更進發布的。數據庫
============================== 萌噠萌噠的分割線===============================安全
注:添加冗餘控制文件期間須要有關庫操做,需注意!!!session
備份控制文件
SQL> alter session set tracefile_identifier='backupctrl';oracle
Session altered.app
SQL> alter database backup controlfile to trace;ide
Database altered.ui
SQL>
查看當前控制文件路徑
SQL> select name from v$controlfile; (可保留,後面會用到此路徑在rman中恢復)spa
NAME
--------------------------------------------------------------------------------
+ARCH/xxx/controlfile/current.256.936287107rest
SQL>
在trace文件中找到backup controlfile 文件所在的位置並確認
SQL> show parameter user;日誌
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
license_max_users integer 0
parallel_adaptive_multi_user boolean TRUE
redo_transport_user string
user_dump_dest string /u02/app/oracle/diag/rdbms/xxx/xxx1/trace
SQL>
若RAC環境是ASM,也就是兩個節點共享一個spfile則能夠在任何一個節點操做,但關庫須要兩個節點都要執行
SQL> alter system set control_files='+ARCH/xxx/controlfile/current.256.936287107','+DATADG' scope=spfile;
關庫操做:
alter system checkpoint; //手動創檢查點,避免執行關庫操做時後臺建立檢查點而致使數據庫卡住。
alter system archive log current; //切換全部實例的redo 並生成歸檔日誌。
shutdown immediate;
啓動數據庫至至nomount
srvctl start database -d xxx -o nomount
RMAN> restore controlfile from '+ARCH/xxx/controlfile/current.256.936287107';
SQL> shutdown immediate //兩個實例都需操做
ORA-01507: database not mounted
開啓數據庫
srvctl start database -d xxx
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
READ WRITE
SQL> show parameter control_files;
NAME TYPE VALUE
------------------------------------ ----------- -----------
control_files string +ARCH/xxx/controlfile/curren
t.256.936287107, +DATADG/xxx/controlfile/current.263.93652
9407
查看集羣狀態
擴展:
觀看此文檔的哥們們,須要瞭解如下幾點小細節
個人控制文件默認是放在ARCH盤下了而不是DATADG下;
文檔中出現的「xxx」以及被粉紅色顏色蓋住的地方均是數據庫的實例名;
老規矩,標紅處是樓主認爲須要在數據庫中執行的部分。
srvctl start database -d xxx 是在oralce用戶下執行的(僅本身觀點)