zoukankan      html  css  js  c++  java
  • Oracle-重建控制文件的方式

    简介

    控制文件记录了当前数据库的结构信息,如数据文件,日志文件的信息和相关的状态等。它是一个二进制文件。在参数文件中描述控制文件的位置和数量,在数据库实例启动到mount状态时读取控制文件的信息,在open状态中一直被使用,以维护数据库的一致性。

    控制文件位置

    SHOW PARAMETER CONTROL_FILES
    
    set lines 168 pages 99
    col name for a60
    select * from v$controlfile;
    

    image-20210825123149591

    控制文件的内容

    数据字典中查看

    col type for a32
    select * from V$CONTROLFILE_RECORD_SECTION;
    

    image-20210825123344725

    strings 查看控制文件内容

    image-20210825123456879

    • 数据库的名字,ID、创建的时间戳
    • 表空间的名字
    • 联机日志文件、数据文件的位置、个数、名字
    • 联机日志的Sequence号码
    • 检查点的信息
    • 撤销段的开始或结束
    • 归档信息
    • 备份信息

    重建控制文件注意事项

    重建控制文件时,需要相应的redo logfile和数据文件已存在。

    set和reuse database

    • set database: 将数据文件头的db_name改成脚本中指定的名称
    • reuse database: 读取数据文件头中的db_name并校验脚本中指定的名称是否一致

    resetlogs和noresetlogs

    • noresetlogs: 从current的redo logfile中得到系统scn号,数据文件scn号

    • resetlogs: 将redo logfile内容清空,sequence#从1开始

    tempfile

    控制文件不包含tempfile,可以在open数据库后再创建。

    问题

    描述

    当无备份控制文件的情况下,如何重建

    处理方案

    获取控制文件的方式

    trace文件(需要在mount或open状态)
    生成trace文件
    alter database backup controlfile to trace as '/tmp/control_rebuild.trc';
    

    生成的trace文件包含了resetlogs和noresetlogs 两个部分。若只需某一部分内容,可执行

    alter database backup controlfile to trace as '/tmp/ctl_no.sql'  noresetlogs;
    alter database backup controlfile to trace as '/tmp/ctl_rel.sql' resetlogs;
    
    查看文件(/tmp/control_rebuild.trc)

    image-20210825111435100

    重建控制文件脚本
    STARTUP NOMOUNT
    CREATE CONTROLFILE REUSE DATABASE "O11G" NORESETLOGS  ARCHIVELOG
        MAXLOGFILES 16
        MAXLOGMEMBERS 3
        MAXDATAFILES 100
        MAXINSTANCES 8
        MAXLOGHISTORY 292
    LOGFILE
      GROUP 1 '/ups/data/oradata/o11g/redo01.log'  SIZE 50M BLOCKSIZE 512,
      GROUP 2 '/ups/data/oradata/o11g/redo02.log'  SIZE 50M BLOCKSIZE 512,
      GROUP 3 '/ups/data/oradata/o11g/redo03.log'  SIZE 50M BLOCKSIZE 512
    DATAFILE
      '/ups/data/oradata/o11g/system01.dbf',
      '/ups/data/oradata/o11g/sysaux01.dbf',
      '/ups/data/oradata/o11g/undotbs01.dbf',
      '/ups/data/oradata/o11g/users01.dbf',
      '/ups/data/oradata/o11g/awrdata01.dbf',
      '/ups/data/oradata/o11g/awridx01.dbf',
      '/ups/data/oradata/o11g/vpx01.dbf'
    CHARACTER SET ZHS16GBK
    ;
    
    VARIABLE RECNO NUMBER;
    EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('ENCRYPTION FOR DATABASE','ON');
    RECOVER DATABASE
    
    ALTER SYSTEM ARCHIVE LOG ALL;
    
    ALTER DATABASE OPEN;
    
    ALTER TABLESPACE TEMP ADD TEMPFILE '/ups/data/oradata/o11g/temp01.dbf'
         SIZE 309329920  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;
    
    事件转储

    这种方式不直观友好

    alter session set events 'immediate trace name CONTROLF level 12';
    

    oradebug setmypid
    oradebug tracefile_name
    oradebug dump controlf 12
    
    获取trc文件路径
    -- 获取trc文件
    select pr.value || '/' || i.instance_name || '_ora_' || to_char(ps.spid) 
    || '.trc' "trace file name" from v$session s, v$process ps, v$parameter pr, v$instance i 
    where s.paddr = ps.addr and s.sid = userenv('sid') and pr.name = 'user_dump_dest';
    
    
    -- 获得当前的spid
    select spid from v$process where addr =
    (select paddr from v$session where sid =
    (select sid from v$mystat where rownum = 1));
    
  • 相关阅读:
    算法笔记--支配树
    51Nod 1187 寻找分数
    ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer
    ACM-ICPC 2018 徐州赛区网络预赛 A. Hard to prepare
    HDU
    HDU
    Codeforces 1011E
    Codeforces 990D
    Codeforces 989C
    Codeforces 932E
  • 原文地址:https://www.cnblogs.com/binliubiao/p/15184641.html
Copyright © 2011-2022 走看看