oracle更改控制文件位置

平臺:

# 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的備份也需要重視。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章