【Oracle】如何修改資料檔案和日誌檔案的路徑
在許多場景下,我們必須透過Oracle 內部命令來 rename 資料檔案或日誌檔案,來為資料檔案和日誌檔案重新定義一個新的物理名稱或新的位置,例如:
- 由於某種原因,我們想移動資料庫檔案到一個新的磁碟
- 我們想從備份還原一個資料檔案,但是它原本的磁碟已經滿了,只能將資料檔案恢復到新的磁碟上。
- 我們在作業系統層面移動或重新命名該資料檔案,導致 Oracle 找不到它。在啟動時候,會報錯 ORA-01157 和 ORA-01110 。如果資料庫已經啟動,我們嘗試正常關閉資料庫,則會得到 ORA-01116 和 ORA-01110
- 在同一臺機器上有多個資料庫,需要重新命名這些資料檔案,防止衝突和混淆
本文將會幫助你解決以下三個問題
1. 在資料庫開啟時,重新命名或移動資料檔案
2. 在資料庫關閉時,重新命名或移動資料檔案
3. 重新命名或移動日誌檔案(redolog )
注意,如果要重新命名或移動system 表空間資料檔案,必須關庫執行。因為不能將 system 表空間 offline 。
一、 在資料庫開啟時,重新命名或移動資料檔案
在資料庫開啟時,可以重新命名或移動資料檔案,但是,該表空間必須是隻讀的。這樣是為了防止使用者從表空間中進行insert 、 update 、 delete 操作。修改只讀表空間資料檔案的時間取決於資料檔案的大小以及將資料檔案複製到其他位置所需的時間。將表空間設定為只讀會凍結檔案頭,防止對檔案頭進行更新。由於該資料檔案處於只讀狀態,所以可以在資料庫 open 狀態時複製該資料檔案。
操作步驟如下:
1) 確定表空間有多少資料檔案
SQL> SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'TEST_TBS';
FILE_NAME STATUS
-------------------------------------------------- ---------
/u01/app/oracle/oradata/orcl/test01.dbf AVAILABLE
/u01/app/oracle/oradata/orcl/test02.dbf AVAILABLE
2) 確保所有資料檔案的狀態都是AVAILABLE
3) 確保表空間只讀
SQL> alter tablespace test_tbs read only;
4) 查詢表空間是否只讀
SQL> SELECT TABLESPACE_NAME, STATUS FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'TEST_TBS';
TABLESPACE_NAME STATUS
------------------------------ ---------
TEST_TBS READ ONLY
5) 使用copy 命令將資料檔案複製到新位置
$ cd /u01/app/oracle/oradata/orcl/
$ cp test01.dbf test02.dbf /u01/app/oracle/oradata/new/
6) 將資料檔案複製到新位置後,將表空間offline
SQL> alter tablespace test_tbs offline;
7) 重新命名資料檔案到新位置,會更新控制檔案裡面的資訊
SQL> alter database rename file
'/u01/app/oracle/oradata/ orcl /test01.dbf' to
'/u01/app/oracle/oradata/ new /test01.dbf';
SQL> alter database rename file '/u01/app/oracle/oradata/ orcl /test02.dbf' to '/u01/app/oracle/oradata/ new /test02.dbf';
同樣可以使用alter tablespace .... rename datafile 語法操作。
8) 將表空間online
SQL> alter tablespace test_tbs online;
9) 將表空間read write
SQL> alter tablespace test_tbs read write;
10) 驗證控制檔案是否更新
SQL> SELECT FILE_NAME, STATUS FROM DBA_DATA_FILES WHERE TABLESPACE_NAME = 'TEST_TBS';
FILE_NAME STATUS
-------------------------------------------------- ---------
/u01/app/oracle/oradata/new/test01.dbf AVAILABLE
/u01/app/oracle/oradata/new/test02.dbf AVAILABLE
11) 刪除舊路徑下的檔案即可
二、 在資料庫關閉時,移動或重新命名資料檔案
1) 如果資料庫時open, 需要關閉
SQL> shutdown immediate;
2) 複製資料檔案到新路徑
$ cd /u01/app/oracle/oradata/orcl/
$ cp test01.dbf test02.dbf /u01/app/oracle/oradata/new/
3) 開啟資料庫至mount
SQL> startup mount;
4) rename 資料檔案
SQL> alter database rename file
'/u01/app/oracle/oradata/ orcl /test01.dbf' to
'/u01/app/oracle/oradata/ new /test01.dbf';
SQL> alter database rename file
'/u01/app/oracle/oradata/ orcl /test02.dbf' to
'/u01/app/oracle/oradata/ new /test02.dbf';
5) 開始資料庫至open
SQL> alter database open;
6) 查詢資料檔案是否改變
SQL> SELECT * FROM V$DBFILE;
7) 刪除舊路徑下的資料檔案即可
三、 重新命名或移動日誌檔案
1) 查詢當前日誌檔案路徑
SQL> select group#,member from v$logfile;
GROUP# MEMBER
---------- ----------------------------------------
3 /u01/app/oracle/oradata/orcl/redo03.log
2 /u01/app/oracle/oradata/orcl/redo02.log
1 /u01/app/oracle/oradata/orcl/redo01.log
2) 關閉資料庫
SQL> shutdown immediate;
3) 複製日誌檔案到新路徑
$ cp /u01/app/oracle/oradata/orcl/redo03.log /u01/app/oracle/oradata/new/
4) 開啟資料庫至mount
SQL> startup mount;
5) rename 該日誌檔案
SQL> alter database rename file
'/u01/app/oracle/oradata/orcl/redo03.log' to
'/u01/app/oracle/oradata/new/redo03.log';
6) 開啟資料庫
SQL> alter database open;
7) 再次檢視日誌檔案資訊
SQL> select group#,member from v$logfile;
GROUP# MEMBER
---------- -----------------------------------------
3 /u01/app/oracle/oradata/new/redo03.log
2 /u01/app/oracle/oradata/orcl/redo02.log
1 /u01/app/oracle/oradata/orcl/redo01.log
8) 刪除舊路徑下的日誌檔案即可
---- end ----
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529886/viewspace-2755803/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 資料庫lsnrctl監聽的日誌路徑和trace檔案Oracle資料庫
- 修改Oracle資料檔名及資料檔案存放路徑Oracle
- oracle11g修改資料檔案路徑Oracle
- oracle 修改資料檔案位置(路徑)(移動)Oracle
- oracle 修改資料檔案路徑(四種方式)Oracle
- 12c日誌檔案路徑
- oracle11g修改控制檔案路徑Oracle
- win10 onenote如何修改檔案路徑_win10 onenote怎麼修改檔案路徑Win10
- 分析Oracle資料庫日誌檔案(三)EPOracle資料庫
- 分析Oracle資料庫日誌檔案(二)DOOracle資料庫
- 分析Oracle資料庫日誌檔案(一)HBOracle資料庫
- 【Oracle】歸檔日誌管理-設定歸檔日誌路徑以及歸檔日誌冗餘Oracle
- CentOS修改Mariadb資料庫檔案儲存路徑CentOS資料庫
- Oracle資料檔案和臨時檔案的管理Oracle
- 更改資料檔案路徑的方法
- 【LOG】Oracle資料庫清理日誌、跟蹤檔案利器Oracle資料庫
- 在Oracle中,如何定時刪除歸檔日誌檔案?Oracle
- PbootCMS後臺檔案修改路徑位置boot
- gcc g++ 新增標頭檔案路徑和庫檔案路徑的方法GC
- Java - 自動配置log4j的日誌檔案路徑Java
- oracle升級後資料檔案路徑變為大寫Oracle
- 檔案路徑問題( ./ 和 ../ 和 @/ )
- [20220826]顯示alert日誌檔案全路徑.txt
- 如何將日誌檔案和二進位制檔案快速匯入HDFS?
- Oracle使用備份檔案集恢復歸檔日誌Oracle
- Linux檔案的路徑定位-相對路徑和絕對路徑Linux
- Python科研武器庫 - 檔案/路徑操作 - 判斷檔案或資料夾Python
- 在Linux中,有一堆日誌檔案,如何刪除7天前的日誌檔案?Linux
- Oracle 資料檔案回收Oracle
- MySQL 修改InnoDB重做日誌檔案的數量或大小MySql
- java專案日誌配置檔案Java
- linux檔案系統和日誌分析Linux
- Linux 日誌檔案系統如何工作Linux
- SpringBoot指定日誌檔案和日誌Profile功能Spring Boot
- html如何根據檔案路徑顯示檔案內容(pdf)HTML
- mysql學習8:第四章:資料庫檔案--日誌檔案MySql資料庫
- SpringBoot 中獲取專案的路徑和檔案流Spring Boot
- 桌面檔案在c盤哪個資料夾 c盤桌面檔案路徑