ora-16038 ora-19809 ora-00312 解決過程

C:/>sqlplus / as sysdba
  SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 2
25 10:49:58 2010
  
Copyright (c) 1982, 2005, Oracle. All rights reserved.
  連接到
:
  
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
  
With the Partitioning, OLAP and Data Mining options

SQL> select * from scott.emp;
  select * from scott.emp   
*
  第 1 行出現錯誤
:
  ORA-01219: 數據庫未打開: 僅允許在固定表/視圖中查詢

SQL> startup database open;
  SP2-0714: 無效的 STARTUP 選項組合

SQL> startup open;
  ORA-01081: 無法啓動已在運行的 ORACLE - 請首先關閉它

SQL> startup nomount;
  ORA-01081: 無法啓動已在運行的 ORACLE - 請首先關閉它

SQL> shutdown immediate;
  ORA-01109: 數據庫未打開

  已經卸載數據庫。

  ORACLE 例程已經關閉。

SQL> startup nomount;
  ORACLE 例程已經啓動。

  
Total System Global Area 805306368 bytes
  
Fixed Size 1251532 bytes
  
Variable Size 427820852 bytes
  
Database Buffers 369098752 bytes
  
Redo Buffers 7135232 bytes
SQL> alter database mount;
  數據庫已更改。

SQL> alter database open;
  alter database open  第 1 行出現錯誤:
  ORA-16038:日誌 3 序列號 90 無法歸檔

  ORA-19809: 超出了恢復文件數的限制

  ORA-00312: 聯機日誌 3 線程
1:
  
'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINE LOG/O1_MF_3_5NFPBVRH_.LOG'
  ORA-00312: 聯機日誌 3 線程
1:
  
'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA /ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG'
  ORA-00312: 聯機日誌 3 線程
1:
  
'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINE LOG/O1_MF_3_REDO.LOG'

  
SQL> alter database clear unarchived logfile 'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINELOG/O1_MF_3_5NFPBVRH_.LOG';

  
alter database clear unarchived logfile 'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINELOG/O1_MF_3_5NFPBVRH_.LOG'
  
*
  第 1 行出現錯誤
:
  ORA-01514: 日誌說明中出現錯誤: 沒有此類日誌

  ORA-01517: 日誌成員
:
  
'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINE LOG/O1_MF_3_5NFPBVRH_.LOG'

  
SQL> alter database drop logfile member 'D:/ORACLE/PRODUCT/10.2.0/DB_1/ORADATA/ORCL/ONLINELOG/O1_MF_3_5NFPBVRH_.LOG';
  數據庫已更改。


  
SQL> alter database drop logfile member 'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA/ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG';
  alter database drop logfile member 'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA/ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG'  

       *
  第 1 行出現錯誤
:
  
ORA-00361: cannot remove last log member string for group string
  D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA/ ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG (? 3)


   ORA-00361: cannot remove last log member string for group string
  
Cause: An attempt has been made to remove the last member of a log file group.
   Action: If desired, delete the entire log, by using DROP LOGFILE.


SQL> alter database drop logfile 'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_ AREA/ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG';

  alter database drop logfile 'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA /ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG' 

    *
  第 1 行出現錯誤
:
  ORA-00350: 日誌 3 (線程 1) 中需要歸檔

  ORA-00312: 聯機日誌 3 線程
1:
  
'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA /ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG'

SQL> alter database drop logfile group 3;
   alter database drop logfile group 3

 第1 行出現錯誤:
  
ORA-00350: ?? 3 (?? orcl ???, ?? 1) ????
  
ORA-00312: ???? 3 ?? 1:
  
'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA/ORCL/ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG'
  刪不掉,提示第三組聯機日誌需要歸檔。

  d.歸檔聯機日誌

SQL> archive log start;
  已處理的語句

SQL> archive log next;
  ORA-16014: 日誌3 的序列號 90 未歸檔, 沒有可用的目的地 --說明已經歸檔的文件大小超過歸檔的最大設置。

  ORA-00312: 聯機日誌 2 線程
1: 'D:/ORACLE/PRODUCT/10.2.0/DB_1/FLASH_RECOVERY_AREA /ORCL/ ONLINELOG/O1_MF_3_5NFPBWZ3_.LOG'
SQL> show parameter db_recovery
  
NAME TYPE VALUE
  
------------------------------------ ----------- ------------------------------
  
db_recovery_file_dest string D:/oracle/product/10.2.0/flash_recovery_area
  db_recovery_file_dest_size big integer 2G

SQL> alter system set db_recovery_file_dest_size=3G scope=both;

系統已更改。

(1).檢查flash recovery area的使用情況:
SQL> select * from v$flash_recovery_area_usage;
  FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES

------------ ------------------ ------------------------- ---------------
  
CONTROLFILE .33 0 1
  
ONLINELOG 7.32 0 3
  
ARCHIVELOG 25.06 0 35
  
BACKUPPIECE 67.69 0 4
  
IMAGECOPY 0 0 0
  
FLASHBACKLOG 0 0 0
  已選擇6行。 .

 計算flash recovery area已經佔用的空間:

SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; SUM(PERCENT_SPACE_USED)*3/100
------------ ------------------ ------------------------- ---------------
  3.012

可以看到,這裏已經有3.012G使用了,這說明我們剛開始設置的db_recovery_file_dest_size=2G不足,導致online redo log無法歸檔,在這裏,我們通過設置db_recovery_file_dest_size參數,增大了flash recovery area來解決這個問題。(3).也可以在rman中通過刪除flash recovery area中不必要的備份來釋放flash recovery area空間來解決這個問題:

(1). delete obsolete;
  
(2). crosscheck backupset; delete expired backupset;

  這裏事先手工把歸檔的文件刪除一部分,然後用rman 用上面的 命令把flash recovery area 實際空間變小。問題就解決了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章