將 Oracle 資料庫從 NOARCHIVELOG(非歸檔模式)切換至 ARCHIVELOG(歸檔模式)是啟用完整備份恢復能力的關鍵步驟。本文記錄實測過程中遇到的常見錯誤及解決方案。
SQL> ALTER DATABASE ARCHIVELOG; ALTER DATABASE ARCHIVELOG * ERROR at line 1: ORA-01126: database must be mounted in this instance and not open in any instance
原因:資料庫必須處於 MOUNT 狀態(而非 OPEN),且不能有其他實例開啟該資料庫(RAC 環境需特別注意)。
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE OPEN;
SQL> ARCHIVE LOG LIST; Database log mode Archive Mode Automatic archival Enabled Archive destination /u01/app/oracle/flash_recovery_area Oldest online log sequence 1 Next log sequence to archive 2 Current log sequence 2
預設歸檔目標 DB_RECOVERY_FILE_DEST(快速恢復區)與備份檔案混雜,建議獨立規劃:
-- 1. 建立獨立目錄 $ mkdir -p /u01/app/oracle/arch -- 2. 設定歸檔目的地(需重啟實例生效) SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/arch' SCOPE=SPFILE; SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=ENABLE SCOPE=BOTH; -- 3. 重啟資料庫 SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP;
LOG_ARCHIVE_DEST 指定的路徑必須預先建立,Oracle 不會自動建立。oracle:oinstall,權限 750。MOUNT 狀態,並使用共享存儲或集群檔案系統。遷移歸檔模式的關鍵在於 MOUNT 狀態下執行 ALTER DATABASE ARCHIVELOG,並規劃獨立、可擴展的歸檔日誌存儲路徑。完成後務必驗證 ARCHIVE LOG LIST 並測試備份恢復流程。