Oracle启动报错ORA-03113解决

环境:RHEL6.4 + Oracle 11.2.0.4

步骤摘要:
1.启动报错ORA-03113
2.查看alert日志查找原因
3.根据实际情况采取合理的措施,这里我们先增加闪回区大小,把库启动起来
4.制定对应的归档日志删除策略

1.启动报错ORA-03113

$ sqlplus / as sysdba



SQL*Plus: Release 11.2.0.4.0 Production on 星期六 2月 28 13:56:44 2015



Copyright (c) 1982, 2013, Oracle.  All rights reserved.



Connected to an idle instance.



SQL> startup mount

ORACLE instance started.



Total System Global Area 3206836224 bytes

Fixed Size                  2257520 bytes

Variable Size            2365590928 bytes

Database Buffers          822083584 bytes

Redo Buffers               16904192 bytes

Database mounted.

SQL> alter database open; 

alter database open

*

ERROR at line 1:

ORA-03113: 通信通道的文件结尾

进程 ID: 13501

会话 ID: 853 序列号: 5





SQL> 

2.查看alert日志查找原因

Sat Feb 28 13:56:52 2015

Starting ORACLE instance (normal)

LICENSE_MAX_SESSION = 0

LICENSE_SESSIONS_WARNING = 0

Initial number of CPU is 8

CELL communication is configured to use 0 interface(s):

CELL IP affinity details:

    NUMA status: non-NUMA system

    cellaffinity.ora status: N/A

CELL communication will use 1 IP group(s):

    Grp 0: 

Picked latch-free SCN scheme 3

Using LOG_ARCHIVE_DEST_1 parameter default value as USE_DB_RECOVERY_FILE_DEST

Autotune of undo retention is turned on. 

IMODE=BR

ILAT =249

LICENSE_MAX_USERS = 0

SYS auditing is disabled

Starting up:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options.

ORACLE_HOME = /opt/app/oracle/product/11.2.0.4/dbhome_1

System name:    Linux

Node name:      JJFAB01

Release:        2.6.32-358.el6.x86_64

Version:        #1 SMP Tue Jan 29 11:47:41 EST 2013

Machine:        x86_64

VM name:        Xen Version: 4.1 (PVM)

Using parameter settings in server-side spfile /opt/app/oracle/product/11.2.0.4/dbhome_1/dbs/spfileJJFAB.ora

System parameters with non-default values:

  processes                = 1500

  sessions                 = 2272

  memory_target            = 3G

  control_files            = "/opt/oradata/gxwj/control01.ctl"

  control_files            = "/opt/app/oracle/fast_recovery_area/gxwj/control02.ctl"

  db_block_size            = 8192

  compatible               = "11.2.0.0.0"

  db_recovery_file_dest    = "/opt/app/oracle/fast_recovery_area"

  db_recovery_file_dest_size= 4122M

  undo_tablespace          = "UNDOTBS1"

  remote_login_passwordfile= "EXCLUSIVE"

  db_domain                = ""

  dispatchers              = "(PROTOCOL=TCP) (SERVICE=gxwjXDB)"

  audit_file_dest          = "/opt/app/oracle/admin/gxwj/adump"

  audit_trail              = "DB"

  db_name                  = "JJFAB"

  open_cursors             = 300

  diagnostic_dest          = "/opt/app/oracle"

Sat Feb 28 13:56:54 2015

PMON started with pid=2, OS id=13461 

Sat Feb 28 13:56:54 2015

PSP0 started with pid=3, OS id=13463 

Sat Feb 28 13:56:55 2015

VKTM started with pid=4, OS id=13465 at elevated priority

VKTM running at (1)millisec precision with DBRM quantum (100)ms

Sat Feb 28 13:56:55 2015

GEN0 started with pid=5, OS id=13469 

Sat Feb 28 13:56:55 2015

DIAG started with pid=6, OS id=13471 

Sat Feb 28 13:56:55 2015

DBRM started with pid=7, OS id=13473 

Sat Feb 28 13:56:55 2015

DIA0 started with pid=8, OS id=13475 

Sat Feb 28 13:56:55 2015

MMAN started with pid=9, OS id=13477 

Sat Feb 28 13:56:55 2015

DBW0 started with pid=10, OS id=13479 

Sat Feb 28 13:56:55 2015

LGWR started with pid=11, OS id=13481 

Sat Feb 28 13:56:55 2015

CKPT started with pid=12, OS id=13483 

Sat Feb 28 13:56:55 2015

SMON started with pid=13, OS id=13485 

Sat Feb 28 13:56:55 2015

RECO started with pid=14, OS id=13487 

Sat Feb 28 13:56:55 2015

MMON started with pid=15, OS id=13489 

starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...

Sat Feb 28 13:56:55 2015

MMNL started with pid=16, OS id=13491 

starting up 1 shared server(s) ...

ORACLE_BASE from environment = /opt/app/oracle

Sat Feb 28 13:56:56 2015

ALTER DATABASE   MOUNT

Successful mount of redo thread 1, with mount id 3498004520

Database mounted in Exclusive Mode

Lost write protection disabled

Completed: ALTER DATABASE   MOUNT

Sat Feb 28 13:57:48 2015

alter database open

Sat Feb 28 13:57:48 2015

LGWR: STARTING ARCH PROCESSES

Sat Feb 28 13:57:48 2015

ARC0 started with pid=20, OS id=13553 

ARC0: Archival started

LGWR: STARTING ARCH PROCESSES COMPLETE

ARC0: STARTING ARCH PROCESSES

Sat Feb 28 13:57:49 2015

ARC1 started with pid=21, OS id=13555 

Sat Feb 28 13:57:49 2015

ARC2 started with pid=22, OS id=13557 

Errors in file /opt/app/oracle/diag/rdbms/jjfab/JJFAB/trace/JJFAB_ora_13501.trc:

ORA-19815: 警告: db_recovery_file_dest_size 字节 (共 4322230272 字节) 已使用 100.00%, 尚有 0 字节可用。

************************************************************************

You have following choices to free up space from recovery area:

1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,

   then consider changing RMAN ARCHIVELOG DELETION POLICY.

2. Back up files to tertiary device such as tape using RMAN

   BACKUP RECOVERY AREA command.

3. Add disk space and increase db_recovery_file_dest_size parameter to

   reflect the new space.

4. Delete unnecessary files using RMAN DELETE command. If an operating

   system command was used to delete files, then use RMAN CROSSCHECK and

   DELETE EXPIRED commands.

************************************************************************

ARCH: Error 19809 Creating archive log file to '/opt/app/oracle/fast_recovery_area/JJFAB/archivelog/2015_02_28/o1_mf_1_130_%u_.arc'

Errors in file /opt/app/oracle/diag/rdbms/jjfab/JJFAB/trace/JJFAB_ora_13501.trc:

ORA-16038: 日志 1 sequence# 130 无法归档

ORA-19809: 超出了恢复文件数的限制

ORA-00312: 联机日志 1 线程 1: '/opt/oradata/gxwj/redo01.log'

Sat Feb 28 13:57:49 2015

ARC3 started with pid=23, OS id=13559 

USER (ospid: 13501): terminating the instance due to error 16038

Sat Feb 28 13:57:50 2015

System state dump requested by (instance=1, osid=13501), summary=[abnormal instance termination].

System State dumped to trace file /opt/app/oracle/diag/rdbms/jjfab/JJFAB/trace/JJFAB_diag_13471_20150228135750.trc

Dumping diagnostic data in directory=[cdmp_20150228135750], requested by (instance=1, osid=13501), summary=[abnormal instance termination].

Instance terminated by USER, pid = 13501

发现告警日志中已经明确给出了原因和建议。

3.根据实际情况采取合理的措施,这里我们先增加闪回区大小,把库启动起来。

SQL> startup mount

ORA-24324: 未初始化服务句柄

ORA-01041: 内部错误, hostdef 扩展名不存在

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

$ sqlplus / as sysdba



SQL*Plus: Release 11.2.0.4.0 Production on 星期六 2月 28 14:05:59 2015



Copyright (c) 1982, 2013, Oracle.  All rights reserved.



Connected to an idle instance.



SQL> startup mount

ORACLE instance started.



Total System Global Area 3206836224 bytes

Fixed Size                  2257520 bytes

Variable Size            2365590928 bytes

Database Buffers          822083584 bytes

Redo Buffers               16904192 bytes

Database mounted.

SQL> show parameter db_recover



NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      /opt/app/oracle/fast_recovery_

                                                 area

db_recovery_file_dest_size           big integer 4122M

SQL> !

$ df -h /opt/

文件系统              容量  已用  可用 已用%% 挂载点

/dev/mapper/vg_extend-lv_opt

                      493G  423G   45G  91% /opt

$ exit

exit



SQL> alter system set db_recovery_file_dest_size=10G;



System altered.



SQL> alter database open;



Database altered.



SQL> select status from v$instance;



STATUS

------------

OPEN



SQL> 

4.制定对应的归档日志删除策略

SQL> set linesize 120

SQL> select * from v$flash_recovery_area_usage;



FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES

-------------------- ------------------ ------------------------- ---------------

CONTROL FILE                          0                         0               0

REDO LOG                              0                         0               0

ARCHIVED LOG                      41.54                         0             133

BACKUP PIECE                          0                         0               0

IMAGE COPY                            0                         0               0

FLASHBACK LOG                         0                         0               0

FOREIGN ARCHIVED LOG                  0                         0               0



7 rows selected.

可以rman直接删除不再需要的归档,比如删除1天之前的归档

RMAN> delete noprompt archivelog until time 'sysdate-1';

此处省略删除归档的输出..

RMAN> exit



Recovery Manager complete.



SQL> select * from v$flash_recovery_area_usage;



FILE_TYPE            PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES

-------------------- ------------------ ------------------------- ---------------

CONTROL FILE                          0                         0               0

REDO LOG                              0                         0               0

ARCHIVED LOG                        .35                         0               1

BACKUP PIECE                          0                         0               0

IMAGE COPY                            0                         0               0

FLASHBACK LOG                         0                         0               0

FOREIGN ARCHIVED LOG                  0                         0               0



7 rows selected.

当然还可以设置crontab定时每天删除1天前的归档:

$ crontab -l

00 04 * * * /opt/shell/del_arch.sh

$ more /opt/shell/del_arch.sh

#!/bin/bash

export ORACLE_BASE=/opt/app/oracle

export ORACLE_HOME=/opt/app/oracle/product/11.2.0.4/dbhome_1 

export ORACLE_SID=JJFAB

export NLS_LANG="simplified chinese_china.ZHS16GBK"

export NLS_DATE_FORMAT="YYYY -MM-DD HH24:Mi:SS"

export PATH=.:/opt/app/oracle/product/11.2.0.4/dbhome_1:/usr/sbin:$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib



rman target / log=/opt/backup/del_arch.log <<EOF

list archivelog all;

delete noprompt archivelog until time 'sysdate-1';

show all;

list archivelog all;

EOF

 

你可能感兴趣的:(oracle)