【實驗】修改資料檔名字的三種途徑

secooler發表於2009-07-10
【問題現象】
在給表空間新增檔案後,發現資料檔案的新增的位置或名字不規範,需要規範性的更正
如下述場景:
sys@ora10g> col tablespace_name for a15
sys@ora10g> col file_name for a50
sys@ora10g> select tablespace_name,file_name from dba_data_files where tablespace_name = 'TBS_SEC_D';

TABLESPACE_NAME FILE_NAME
--------------- --------------------------------------
TBS_SEC_D       /oracle/oradata/ora10g/tbs_sec_d01dbf

細心地您應該看到這個資料檔名字應該為tbs_sec_d01.dbf,這裡少了一個點。(另外一種場景是錯誤的將資料檔案新增到了不正確的路徑中需要修改)
這種錯誤也許您也會遇到。
首先宣告一下:如果保持這個錯誤名字不變,不會影響到資料庫的正常執行,但為了防止在維護過程中產生不必要的干擾,還是應該將其更正的。

【處理方法1】OFFLINE資料檔案 --&gt 修改作業系統上的檔名 --&gt 修改資料庫中的檔名 --&gt 對資料檔案進行恢復 --&gt ONLINE資料檔案
特別強調:需要歸檔模式!因為需要對資料檔案進行恢復

1.OFFLINE資料檔案
sys@ora10g> alter database datafile '/oracle/oradata/ora10g/tbs_sec_d01dbf' offline;

Database altered.

2.修改作業系統上的檔名
ora10g@testdb /oracle/oradata/ora10g$ mv tbs_sec_d01dbf tbs_sec_d01.dbf

3.修改資料庫中的檔名
sys@ora10g> alter database rename file '/oracle/oradata/ora10g/tbs_sec_d01dbf' to '/oracle/oradata/ora10g/tbs_sec_d01.dbf';

Database altered.

4.對資料檔案進行恢復
sys@ora10g> recover datafile '/oracle/oradata/ora10g/tbs_sec_d01.dbf';
Media recovery complete.

5.ONLINE資料檔案
alter database datafile '/oracle/oradata/ora10g/tbs_sec_d01.dbf' online;

6.確認修改成功
sys@ora10g> select tablespace_name,file_name from dba_data_files where tablespace_name = 'TBS_SEC_D';

TABLESPACE_NAME FILE_NAME
--------------- ---------------------------------------
TBS_SEC_D       /oracle/oradata/ora10g/tbs_sec_d01.dbf

【處理方法2】OFFLINE表空間 --&gt 修改作業系統上的檔名 --&gt 修改資料庫中的檔名 --&gt ONLINE表空間
1.OFFLINE表空間
sys@ora10g> alter tablespace tbs_sec_d offline;

Tablespace altered.

2.修改作業系統上的檔名
ora10g@testdb /oracle/oradata/ora10g$ mv tbs_sec_d01dbf tbs_sec_d01.dbf

3.修改資料庫中的檔名
sys@ora10g> alter database rename file '/oracle/oradata/ora10g/tbs_sec_d01dbf' to '/oracle/oradata/ora10g/tbs_sec_d01.dbf';

Database altered.

4.ONLINE表空間
sys@ora10g> alter tablespace tbs_sec_d online;

Tablespace altered.

5.確認修改成功
sys@ora10g> select tablespace_name,file_name from dba_data_files where tablespace_name = 'TBS_SEC_D';

TABLESPACE_NAME FILE_NAME
--------------- ---------------------------------------
TBS_SEC_D       /oracle/oradata/ora10g/tbs_sec_d01.dbf

【處理方法3】SHUTDOWN資料庫 --&gt 修改作業系統上的檔名 --&gt 資料庫啟動到MOUNT --&gt 修改資料庫中的檔名 --&gt OPEN資料庫
1.SHUTDOWN資料庫
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

2.修改作業系統上的檔名
ora10g@testdb /oracle/oradata/ora10g$ mv tbs_sec_d01dbf tbs_sec_d01.dbf

3.資料庫啟動到MOUNT
NotConnected@> startup mount;
ORACLE instance started.

Total System Global Area  562036736 bytes
Fixed Size                  2022312 bytes
Variable Size             171967576 bytes
Database Buffers          381681664 bytes
Redo Buffers                6365184 bytes
Database mounted.

4.修改資料庫中的檔名
NotConnected@> alter database rename file '/oracle/oradata/ora10g/tbs_sec_d01dbf' to '/oracle/oradata/ora10g/tbs_sec_d01.dbf';

Database altered.

5.OPEN資料庫
NotConnected@> alter database open;

Database altered.

6.確認修改成功
sys@ora10g> select tablespace_name,file_name from dba_data_files where tablespace_name = 'TBS_SEC_D';

TABLESPACE_NAME FILE_NAME
--------------- ---------------------------------------
TBS_SEC_D       /oracle/oradata/ora10g/tbs_sec_d01.dbf

【總結】
以上三個實驗是按照對資料庫執行影響加深的順序進行的。很顯然,需要停起資料庫對資料庫的可用性影響是最大的,單獨對特定資料檔案進行修改的影響最小,對錶空間offline的方法影響介於其之間。

希望螢幕前的您,可以根據不同的場景具體問題具體分析之。

好運!

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-608810/,如需轉載,請註明出處,否則將追究法律責任。

相關文章