平臺:
# showrev
Hostname: nice
Hostid: 10543b38
Release: 5.10
Kernel architecture: i86pc
Application architecture: i386
Hardware provider:
Domain:
Kernel version: SunOS 5.10 Generic_118844-26
數據庫版本:
SQL> select version from v$instance;
VERSION
-----------------
10.2.0.2.0
======================================
查看控制文件的相關信息:
select value from v$parameter where name='control_files';
VALUE
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/nice/control01.ctl,/u01/app/oracle/oradata/nice/control02.ctl,/u01/app/oracle/oradata/nice/control03.ctl
也可以用
select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/nice/control01.ctl
/u01/app/oracle/oradata/nice/control02.ctl
/u01/app/oracle/oradata/nice/control03.ctl
三個控制文件都在同一個硬盤的同一個目錄中;
計劃只使用兩個控制文件,並將control02.ctl放在另外一塊硬盤的/u03/app/oracle/下。
1.查看數據庫中的所有文件信息
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 10
Current log sequence 12
-----------
SQL> select name from v$datafile
2 union
3 select name from v$controlfile
4 union
5 select member from v$logfile;
2.根據當前系統使用的spfile創建一個pfile文件
create pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initnice.ora' from spfile;
3.進行冷備(一致性備份)
shutdown immediate
將所有的datafile,controlfile,logfile複製到/u02/oradata/nice目錄下,將spfilenice.ora也複製到/u02/oradata/nice目錄下。
4.修改剛創建的pfile文件的control_files='/u01/app/oracle/oradata/nice/control01.ctl','/u03/app/oracle/control02.ctl'
5.將'/u01/app/oracle/oradata/nice/目錄下的control02文件移到'/u03/app/oracle/目錄下,並將control03.ctl刪除。
6.嘗試使用剛修改過的pfile文件啓動數據庫
startup pfile='/u01/app/oracle/product/10.2.0/db_1/dbs/initnice.ora'
7.成功啓動數據
查看控制文件信息:
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/nice/control01.ctl
/u03/app/oracle/control02.ctl
達到預期效果。
8.創建一個新的spfile。
create spfile from pfile;
9.備份一個controlfile,再重新冷備一份數據庫。
alter database backup controlfile to ‘/u02/app/oracle/control.ctl';
10.一點思考:
對控制文件的管理,關鍵在於對參數文件中control_files項的設置,以及設置後,相對應目錄中的控制文件的存在。
在oracle文檔上強烈建議將使用多個控制文件並放置在不同的硬盤上。這樣的建議和架構對控制文件的保護上沒錯,但是在實際的生產系統中這樣的架構似乎並不合理。加入放在兩個硬盤上,那麼兩塊硬盤中有故障的概率要比一塊硬盤大。而在oracle系統中,無論哪個contorlfile失效都會導致系統宕掉。這可能到增加了系統故障的可能。所以達不到高可用的要求。而一些實際的系統架構是依賴於硬件的冗餘,比如raid1或者raid5/raid6的配置來保證系統的高可用運行和controlfile在硬盤出現故障時不會丟失。
另外,對controlfile的備份也需要重視。