【問題現象】
在給表空間添加文件后,發現數據文件的添加的位置或名字不規范,需要規范性的更正
如下述場景:
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數據文件 --> 修改操作系統上的文件名 --> 修改數據庫中的文件名 --> 對數據文件進行恢復 --> 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表空間 --> 修改操作系統上的文件名 --> 修改數據庫中的文件名 --> 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數據庫 --> 修改操作系統上的文件名 --> 數據庫啟動到MOUNT --> 修改數據庫中的文件名 --> 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的方法影響介於其之間。
