溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據庫重命名和遷移日志文件、數據文件的方法是什么

發(fā)布時間:2021-11-05 15:56:10 來源:億速云 閱讀:182 作者:iii 欄目:關系型數據庫

本篇內容介紹了“數據庫重命名和遷移日志文件、數據文件的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

目的:在某些情況下,數據文件或者日志文件必須被重新命名或遷移到新的位置上,然而想要讓這些文件仍然有效,那么就需要為這些文件定義一個物理的名字或者物理位置,例如,在以下情況發(fā)生時,就需要重新命名數據文件或者日志文件:

1.出于性能或者維護原因,需要將一個數據庫文件移動到一個不同的磁盤上

2.從備份中恢復一個數據文件,但是這個以前存放數據文件的磁盤已經崩潰,那么就需要將這個數據文件重新分配到一個新的磁盤上

3.在操作系統(tǒng)級別,已經移動或者重命名一個數據文件,但是在數據庫層即數據庫內卻沒有進行重命名,在數據庫啟動的過程中得到 ORA-01157 和 ORA-01110 報錯信息。如果數據庫處于打開狀態(tài)下,在操作系統(tǒng)級別重命名了數據文件或者移動了數據文件到其他的位置,當通過normal 或者 immediate 方式關閉數據庫的時候,會得到 ORA-01116 和 ORA-01110 報錯;

以下將通過三個方面來對本主題進行相關的討論:

I    數據庫打開的狀態(tài)下,重命名或者移動數據文件

II  數據庫關閉的狀態(tài)下,重命名或者移動數據文件

III  重命名或者移動日志文件

【注意】

如果要重命名或者移動的數據文件是 SYSTEM 表空間中的文件,那么,必須用第 II 種方法來達到最終的目的即“數據庫關閉的狀態(tài)下,重命名或者移動數據文件”,因為在數據庫打開的狀態(tài)下,不能夠讓 SYSTEM 表空間出于 OFFLINE 即離線的狀態(tài);

下面分別來對不同的情景進行說明:

I    數據庫打開的狀態(tài)下,重命名或者移動數據文件

在數據庫出于打開的狀態(tài)下,可以對數據文件進行重新命名或者移動,但是,表空間必須被置于READ-ONLY狀態(tài)。在 READ-ONLY 狀態(tài)下,用戶可以對這個表空間進行SELECT操作,但不能對表空間進行INSERTS UPDATES 和 DELETES 操作。表空間READ-ONLY狀態(tài)需要的總時間,取決于數據文件的大小和將一個數據文件從一個位置拷貝到一個新位置的時間消耗

將表空間置于READ-ONLY狀態(tài),凍結文件頭,從而阻止數據文件頭被更新。只有在數據文件處于 READ-ONLY狀態(tài)下,才有可能在數據庫出于打開的狀態(tài)下,對文件進行拷貝。

通過以下的步驟來達到重命名或者移動數據文件的目的,本例中,以 USERS 表空間為數據文件所在的表空間:

1. 查看 USERS表空間中有多少數據文件

SQL>select file_name, status from dba_data_files where tablespace_name = 'USERS';

FILE_NAME                     STATUS

------------------------------------------------------

/u01/oradata/test/users01.dbf       AVAILABLE

2. 確保,在返回的查詢結果中,所有數據文件的狀態(tài)即STATUS的值都是 AVAILABLE

3. 將 USERS表空間置為 READ ONLY狀態(tài)

altertablespace users read only;

4. 確保 USERS表空間在數據字典中已經被置于 READ ONLY狀態(tài)

SQL>select tablespace_name, status from dba_tablespaces where tablespace_name ='USERS';

TABLESPACE_NAME        STATUS

---------------------------------------

USERS                 READ ONLY

5. 使用操作系統(tǒng)命令,將數據文件拷貝到一個新的位置。當數據文件被拷貝到一個新的位置之后,需要做的也是最重要的就是要比較兩個數據文件的大小是否一致,因為可能在復制的過程中出現(xiàn)數據丟失的情況

ORACLE> cp /u01/oradata/test/users01.dbf /jiachunyun/test/users01.dbf

注意哦:同樣,可以利用上面的方法,進行數據文件的重命名,也改變數據文件的位置。(我只改變了位置/jiachunyun/test)

6. 當數據文件已經拷貝到新的位置之后,將USERS表空間置于 OFFLINE狀態(tài)

altertablespace users offline;

7. 當表空間被置于 OFFLINE狀態(tài)時,需要做的是在數據庫層重新命名數據文件到新的位置上,這個操作會更新控制文件中的數據文件的位置信息

alter database rename file '/u01/oradata/test/users01.dbf' to '/jiachunyun/test/users01.dbf';

8. 當確認所有的 rename操作完成之后,將 USERS表空間上線即 ONLINE

alter tablespace users online;

9. 當將表空間重新置為 ONLINE狀態(tài),需要將表空間重新置為 READ WRITE即讀寫狀態(tài)

alter tablespace users read write;

10. 檢查表空間的狀態(tài)是否為READ WRITE狀態(tài)

SQL>select tablespace_name, status from dba_tablespaces where tablespace_name ='USERS';

TABLESPACE_NAME        STATUS

---------------------------------------

USERS                 ONLINE

11. 查看修改后的數據文件的位置

SQL>select file_name, status from dba_data_files where tablespace_name = 'USERS';

FILE_NAME                     STATUS

------------------------------------------------------

/jiachunyun/test/users01.dbf             AVAILABLE

13. 在操作系統(tǒng)級別,在原來的舊的目錄中,將舊的數據文件刪除

ORACLE> rm -rf /u01/oradata/test/users01.dbf

II   數據庫關閉的狀態(tài)下,重命名或者移動數據文件

1. 查看 USERS表空間中,數據文件的位置

SQL>select file_name,tablespace_name,file_id from dba_data_files wheretablespace_name = 'USERS';

FILE_NAME                     TABLESPACE_NAME         FILE_ID

--------------------------------------------------------------------------- -------

/u01/oradata/users01.dbf             USERS                     4

2. 關閉數據庫

shutdown immediate

3. 在操作系統(tǒng)級別將數據文件重命名或者移動到新的位置上,或者移動新的位置上并且重命名

ORACLE> cp /u01/oradata/test/users01.dbf /jiachunyun/test/users01.dbf     等

4. 啟動數據庫到 mount狀態(tài)

startup mount;

【說明】:這個操作會讀取控制文件,但是不會將數據文件 mount

5. 在數據庫內重新命名數據文件

alter database rename file '/u01/oradata/users01.dbf' to '/jiachunyun/test/users01.dbf';

alter database rename file '/u01/oradata/sysaux01.dbf' to '/jiachunyun/test/sysaux01.dbf';

alter database rename file '/u01/oradata/undotbs01.dbf' to '/jiachunyun/test/undotbs01.dbf';

alter database rename file '/u01/oradata/users01.dbf' to '/jiachunyun/test/users01.dbf';

6. 打開數據庫

alter database open;

7. 查詢 v$dbfile視圖,來確認修改已經成功

SQL>select name from v$datafile ;

NAME
------------------------------------------------

/jiachunyun/test/users01.dbf

/jiachunyun/test/sysaux01.dbf

/jiachunyun/test/undotbs01.dbf

/jiachunyun/test/users01.dbf

/jiachunyun/test/undotb1.dbf

8. 在操作系統(tǒng)級別,將舊的數據文件從舊的目錄位置中刪除

ORACLE>rm -rf /u01/oradata/users01.dbf          等

數據庫關閉的狀態(tài)下,重命名或者移動控制文件 【注意】最好分3個不同的磁盤 ,以便壞了一塊磁盤

1. 查看 USERS表空間中,控制文件的位置

SQL>select name from v$controlfile;

NAME                   

--------------------------------------------------------------------------- -------

/u01/oradata/control01.ctl

/u01/oradata/control02.ctl     

2 改變第二個控制文件路徑,并且告訴spfile,(文件有幾個寫幾個,02的原/u01/oradata/test,新/jiachunyun/test)

SQL> alter system set control_files='/u01/oradata/test/control01.ctl','/jiachunyun/test/control02.ctl' scope=spfile;

 

2. 關閉數據庫

shutdown immediate

3.在操作系統(tǒng)級別將控制文件重命名或者移動到新的位置上,或者移動新的位置上并且重命名

ORACLE> cp /u01/oradata/test/control01.ctl /jiachunyun/test/control02.ctl             --02路徑一定要對應上面的alter路徑

4. 啟動數據庫,并驗證

SQL>startup

SQL> select name from v$controlfile;

5.添加第三條控制文件03

SQL>alter system set control_file='/u01/oradata/test/control01.ctl','/jiachunyun/test/control02.ctl','/u01/oradata/test/control03.ctl' scope=spfile;

6. 關閉數據庫

shutdown immediate

7.在操作系統(tǒng)級別將控制文件重命名或者移動到新的位置上,

ORACLE> cp /u01/oradata/test/control01.ctl /jiachunyun/test/control03.ctl       

8. 啟動數據庫,并驗證

SQL>startup

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u01/oradata/test/control01.ctl
/jiachunyun/test/control02.ctl
/u01/oradata/test/control03.ctl

III  重命名或者移動日志文件

1. 關閉數據庫

2. 在操作系統(tǒng)級別,將日志文件重命名或者移動到新的位置上,或者移動新的位置上并且重命名

ORACLE> cp /u01/oradata/test/redo01.log /jiachunyun/test/redo01.log     等

3. 將數據庫啟動到 mount狀態(tài)

startup mount

4. 在數據庫級別,重命名日志文件

alter database rename file '/u01/oradata/test/redo01.log' to'/jiachunyun/test/redo01.log';     等

5. 打開數據庫

alter database open;

6. 在操作系統(tǒng)級別,將舊的數據文件從舊的目錄位置中刪除

ORACLE> rm -rf /u01/oradata/test/redo01.log

7.驗證

ORACLE>select mane from v$logfile;

“數據庫重命名和遷移日志文件、數據文件的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI