本篇內(nèi)容介紹了“數(shù)據(jù)庫重命名和遷移日志文件、數(shù)據(jù)文件的方法是什么”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
渾南ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
目的:在某些情況下,數(shù)據(jù)文件或者日志文件必須被重新命名或遷移到新的位置上,然而想要讓這些文件仍然有效,那么就需要為這些文件定義一個物理的名字或者物理位置,例如,在以下情況發(fā)生時,就需要重新命名數(shù)據(jù)文件或者日志文件:
1.出于性能或者維護(hù)原因,需要將一個數(shù)據(jù)庫文件移動到一個不同的磁盤上
2.從備份中恢復(fù)一個數(shù)據(jù)文件,但是這個以前存放數(shù)據(jù)文件的磁盤已經(jīng)崩潰,那么就需要將這個數(shù)據(jù)文件重新分配到一個新的磁盤上
3.在操作系統(tǒng)級別,已經(jīng)移動或者重命名一個數(shù)據(jù)文件,但是在數(shù)據(jù)庫層即數(shù)據(jù)庫內(nèi)卻沒有進(jìn)行重命名,在數(shù)據(jù)庫啟動的過程中得到 ORA-01157 和 ORA-01110 報(bào)錯信息。如果數(shù)據(jù)庫處于打開狀態(tài)下,在操作系統(tǒng)級別重命名了數(shù)據(jù)文件或者移動了數(shù)據(jù)文件到其他的位置,當(dāng)通過normal 或者 immediate 方式關(guān)閉數(shù)據(jù)庫的時候,會得到 ORA-01116 和 ORA-01110 報(bào)錯;
以下將通過三個方面來對本主題進(jìn)行相關(guān)的討論:
I 數(shù)據(jù)庫打開的狀態(tài)下,重命名或者移動數(shù)據(jù)文件
II 數(shù)據(jù)庫關(guān)閉的狀態(tài)下,重命名或者移動數(shù)據(jù)文件
III 重命名或者移動日志文件
【注意】
如果要重命名或者移動的數(shù)據(jù)文件是 SYSTEM 表空間中的文件,那么,必須用第 II 種方法來達(dá)到最終的目的即“數(shù)據(jù)庫關(guān)閉的狀態(tài)下,重命名或者移動數(shù)據(jù)文件”,因?yàn)樵跀?shù)據(jù)庫打開的狀態(tài)下,不能夠讓 SYSTEM 表空間出于 OFFLINE 即離線的狀態(tài);
下面分別來對不同的情景進(jìn)行說明:
I 數(shù)據(jù)庫打開的狀態(tài)下,重命名或者移動數(shù)據(jù)文件
在數(shù)據(jù)庫出于打開的狀態(tài)下,可以對數(shù)據(jù)文件進(jìn)行重新命名或者移動,但是,表空間必須被置于READ-ONLY狀態(tài)。在 READ-ONLY 狀態(tài)下,用戶可以對這個表空間進(jìn)行SELECT操作,但不能對表空間進(jìn)行INSERTS UPDATES 和 DELETES 操作。表空間READ-ONLY狀態(tài)需要的總時間,取決于數(shù)據(jù)文件的大小和將一個數(shù)據(jù)文件從一個位置拷貝到一個新位置的時間消耗
將表空間置于READ-ONLY狀態(tài),凍結(jié)文件頭,從而阻止數(shù)據(jù)文件頭被更新。只有在數(shù)據(jù)文件處于 READ-ONLY狀態(tài)下,才有可能在數(shù)據(jù)庫出于打開的狀態(tài)下,對文件進(jìn)行拷貝。
通過以下的步驟來達(dá)到重命名或者移動數(shù)據(jù)文件的目的,本例中,以 USERS 表空間為數(shù)據(jù)文件所在的表空間:
1. 查看 USERS表空間中有多少數(shù)據(jù)文件
SQL>select file_name, status from dba_data_files where tablespace_name = 'USERS';
FILE_NAME STATUS
------------------------------------------------------
/u01/oradata/test/users01.dbf AVAILABLE
2. 確保,在返回的查詢結(jié)果中,所有數(shù)據(jù)文件的狀態(tài)即STATUS的值都是 AVAILABLE
3. 將 USERS表空間置為 READ ONLY狀態(tài)
altertablespace users read only;
4. 確保 USERS表空間在數(shù)據(jù)字典中已經(jīng)被置于 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)命令,將數(shù)據(jù)文件拷貝到一個新的位置。當(dāng)數(shù)據(jù)文件被拷貝到一個新的位置之后,需要做的也是最重要的就是要比較兩個數(shù)據(jù)文件的大小是否一致,因?yàn)榭赡茉趶?fù)制的過程中出現(xiàn)數(shù)據(jù)丟失的情況
ORACLE> cp /u01/oradata/test/users01.dbf /jiachunyun/test/users01.dbf
注意哦:同樣,可以利用上面的方法,進(jìn)行數(shù)據(jù)文件的重命名,也改變數(shù)據(jù)文件的位置。(我只改變了位置/jiachunyun/test)
6. 當(dāng)數(shù)據(jù)文件已經(jīng)拷貝到新的位置之后,將USERS表空間置于 OFFLINE狀態(tài)
altertablespace users offline;
7. 當(dāng)表空間被置于 OFFLINE狀態(tài)時,需要做的是在數(shù)據(jù)庫層重新命名數(shù)據(jù)文件到新的位置上,這個操作會更新控制文件中的數(shù)據(jù)文件的位置信息
alter database rename file '/u01/oradata/test/users01.dbf' to '/jiachunyun/test/users01.dbf';
8. 當(dāng)確認(rèn)所有的 rename操作完成之后,將 USERS表空間上線即 ONLINE
alter tablespace users online;
9. 當(dāng)將表空間重新置為 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. 查看修改后的數(shù)據(jù)文件的位置
SQL>select file_name, status from dba_data_files where tablespace_name = 'USERS';
FILE_NAME STATUS
------------------------------------------------------
/jiachunyun/test/users01.dbf AVAILABLE
13. 在操作系統(tǒng)級別,在原來的舊的目錄中,將舊的數(shù)據(jù)文件刪除
ORACLE> rm -rf /u01/oradata/test/users01.dbf
II 數(shù)據(jù)庫關(guān)閉的狀態(tài)下,重命名或者移動數(shù)據(jù)文件
1. 查看 USERS表空間中,數(shù)據(jù)文件的位置
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. 關(guān)閉數(shù)據(jù)庫
shutdown immediate
3. 在操作系統(tǒng)級別將數(shù)據(jù)文件重命名或者移動到新的位置上,或者移動新的位置上并且重命名
ORACLE> cp /u01/oradata/test/users01.dbf /jiachunyun/test/users01.dbf 等
4. 啟動數(shù)據(jù)庫到 mount狀態(tài)
startup mount;
【說明】:這個操作會讀取控制文件,但是不會將數(shù)據(jù)文件 mount
5. 在數(shù)據(jù)庫內(nèi)重新命名數(shù)據(jù)文件
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. 打開數(shù)據(jù)庫
alter database open;
7. 查詢 v$dbfile視圖,來確認(rèn)修改已經(jīng)成功
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)級別,將舊的數(shù)據(jù)文件從舊的目錄位置中刪除
ORACLE>rm -rf /u01/oradata/users01.dbf 等
數(shù)據(jù)庫關(guān)閉的狀態(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. 關(guān)閉數(shù)據(jù)庫
shutdown immediate
3.在操作系統(tǒng)級別將控制文件重命名或者移動到新的位置上,或者移動新的位置上并且重命名
ORACLE> cp /u01/oradata/test/control01.ctl /jiachunyun/test/control02.ctl --02路徑一定要對應(yīng)上面的alter路徑
4. 啟動數(shù)據(jù)庫,并驗(yàn)證
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. 關(guān)閉數(shù)據(jù)庫
shutdown immediate
7.在操作系統(tǒng)級別將控制文件重命名或者移動到新的位置上,
ORACLE> cp /u01/oradata/test/control01.ctl /jiachunyun/test/control03.ctl
8. 啟動數(shù)據(jù)庫,并驗(yàn)證
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. 關(guān)閉數(shù)據(jù)庫
2. 在操作系統(tǒng)級別,將日志文件重命名或者移動到新的位置上,或者移動新的位置上并且重命名
ORACLE> cp /u01/oradata/test/redo01.log /jiachunyun/test/redo01.log 等
3. 將數(shù)據(jù)庫啟動到 mount狀態(tài)
startup mount
4. 在數(shù)據(jù)庫級別,重命名日志文件
alter database rename file '/u01/oradata/test/redo01.log' to'/jiachunyun/test/redo01.log'; 等
5. 打開數(shù)據(jù)庫
alter database open;
6. 在操作系統(tǒng)級別,將舊的數(shù)據(jù)文件從舊的目錄位置中刪除
ORACLE> rm -rf /u01/oradata/test/redo01.log
7.驗(yàn)證
ORACLE>select mane from v$logfile;
“數(shù)據(jù)庫重命名和遷移日志文件、數(shù)據(jù)文件的方法是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!