1. 程式人生 > >重新命名資料庫表空間和資料檔案

重新命名資料庫表空間和資料檔案

一、重新命名資料庫表空間名
使用alter tablespace… rename to命令,可以重新命名一個永久或者臨時表空間。例如,下面重新命名users表空間:
Alter tablespace tbs_name rename to new_tbs_name;
當你重新命名一個表空間時,資料庫將會更新與該表空間相關的在資料字典、控制檔案和聯機資料檔案頭中相關資訊。資料庫不會修改該表空間的id,所以當重新命名一個表空間時,將其作為預設表空間的使用者將自動修改過來,可以通過dba_users檢視來檢視。以下一些情況需要注意:
1.Compatible引數必須為10.0或以上。即表明10g以上才支援表空間重新命名。
2.System和sysaux表空間不能重新命名。
3.如果該表空間中有任何一個數據檔案處於離線狀態或者表空間處於離線狀態,則不能進行重新命名。
4.如果表空間為只讀,則資料檔案頭不能更新。這不能被認為是corruption。代替之,它將向警告日誌寫一些資訊,表明資料檔案頭不能重新命名。資料字典和控制檔案是可以更新的。
5.如果該表空間是預設臨時表空間,則關於資料庫特性表被更新,可以通過database_properties檢視可以檢視。
6.如果表空間為undo表空間,並且滿足以下條件,則表空間名稱被更新到spfile檔案中。
    資料庫用spfile來啟動資料庫。
    反應給所有指定的例項。
    如果使用pfile啟動資料庫,則會向警告日誌寫一條資訊,宣告初始化引數必須手工修改。
二、重新命名資料庫表空間檔名
過程步驟:OFFLINE表空間 --> 修改作業系統上的檔名 --> 修改資料庫中的檔名 --> ONLINE表空間
重點提示:資料庫必須執行在歸檔模式下,因為要進行介質恢復
1.OFFLINE表空間
    SQL> alter tablespace tbs_test_a offline;
    Tablespace altered.
2.使用作業系統命令複製表空間檔案
    SQL>Host copy
    F:\DISK1\ORATABLESPACE\tbs_test_a_01.DBF 
    F:\DISK1\ORATABLESPACE\tbs_test_a_02.DBF;
3.修改資料庫中的檔名
    SQL> ALTER DATABASE RENAME FILE 
    ‘F:\DISK1\ORATABLESPACE \tbs_test_a_01' TO
    ‘F:\DISK1\ORATABLESPACE\tbs_test_a_02.DBF'
    Database altered.
4.執行命令,完成介質恢復
    SQL> recover datafile 'F:\DISK1\ORATABLESPACE\ tbs_test_a_02.DBF';
    完成介質恢復。
5.ONLINE表空間
    SQL> alter tablespace tbs_test_a online;
    Tablespace altered.
6.確認修改成功
   SQL> select tablespace_name,file_name from dba_data_files where tablespace_name = 'tbs_test_a ';
   TABLESPACE_NAME FILE_NAME
   --------------- ---------------------------------------
   TBS_TEST_A       F:\DISK1\ORATABLESPACE\ tbs_test_a_02.DBF