alter database open resetlogs或者 alter database open resetlogs upgrade報錯:ORA-00392
在rman restore 還原資料檔案和recover 恢復資料檔案之後,此時資料庫處於mounted狀態,需要open並resetlogs 。此時resetlogs相當於資料庫根據控制檔案的redo資訊,建立新的redo檔案。但是有時open resetlogs報錯。
解決步驟:
1:報錯檢視
2:檢視當前日誌組狀態
3:clear 日誌組
4:驗證是否報錯
5:日誌組合日誌檔案之間的關係
6:日誌管理(常用)
解決步驟:
報錯檢視
SQL> alter database open resetlogs upgrade;
alter database open resetlogs upgrade
*
ERROR at line 1:
ORA-00392: log 3 of thread 1 is being cleared, operation not allowed
ORA-00312: online log 3 thread 1: '/u01/oradata/orcl/redo03.log'
檢視當前日誌組狀態
SQL> select group#,bytes/1024/1024 'M',status from v$log;
GROUP# BYTES/1024/1024 'M' STATUS
---------- ----------------------------------------- ----------------
1 50M CLEARING
3 50M CLEARING_CURRENT
2 50M CLEARING
clear 日誌組
SQL> alter database clear logfile group 1;
Database altered.
SQL> alter database clear logfile group 2;
Database altered.
SQL> alter database clear logfile group 3;
Database altered.
SQL> select group#,bytes/1024/1024 'M',status from v$log;
GROUP# BYTES/1024/1024 'M' STATUS
---------- ----------------------------------------- ----------------
1 50M UNUSED
3 50M CURRENT
2 50M UNUSED
驗證是否報錯
alter database open resetlogs upgrade;
注意:
執行這條sql的日誌檔案的物理變化,那就是執行之前目錄中還沒有日誌檔案,執行之後,日誌檔案自動建立
日誌組合日誌檔案之間的關係
SQL> select GROUP#,STATUS,TYPE,MEMBER from v$logfile;
GROUP# STATUS TYPE MEMBER
------ ---------- ---------- ------------------------------
1 ONLINE /u01/oradata/orcl/redo01.log
2 ONLINE /u01/oradata/orcl/redo02.log
3 ONLINE /u01/oradata/orcl/redo03.log
此時每個group組中都有一個member成員
1:每個日誌組至少有一個成員,成員之間的關係是映象關係
2:每個資料庫中至少有兩個組來回switch切換
日誌管理(常用)
1:切換日誌:alter system switch logfile
2:新增一個日誌組
SQL> alter database add logfile group 4 '/u01/oradata/orcl/redo04.log' size 20m;
SQL> select GROUP#,STATUS,TYPE,MEMBER from v$logfile;
GROUP# STATUS TYPE MEMBER
------ ---------- ---------- ------------------------------
1 ONLINE /u01/oradata/orcl/redo01.log
2 ONLINE /u01/oradata/orcl/redo02.log
3 ONLINE /u01/oradata/orcl/redo03.log
4 ONLINE /u01/oradata/orcl/redo04.log
注意:如果沒有制定組號,資料庫會在建立時自動添加當前最大組號加1
3:新增一個成員
SQL> alter database add logfile member '/u01/oradata/orcl/redo04a.log' to group 4;
SQL> select GROUP#,STATUS,TYPE,MEMBER from v$logfile;
GROUP# STATUS TYPE MEMBER
------ ---------- ---------- ------------------------------
1 ONLINE /u01/oradata/orcl/redo01.log
2 ONLINE /u01/oradata/orcl/redo02.log
3 ONLINE /u01/oradata/orcl/redo03.log
4 ONLINE /u01/oradata/orcl/redo04.log
4 INVALID ONLINE /u01/oradata/orcl/redo04a.log
注意:
1)新增成員不指定大小,映象關係會自動設定相同大小
2)新增之後處於invalid非正常狀態,需要不停的切換日誌才能變成正常狀態
4:刪除一個成員
SQL> alter database drop logfile member '/u01/oradata/orcl/redo04.log';
注意:
1)CURRENT狀態不能刪除,先切換再刪除 alter system switch logfile;
2)ACTIVE有時候能刪,有時候不能刪,如果刪除報錯,只能等
5:刪除一個日誌組
SQL> alter database drop logfile group 3;
注意:
1)CURRENT狀態不能刪除,先切換再刪除 alter system switch logfile;
2)ACTIVE有時候能刪,有時候不能刪,如果刪除報錯,只能等
6:清楚報廢日誌
SQL> alter database clear logfile group 4;