您的位置:首页 > 数据库

又一例SPFILE设置错误导致数据库无法启动

2010-08-03 11:41 411 查看
--========================================

--又一例SPFILE设置错误导致数据库无法启动

--========================================

SPFILE参数错误,容易导致数据库无法启动。关于SPFILE设置错误处理办法的总结,请参照:SPFILE错误导致数据库无法启动

此次的情况与上次的稍有不同,故列出该次的恢复过程

故障

SQL> startup

ORA-16032: parameter LOG_ARCHIVE_DEST destination string cannot be translated

ORA-07286: sksagdi: cannot obtain device information.

Linux Error: 2: No such file or directory

分析

SQL> ho cat /u01/app/oracle/admin/orcl/bdump/alert_orcl.log --查看告警日志

Tue Aug 3 10:38:25 2010

ALTER SYSTEM SET log_archive_dest='u01/app/oracle/archivelog1' SCOPE=SPFILE; --此处路径开始处少了"/"

Tue Aug 3 10:39:59 2010

ALTER SYSTEM SET log_archive_duplex_dest='/u01/app/oracle/archivelog2' SCOPE=SPFILE;

Tue Aug 3 10:40:25 2010

Incremental changes to log_archive_dest_1 not allowed with SPFILE

Tue Aug 3 10:40:43 2010

ALTER SYSTEM SET log_archive_dest_1='location=/u01/app/oracle/archivelog3' SCOPE=SPFILE;

Tue Aug 3 10:40:57 2010

ALTER SYSTEM SET log_archive_dest_2='location=/u01/app/oracle/archivelog4' SCOPE=SPFILE;

Tue Aug 3 10:41:02 2010

Starting background process EMN0

EMN0 started with pid=21, OS id=3944

Tue Aug 3 10:41:02 2010

Shutting down instance: further logons disabled --实例开始关闭

Tue Aug 3 10:41:03 2010

Stopping background process QMNC

Tue Aug 3 10:41:04 2010

Stopping background process CJQ0

Tue Aug 3 10:41:05 2010

Stopping background process MMNL

Tue Aug 3 10:41:06 2010

Stopping background process MMON

Tue Aug 3 10:41:07 2010

Shutting down instance (immediate)

License high water mark = 7

Tue Aug 3 10:41:07 2010

Stopping Job queue slave processes

Tue Aug 3 10:41:12 2010

Process OS id : 3942 alive after kill

Errors in file /u01/app/oracle/admin/orcl/udump/orcl_ora_3859.trc

Tue Aug 3 10:41:12 2010

Job queue slave processes stopped

All dispatchers and shared servers shutdown

Tue Aug 3 10:41:14 2010

ALTER DATABASE CLOSE NORMAL

Tue Aug 3 10:41:15 2010

SMON: disabling tx recovery

SMON: disabling cache recovery

Tue Aug 3 10:41:15 2010

Shutting down archive processes

Archiving is disabled

Tue Aug 3 10:41:20 2010

ARCH shutting down

ARC1: Archival stopped

Tue Aug 3 10:41:25 2010

ARCH shutting down

ARC0: Archival stopped

Tue Aug 3 10:41:26 2010

Thread 1 closed at log sequence 46

Successful close of redo thread 1

Tue Aug 3 10:41:26 2010

Completed: ALTER DATABASE CLOSE NORMAL

Tue Aug 3 10:41:26 2010

ALTER DATABASE DISMOUNT

Completed: ALTER DATABASE DISMOUNT

ARCH: Archival disabled due to shutdown: 1089

Shutting down archive processes

Archiving is disabled

Archive process shutdown avoided: 0 active

ARCH: Archival disabled due to shutdown: 1089

Shutting down archive processes

Archiving is disabled

Archive process shutdown avoided: 0 active

Tue Aug 3 10:41:49 2010 --至此所有的进程都被关闭

Starting ORACLE instance (normal) --启动后仅出现了行提示

LICENSE_MAX_SESSION = 0

LICENSE_SESSIONS_WARNING = 0

Picked latch-free SCN scheme 2

SQL> ho ps -ef | grep oracle --后台进程被关闭

root 3796 3764 0 10:28 pts/0 00:00:00 su - oracle

oracle 3797 3796 0 10:29 pts/0 00:00:00 -bash

oracle 3829 3797 0 10:29 pts/0 00:00:00 /usr/bin/perl -w /usr/bin/uniread sqlplus / as sysdba

oracle 3830 3829 0 10:29 pts/1 00:00:00 sqlplus as sysdba

oracle 3947 3830 1 10:41 ? 00:00:02 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle 3953 3830 0 10:43 pts/1 00:00:00 /bin/bash -c ps -ef | grep oracle

oracle 3954 3953 0 10:43 pts/1 00:00:00 ps -ef

SQL> ho strings /u01/app/oracle/10g/dbs/spfileorcl.ora --查看spfileorcl的信息

orcl.__db_cache_size=167772160

orcl.__java_pool_size=4194304

orcl.__large_pool_size=4194304

orcl.__shared_pool_size=71303168

orcl.__streams_pool_size=0

*.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

*.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl'

*.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'

*.db_block_size=8192

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='orcl'

*.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

*.db_recovery_file_dest_size=2147483648

*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

*.fast_start_mttr_target=30

*.job_queue_processes=10

*.log_archive_dest_1='location=/u01/app/oracle/archivelog3'

*.log_archive_dest_2='location=/u01/app/oracle/archivelog4'

*.log_archive_dest_state_2='ENABLE'

*.log_archive_dest='u01/app/oracle/archivelog1' --同告警日志提示的一样,路径开始处少了"/"

*.log_archive_duplex_dest='/u01/app/oracle/archivelog2'

*.log_archive_format='arc_%t_%s_%r.arc'

*.open_cursors=300

*.pga_aggregate_target=83886080

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.sga_target=251658240

*.undo_management='AUTO'

*.undo_tablespace='UNDOTBS1'

*.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

解决

SQL> vim /u01/app/oracle/10g/dbs/initorcl.ora --由于没有备份的参数文件,在此新建一个pfile.

--如果有内容可以先清空其内容然后再添加如下内容并保存

spfile='/u01/app/oracle/10g/dbs/spfileorcl.ora'

log_archive_dest='/u01/app/oracle/archivelog1/'

SQL> startup pfile = '$ORACLE_HOME/dbs/initorcl.ora'; --再次提示错误,原来是归档方式不兼容导致

ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST

--根据上面的错误提示在使用LOG_ARCHIVE_DEST_1不能同时指定LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST参数

--再次修改initorcl.ora,添加以下内容,添加后的结果如下

--注意此处是将log_archive_dest_1和log_archive_dest_2清空

--也可以将log_archive_dest和log_archive_duplex_dest置空,因为这是两种不同的归档方式,互不兼容

SQL> ho cat /u01/app/oracle/10g/dbs/initorcl.ora --查看修改后的初始化参数

spfile='/u01/app/oracle/10g/dbs/spfileorcl.ora'

log_archive_dest='/u01/app/oracle/archivelog1/'

log_archive_dest_1=''

log_archive_dest_2=''

SQL> startup pfile = '/u01/app/oracle/10g/dbs/initorcl.ora';

ORACLE instance started.

Total System Global Area 251658240 bytes

Fixed Size 1218796 bytes

Variable Size 79693588 bytes

Database Buffers 167772160 bytes

Redo Buffers 2973696 bytes

Database mounted.

Database opened.

SQL> show parameter pfile;

NAME TYPE VALUE

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

spfile string /u01/app/oracle/10g/dbs/spfile

orcl.ora

SQL> show parameter spfile;

NAME TYPE VALUE

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

spfile string /u01/app/oracle/10g/dbs/spfile

orcl.ora

SQL> desc v$spparameter

Name Null? Type

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

SID VARCHAR2(80)

NAME VARCHAR2(80)

VALUE VARCHAR2(255)

DISPLAY_VALUE VARCHAR2(255)

ISSPECIFIED VARCHAR2(6)

ORDINAL NUMBER

UPDATE_COMMENT VARCHAR2(255)

SQL> select distinct isspecified from v$spparameter;

ISSPEC

------

TRUE --第一行为true 可以知道数据库使用spfile参数启动

FALSE

SQL> show parameter log_archive --查看log_archive相关参数

NAME TYPE VALUE

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

log_archive_config string

log_archive_dest string /u01/app/oracle/archivelog1/ --该参数已显示正确路径

log_archive_dest_1 string --该参数已经被初始化的pfile置空

log_archive_dest_10 string

log_archive_dest_2 string --该参数已经被初始化的pfile置空

log_archive_dest_3 string

log_archive_dest_4 string

log_archive_dest_5 string

log_archive_dest_6 string

log_archive_dest_7 string

log_archive_dest_8 string

NAME TYPE VALUE

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

log_archive_dest_9 string

log_archive_dest_state_1 string enable

log_archive_dest_state_10 string enable

log_archive_dest_state_2 string ENABLE

log_archive_dest_state_3 string enable

log_archive_dest_state_4 string enable

log_archive_dest_state_5 string enable

log_archive_dest_state_6 string enable

log_archive_dest_state_7 string enable

log_archive_dest_state_8 string enable

log_archive_dest_state_9 string enable

NAME TYPE VALUE

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

log_archive_duplex_dest string /u01/app/oracle/archivelog2

log_archive_format string arc_%t_%s_%r.arc

log_archive_local_first boolean TRUE

log_archive_max_processes integer 2

log_archive_min_succeed_dest integer 1

log_archive_start boolean FALSE

log_archive_trace integer 0

--将出现错误的几个参数永久化修改到spfile参数

SQL> alter system set log_archive_dest = '/u01/app/oracle/archivelog1' scope = spfile;

System altered.

SQL> alter system set log_archive_dest_1 = '' scope = spfile;

System altered.

SQL> alter system set log_archive_dest_2 = '' scope = spfile;

System altered.

SQL> startup --实例正常从spfile 启动

ORACLE instance started.

Total System Global Area 251658240 bytes

Fixed Size 1218796 bytes

Variable Size 79693588 bytes

Database Buffers 167772160 bytes

Redo Buffers 2973696 bytes

Database mounted.

Database opened.

SQL> create pfile = '$ORACLE_HOME/dbs/spfileorcl.ora.bak' from spfile;

File created. --备份spfile

更多

SPFILE错误导致数据库无法启动

Managing Archived Redo Logs

Oracle 用户、对象权限、系统权限

Oracle 角色、配置文件

Oracle 联机重做日志文件(ONLINE LOG FILE)

Oracle 控制文件(CONTROLFILE)

Oracle 表空间与数据文件

Oracle 归档日志
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: