zoukankan      html  css  js  c++  java
  • Oracle 设置archivelog错误解决方案

    在Oracle 数据库的实际应用中,开启archivelog模式是必不可少的,但是在设置archivelog的过程中,可能因为不小心出现错误,导致数据库无法启动,本案例就是一种情况。

    误操作现象:

    设置archivelog name格式时,将archivelog的命名格式设置为archive_%s_%t.arc,修改系统配置文件成功,重启数据库使设置生效。但是异常发生了,数据库无法启动。

    出错原因:

    设置archivelog name格式时,匹配符%s,%t,%r是必须的。

    %s 日志序列号。

    %t 重做线程编号。

    %r RESETLOGS的ID值。

    因为在设置的时候没有符合匹配符%s,%t,%r都存在的要求,所以在数据库启动,加载参数文件时,这条设置无法验证通过,导致数据库无法启动。

     1 SQL> alter system set log_archive_format="archive_%s_%t.arc" scope=spfile;
     2 
     3 System altered.
     4 
     5 SQL> shutdown immediate
     6 Database closed.
     7 Database dismounted.
     8 ORACLE instance shut down.
     9 SQL> startup mount
    10 ORA-19905: log_archive_format must contain %s, %t and %r
    11 SQL> alter system set log_archive_format="robt_%s_%t_%r.arc" scope=spfile;
    12 alter system set log_archive_format="robt_%s_%t_%r.arc" scope=spfile
    13 *
    14 ERROR at line 1:
    15 ORA-01034: ORACLE not available
    16 Process ID: 0
    17 Session ID: 153 Serial number: 7663
    View Code

    解决方案:

    1.在spfile的同目录下,创建文件inite<instance name>.ora, 内容如下

    根据spfile文件生成的。

     1 *.audit_file_dest='D:pporacleadminepicdbadump'
     2 *.audit_trail='db'
     3 *.compatible='11.2.0.0.0'
     4 *.control_files='F:*********CONTROL01.CTL','D:PPORACLEFAST_RECOVERY_AREA<instance name>CONTROL02.CTL'
     5 *.db_block_size=8192
     6 *.db_domain=''
     7 *.db_name='epicdb'
     8 *.db_recovery_file_dest_size=2147483648
     9 *.db_recovery_file_dest='d:<instance name>FRA'
    10 *.diagnostic_dest='D:pporacle'
    11 *.dispatchers='(PROTOCOL=TCP) (SERVICE=epicdbXDB)'
    12 *.job_queue_processes=1000
    13 *.log_archive_dest_1='location=E:<instance name>archivelog'
    14 *.log_archive_dest_10='location=use_db_recovery_file_dest'
    15 *.log_archive_format='archive_%s_%t_%r.arc'在设置pfile的过程中修复archivelog设置
    16 *.memory_target=854589440
    17 *.open_cursors=300
    18 *.processes=150
    19 *.remote_login_passwordfile='EXCLUSIVE'
    20 *.undo_tablespace='UNDOTBS3'
    21 *.utl_file_dir='c:logminer'
    View Code

    2. PL/SQL中执行

    1 SQL>startup nomount pfile=<pfile所在的路径>init<instance name>.ora’;
    2 这里应该提示
    3 ORACLE instance started.
    View Code

    3.通过pfile启动了数据库,通过pfile生成spfile

    1 SQL> create spfile from pfile;
    2 File created.
    View Code

    4.重启数据库

    1 SQL> shutdown immediate
    2 ORA-01507: database not mounted
    3 ORACLE instance shut down.
    4 SQL> startup
    5 ORACLE instance started.
    6 ....
    7 Database mounted.
    8 Database opened.
    View Code

    总结:

    找到问题出现的根本原因,是解决问题的要点。本案例的现象就是数据库无法加载spfile文件,导致无法正常启动,archivelog的设置错误是问题的导火索。先要让数据库启动才能重新设置archivelog,根据这个思路,重建pfile,在重建的过程中将archivelog的设置修改正确,启动数据库,根据pfile生成spfile,之后重启数据库。

  • 相关阅读:
    js学习笔记7----return,arguments及获取元素样式
    js学习笔记6----作用域及解析机制
    js学习笔记5----函数传参
    js学习笔记4----数据类型
    Flashtext 使用文档 大规模数据清洗的利器-实现文本结构化
    Linux之目录的操作(创建、移动、改名、删除、复制)
    Python 异常处理
    Python 内置模块函数filter reduce
    Python处理文件以及文件夹常用方法
    Python 字符串常用方法
  • 原文地址:https://www.cnblogs.com/SUN-PH/p/3498353.html
Copyright © 2011-2022 走看看