IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Oracle 23ai rm redo*.log恢复

    惜分飞发表于 2024-05-04 04:18:47
    love 0

    联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

    标题:Oracle 23ai rm redo*.log恢复

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    在oracle 23ai的pdb中创建用户和表,并且插入数据(不提交),在另外一个会话中abort库,并从os层面rm删除掉redo文件,模拟数据库当前redo丢失,数据库恢复
    创建用户和表并插入数据

    [oracle@xifenfei ~]$ sqlplus sys/oracle@free as sysdba
    
    SQL*Plus: Release 23.0.0.0.0 - Production on Fri May 3 15:40:55 2024
    Version 23.4.0.24.05
    
    Copyright (c) 1982, 2024, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
    Version 23.4.0.24.05
    
    SQL> 
    SQL> 
    SQL> show pdbs;
    
        CON_ID CON_NAME                       OPEN MODE  RESTRICTED
    ---------- ------------------------------ ---------- ----------
             2 PDB$SEED                       READ ONLY  NO
             3 FREEPDB1                       READ WRITE NO
    
    SQL> alter session set container=FREEPDB1;
    
    Session altered.
    
    SQL> create user xff identified by oracle;
    
    User created.
    
    SQL> grant dba to xff ;
    
    Grant succeeded.
    
    SQL> conn xff/oracle@FREEPDB1
    Connected.
    SQL> create table t1 as select * from dba_objects;
    
    Table created.
    
    
    SQL> insert into t1 select *from t1;
    
    75877 rows created.
    
    SQL> /
    
    151754 rows created.
    

    另外一个会话中abort库

    [oracle@xifenfei ~]$ sqlplus sys/oracle@free as sysdba
    
    SQL*Plus: Release 23.0.0.0.0 - Production on Fri May 3 15:43:30 2024
    Version 23.4.0.24.05
    
    Copyright (c) 1982, 2024, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
    Version 23.4.0.24.05
    
    SQL> shutdown abort;
    ORACLE instance shut down.
    SQL> 
    SQL> 
    SQL> 
    SQL> exit
    Disconnected from Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
    Version 23.4.0.24.05
    

    操作系统层面rm -rf 删除redo

    [oracle@xifenfei ~]$ cd $ORACLE_BASE/oradata
    [oracle@xifenfei oradata]$ ls
    FREE
    [oracle@xifenfei oradata]$ cd FREE/
    [oracle@192 FREE]$ ls
    control01.ctl  FREEPDB1  redo01.log  redo03.log    system01.dbf  undotbs2.dbf
    control02.ctl  pdbseed   redo02.log  sysaux01.dbf  temp01.dbf    users01.dbf
    [oracle@xifenfei FREE]$ ls -ltr
    total 2441036
    drwxr-x---. 2 oracle     1000         85 May  1 16:49 pdbseed
    -rw-r-----. 1 oracle oinstall   20979712 May  1 16:51 temp01.dbf
    drwxr-x---. 2 oracle     1000        104 May  1 16:55 FREEPDB1
    -rw-r-----. 1 oracle oinstall  209715712 May  3 15:23 redo01.log
    -rw-r-----. 1 oracle oinstall  209715712 May  3 15:23 redo02.log
    -rw-r-----. 1 oracle oinstall    7348224 May  3 15:23 users01.dbf
    -rw-r-----. 1 oracle oinstall 1080041472 May  3 15:43 system01.dbf
    -rw-r-----. 1 oracle oinstall  692068352 May  3 15:43 sysaux01.dbf
    -rw-rw----. 1 oracle oinstall   52436992 May  3 15:43 undotbs2.dbf
    -rw-r-----. 1 oracle oinstall  209715712 May  3 15:43 redo03.log
    -rw-r-----. 1 oracle oinstall   18759680 May  3 15:43 control01.ctl
    -rw-r-----. 1 oracle oinstall   18759680 May  3 15:43 control02.ctl
    [oracle@xifenfei FREE]$ rm -rf redo0*
    [oracle@192 FREE]$ ls -l redo*
    ls: cannot access 'redo*': No such file or directory
    [oracle@xifenfei FREE]$ 
    

    尝试启动数据库,报ora-00313,ora-00312,ora-27037等错误

    [oracle@xifenfei ~]$ sqlplus sys/oracle@free as sysdba
    
    SQL*Plus: Release 23.0.0.0.0 - Production on Fri May 3 15:44:17 2024
    Version 23.4.0.24.05
    
    Copyright (c) 1982, 2024, Oracle.  All rights reserved.
    
    Connected to an idle instance.
    
    SQL> startup mount;
    ORACLE instance started.
    
    Total System Global Area 1603726344 bytes
    Fixed Size                  5360648 bytes
    Variable Size             671088640 bytes
    Database Buffers          922746880 bytes
    Redo Buffers                4530176 bytes
    Database mounted.
    SQL> recover database;
    ORA-00283: recovery session canceled due to errors
    ORA-00313: open failed for members of log group 3 of thread 1
    ORA-00312: online log 3 thread 1: '/opt/oracle/oradata/FREE/redo03.log'
    ORA-27037: unable to obtain file status
    Linux-x86_64 Error: 2: No such file or directory
    Additional information: 7
    

    由于所有redo均被删除(包含当前redo),因此只能强制resetlogs方式打开库,尝试打开数据库

    SQL> shutdown immediate;
    ORA-01109: database not open
    
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount pfile='/tmp/pfile'
    ORACLE instance started.
    
    Total System Global Area 1603726344 bytes
    Fixed Size                  5360648 bytes
    Variable Size             671088640 bytes
    Database Buffers          922746880 bytes
    Redo Buffers                4530176 bytes
    Database mounted.
    SQL> recover database until cancel;
    ORA-00279: change 4244588 generated at 05/03/2024 15:23:22 needed for thread 1
    ORA-00289: suggestion :
    /opt/oracle/product/23ai/dbhomeFree/dbs/arch1_6_1167842962.dbf
    ORA-00280: change 4244588 for thread 1 is in sequence #6
    
    
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    cancel
    ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
    ORA-01194: file 1 needs more recovery to be consistent
    ORA-01110: data file 1: '/opt/oracle/oradata/FREE/system01.dbf'
    
    
    ORA-01112: media recovery not started
    
    SQL> alter database open resetlogs;
    alter database open resetlogs
    *
    ERROR at line 1:
    ORA-00603: ORACLE server session terminated by irrecoverable error
    ORA-01092: ORACLE instance terminated. Disconnection forced
    ORA-00600: internal error code, arguments: [kcbzib_kcrsds_1], [], [], [], [],
    [], [], [], [], [], [], []
    Process ID: 5596
    Session ID: 29 Serial number: 63204
    

    数据库遇到常见的ORA-600 kcbzib_kcrsds_1错误,这类错误类似oracle在12c之前版本中的ORA-600 2662错误
    ORA-600 kcbzib_kcrsds_1报错
    存储故障,强制拉库报ORA-600 kcbzib_kcrsds_1处理
    redo异常强制拉库报ORA-600 kcbzib_kcrsds_1修复
    ORA-00603 ORA-01092 ORA-600 kcbzib_kcrsds_1
    这种一般就是scn问题,通过修改数据库scn,数据库启动报ORA-16433错误

    [oracle@xifenfei ~]$ sqlplus sys/oracle@free as sysdba
    
    SQL*Plus: Release 23.0.0.0.0 - Production on Fri May 3 15:49:00 2024
    Version 23.4.0.24.05
    
    Copyright (c) 1982, 2024, Oracle.  All rights reserved.
    
    Connected to an idle instance.
    
    SQL> startup nomount pfile='/tmp/pfile';
    ORACLE instance started.
    
    Total System Global Area 1603726344 bytes
    Fixed Size                  5360648 bytes
    Variable Size             671088640 bytes
    Database Buffers          922746880 bytes
    Redo Buffers                4530176 bytes
    SQL> alter database mount;
    
    Database altered.
    
    SQL> recover database;
    ORA-00283: recovery session canceled due to errors
    ORA-16433: The database or pluggable database must be opened in read/write mode.
    
    
    SQL> shutdown abort;
    ORACLE instance shut down.
    

    处理ctl,open数据库成功

    SQL> startup nomount pfile='/tmp/pfile'
    ORACLE instance started.
    
    Total System Global Area 1603726344 bytes
    Fixed Size                  5360648 bytes
    Variable Size             671088640 bytes
    Database Buffers          922746880 bytes
    Redo Buffers                4530176 bytes
    SQL> CREATE CONTROLFILE REUSE DATABASE "FREE" NORESETLOGS  NOARCHIVELOG
      2      MAXLOGFILES 16
      3      MAXLOGMEMBERS 3
      4      MAXDATAFILES 1024
      5      MAXINSTANCES 8
      6      MAXLOGHISTORY 292
      7  LOGFILE
      8    GROUP 1 '/opt/oracle/oradata/FREE/redo01.log'  SIZE 200M BLOCKSIZE 512,
      9    GROUP 2 '/opt/oracle/oradata/FREE/redo02.log'  SIZE 200M BLOCKSIZE 512,
     10    GROUP 3 '/opt/oracle/oradata/FREE/redo03.log'  SIZE 200M BLOCKSIZE 512
     11  -- STANDBY LOGFILE
     12  DATAFILE
     13    '/opt/oracle/oradata/FREE/system01.dbf',
     14    '/opt/oracle/oradata/FREE/pdbseed/system01.dbf',
     15    '/opt/oracle/oradata/FREE/sysaux01.dbf',
     16    '/opt/oracle/oradata/FREE/pdbseed/sysaux01.dbf',
     17    '/opt/oracle/oradata/FREE/users01.dbf',
     18    '/opt/oracle/oradata/FREE/pdbseed/undotbs01.dbf',
     19    '/opt/oracle/oradata/FREE/FREEPDB1/system01.dbf',
     20    '/opt/oracle/oradata/FREE/FREEPDB1/sysaux01.dbf',
     21    '/opt/oracle/oradata/FREE/FREEPDB1/undotbs01.dbf',
     22    '/opt/oracle/oradata/FREE/FREEPDB1/users01.dbf',
     23    '/opt/oracle/oradata/FREE/undotbs2.dbf'
     24  CHARACTER SET AL32UTF8
     25  ;
    
    Control file created.
    
    SQL> recover database;
    Media recovery complete.
    SQL> alter database open;
    
    Database altered.
    
    SQL> show pdbs;
    
              CON_ID CON_NAME                       OPEN MODE  RESTRICTED
    ---------------- ------------------------------ ---------- ----------
                   2 PDB$SEED                       READ ONLY  NO
                   3 FREEPDB1                       READ WRITE NO
    

    至此当前数据库redo故障模拟和恢复基本完成

    • Oracle 23ai 变化之—-默认数据文件变为bigfile
    • 模拟19c数据库redo异常恢复
    • ORACLE 12C 控制文件异常恢复
    • Oracle 12c undo异常处理—root pdb undo异常
    • 恢复备份控制文件避免resetlogs方式打开数据库
    • 重命名sys用户引起数据库启动报ORA-01092 ORA-00600 kokasgi1错误
    • 创建控制文件出现ORA-01565 ORA-27041 OSD-04002
    • 数据库恢复遭遇ORA-00600[3705]
    • 当前联机日志损坏恢复
    • 模拟19c数据库pdb undo异常恢复
    • 清除离线数据文件记录
    • 模拟19c数据库root pdb undo异常恢复


沪ICP备19023445号-2号
友情链接