請參考:http://blog.csdn.net/zwk626542417/article/details/39667999sql
今天跟往常同樣,登錄PL/SQL,確登錄失敗,出現一個錯誤「ORA-01034」和「ORA-27101」如圖:數據庫
而後就就經過命令提示符去登錄Oracle,去查看怎麼回事,而後問題進一步出現,錯誤「ORA-03113:通訊通道的文件結尾 進程 ID:6320 回話 ID :191 序列號:3」。oracle
問題根源
Oracle出現錯誤,因而去錯誤日誌裏去找問題根源:在 e:\app\kang\diag\rdbms\oracle\oracle\trace\文件夾下找到oracle_ora_6320.trc文件,打開顯示錯誤日誌:app
- Trace filee:\app\kang\diag\rdbms\oracle\oracle\trace\oracle_ora_6320.trc
- Oracle Database 11gEnterprise Edition Release 11.2.0.1.0 - 64bit Production
- With thePartitioning, OLAP, Data Mining and Real Application Testing options
- Windows NT VersionV6.1 Service Pack 1
- CPU : 4 - type 8664, 2 PhysicalCores
- Process Affinity : 0x0x0000000000000000
- Memory (Avail/Total):Ph:2805M/6087M, Ph+PgF:6761M/12173M
- Instance name: oracle
- Redo thread mountedby this instance: 1
- Oracle processnumber: 19
- Windows thread id:6320, image: ORACLE.EXE (SHAD)
-
-
- *** 2014-08-1608:18:55.461
- *** SESSIONID:(191.3) 2014-08-16 08:18:55.461
- *** CLIENT ID:()2014-08-16 08:18:55.461
- *** SERVICE NAME:()2014-08-16 08:18:55.461
- *** MODULENAME:(sqlplus.exe) 2014-08-16 08:18:55.461
- *** ACTION NAME:()2014-08-16 08:18:55.461
-
- ORA-19815: 警告:db_recovery_file_dest_size 字節 (共 4102029312 字節) 已使用 100.00%, 尚有 0 字節可用。
- ************************************************************************
- You have followingchoices to free up space from recovery area:
- 1. Consider changingRMAN RETENTION POLICY. If you are using Data Guard,
- then consider changing RMAN ARCHIVELOGDELETION POLICY.
- 2. Back up files totertiary device such as tape using RMAN
- BACKUP RECOVERY AREA command.
- 3. Add disk space andincrease db_recovery_file_dest_size parameter to
- reflect the new space.
- 4. Delete unnecessaryfiles using RMAN DELETE command. If an operating
- system command was used to delete files,then use RMAN CROSSCHECK and
- DELETE EXPIRED commands.
- ************************************************************************
- ORA-19809:超出了恢復文件數的限制
- ORA-19804: 沒法回收33961984 字節磁盤空間 (從 4102029312 限制中)
- *** 2014-08-1608:18:55.502 4132 krsh.c
- ARCH: Error 19809Creating archive log file to'E:\APP\KANG\FLASH_RECOVERY_AREA\ORACLE\ARCHIVELOG\2014_08_16\O1_MF_1_159_%U_.ARC'
- *** 2014-08-1608:18:55.502 2747 krsi.c
- krsi_dst_fail: dest:1err:19809 force:0 blast:1
- DDE: Problem Key 'ORA312' was flood controlled (0x1) (no incident)
- ORA-00312: 聯機日誌 3 線程1: 'E:\APP\KANG\ORADATA\ORACLE\REDO03.LOG'
- ORA-16038: 日誌 3sequence# 159 沒法歸檔
- ORA-19809:超出了恢復文件數的限制
- ORA-00312: 聯機日誌 3 線程1: 'E:\APP\KANG\ORADATA\ORACLE\REDO03.LOG'
-
- *** 2014-08-1608:18:55.565
- USER (ospid: 6320):terminating the instance due to error 16038
從這裏咱們發現了問題的根源:「ide
ORA-19815: 警告: db_recovery_file_dest_size 字節 (共 4102029312 字節) 已使用100.00%, 尚有 0 字節可用。」 是db_recovery_file_dest_size也叫歸檔日誌空間不足致使的,既然找到問題的根源,那解決起來也就容易了。工具
解決途徑
空間小,那擺在咱們面前辦法就是,一個是將空間設置大點,另外一個就是將多餘的文件刪除掉便可,那麼咱們就將這兩個辦法都使用一下。this
經過命令窗口:spa
--------設置歸檔日誌空間的大小操作系統
- sqlplus / as sysdba
- shutdown abort
- startup mount
- select * from v$recovery_file_dest;
- db_recovery_file_dest_size=10737418240;
- Exit
--------刪除歸檔日誌.net
- rmantarget /
- RMAN>crosscheckarchivelog all;
- RMAN>deletenoprompt archivelog until time "sysdate -3";
到這裏就完全ok了。接下來從新打開數據庫:正常使用。
在刪除歸檔文件中有一點要注意,經過命令窗口顯示顯示歸檔文件都在E:\app\kang\flash_recovery_area\oracle\ARCHIVELOG 下,可是咱們不能手工在操做系統中直接把這些文件刪除掉,這是由於在controlfile中記錄着每個archivelog的相關信息,當咱們在OS中刪除這些文件後,咱們的controlfile中仍然記錄着這些archivelog的信息,所以在Oracle的OEM管理器中還會存在這些日誌。由於當咱們手工清除archive目錄下的文件後,這些記錄並無被咱們從controlfile中清除掉,也就是oracle並不知道這些文件已經不存在了。因此仍是要經過命令窗口去執行刪除這些文件的命令。
後記
歸檔日誌實際上是爲了方便咱們在恢復數據庫時使用的,可是有時候這些歸檔日誌有時確實會給咱們帶來一點點的小麻煩,因此這些歸檔日誌仍是須要咱們去注意的。