LAB002 -Oracle数据库手工冷备份(归档模式)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/stevensxiao/article/details/89107995

设置FRA用于归档

创建归档目录:

[root@oracle-12201-vagrant ~]# mkdir /u01/fra
[root@oracle-12201-vagrant ~]# chown oracle:oinstall /u01/fra

设置FRA:

[oracle@oracle-12201-vagrant ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 21:21:27 2019

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> alter system set db_recovery_file_dest_size=10g scope=both;

System altered.

SQL> alter system set db_recovery_file_dest='/u01/fra' scope=both;

System altered.
SQL> show parameter DB_RECOVERY_FILE_DEST;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /u01/fra
db_recovery_file_dest_size           big integer 10G
SQL> select dest_name, destination, status, binding from v$archive_dest;

DEST_NAME
--------------------------------------------------------------------------------
DESTINATION
--------------------------------------------------------------------------------
STATUS    BINDING
--------- ---------
LOG_ARCHIVE_DEST_1
USE_DB_RECOVERY_FILE_DEST
VALID     OPTIONAL
...
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[oracle@oracle-12201-vagrant ~]$ ls -l /u01/fra
total 0

启用数据库归档

[oracle@oracle-12201-vagrant ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 21:29:37 2019

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.

Total System Global Area 1207959552 bytes
Fixed Size                  8792152 bytes
Variable Size             436209576 bytes
Database Buffers          754974720 bytes
Redo Buffers                7983104 bytes
Database mounted.
SQL> alter database archivelog
  2  ;

Database altered.

SQL> alter database open;

Database altered.

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     1
Next log sequence to archive   3
Current log sequence           3
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

[oracle@oracle-12201-vagrant ~]$ tree /u01/fra
/u01/fra
└── ORCLCDB
    └── archivelog
        └── 2019_04_08

3 directories, 0 files

插入数据,用于验证恢复

[oracle@oracle-12201-vagrant ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 21:37:34 2019

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> select count(*) from cdb_table;

  COUNT(*)
----------
         0

SQL> insert into cdb_table values(1);

1 row created.

SQL> commit;

Commit complete.

SQL> alter session set container=orclpdb1;

Session altered.
SQL> show con_name;

CON_NAME
------------------------------
ORCLPDB1

SQL> select count(*) from pdb_table;

  COUNT(*)
----------
         0

SQL> insert into pdb_table values(1);

1 row created.

SQL> commit;

Commit complete.

确定需要备份的文件

执行以下查询:

set pagesize 0
select name from v$datafile
union
select name from v$controlfile;

输出结果为:

NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/undotbs01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf
/opt/oracle/oradata/ORCLCDB/control01.ctl
/opt/oracle/oradata/ORCLCDB/control02.ctl
/opt/oracle/oradata/ORCLCDB/pdbseed/sysaux01.dbf
/opt/oracle/oradata/ORCLCDB/pdbseed/system01.dbf
/opt/oracle/oradata/ORCLCDB/pdbseed/undotbs01.dbf
/opt/oracle/oradata/ORCLCDB/sysaux01.dbf
/opt/oracle/oradata/ORCLCDB/system01.dbf
/opt/oracle/oradata/ORCLCDB/undotbs01.dbf
/opt/oracle/oradata/ORCLCDB/users01.dbf

13 rows selected.

关闭数据库

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

备份数据库

查看文件:

[oracle@oracle-12201-vagrant ~]$ cd /u01/backup
[oracle@oracle-12201-vagrant backup]$ mkdir ORCLCDB
[oracle@oracle-12201-vagrant backup]$ mkdir ORCLCDB/ORCLPDB1
[oracle@oracle-12201-vagrant backup]$ mkdir ORCLCDB/pdbseed

[oracle@oracle-12201-vagrant backup]$ ll /opt/oracle/oradata/ORCLCDB/ORCLPDB1/
total 787496
-rw-r-----. 1 oracle oinstall 367009792 Apr  8 21:46 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 262152192 Apr  8 21:46 system01.dbf
-rw-r-----. 1 oracle oinstall  67117056 Apr  7 16:04 temp01.dbf
-rw-r-----. 1 oracle oinstall 104865792 Apr  8 21:46 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072 Apr  8 21:46 users01.dbf
[oracle@oracle-12201-vagrant backup]$ ll /opt/oracle/oradata/ORCLCDB/pdbseed
total 761888
-rw-r-----. 1 oracle oinstall 346038272 Apr  7 16:03 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 262152192 Apr  7 16:03 system01.dbf
-rw-r-----. 1 oracle oinstall  67117056 Apr  7 16:01 temp012019-04-07_16-00-25-755-PM.dbf
-rw-r-----. 1 oracle oinstall 104865792 Apr  7 16:03 undotbs01.dbf
[oracle@oracle-12201-vagrant backup]$ ll /opt/oracle/oradata/ORCLCDB
total 2056984
-rw-r-----. 1 oracle oinstall  18726912 Apr  8 21:46 control01.ctl
-rw-r-----. 1 oracle oinstall  18726912 Apr  8 21:46 control02.ctl
drwxr-x---. 2 oracle oinstall       104 Apr  7 16:04 ORCLPDB1
drwxr-x---. 2 oracle oinstall      4096 Apr  7 16:00 pdbseed
-rw-r-----. 1 oracle oinstall 209715712 Apr  8 21:30 redo01.log
-rw-r-----. 1 oracle oinstall 209715712 Apr  8 21:30 redo02.log
-rw-r-----. 1 oracle oinstall 209715712 Apr  8 21:46 redo03.log
-rw-r-----. 1 oracle oinstall 492838912 Apr  8 21:46 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 838868992 Apr  8 21:46 system01.dbf
-rw-r-----. 1 oracle oinstall  34611200 Apr  7 16:01 temp01.dbf
-rw-r-----. 1 oracle oinstall  68165632 Apr  8 21:46 undotbs01.dbf
-rw-r-----. 1 oracle oinstall   5251072 Apr  8 21:46 users01.dbf

开始备份:

[oracle@oracle-12201-vagrant backup]$ cat backupdb.sh
cd /opt/oracle/oradata/ORCLCDB/ORCLPDB1
cp sysaux01.dbf system01.dbf undotbs01.dbf users01.dbf /u01/backup/ORCLCDB/ORCLPDB1
cd /opt/oracle/oradata/ORCLCDB/pdbseed
cp sysaux01.dbf system01.dbf undotbs01.dbf /u01/backup/ORCLCDB/pdbseed
cd /opt/oracle/oradata/ORCLCDB
cp control01.ctl control02.ctl sysaux01.dbf system01.dbf undotbs01.dbf users01.dbf /u01/backup/ORCLCDB

[oracle@oracle-12201-vagrant backup]$ time ./backupdb.sh

real    0m29.810s
user    0m0.031s
sys     0m4.147s
[oracle@oracle-12201-vagrant backup]$ du -sh /u01/backup/ORCLCDB
2.7G    /u01/backup/ORCLCDB

启动数据库

[oracle@oracle-12201-vagrant ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 22:05:39 2019

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 1207959552 bytes
Fixed Size                  8792152 bytes
Variable Size             436209576 bytes
Database Buffers          754974720 bytes
Redo Buffers                7983104 bytes
Database mounted.
Database opened.

插入数据以验证恢复

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> select count(*) from cdb_table;

  COUNT(*)
----------
         1

SQL> insert into cdb_table values(2);

1 row created.

SQL> commit;

Commit complete.

SQL> alter session set container=orclpdb1;

Session altered.

SQL> show con_name;

CON_NAME
------------------------------
ORCLPDB1
SQL> select count(*) from pdb_table;

  COUNT(*)
----------
         1

SQL> insert into pdb_table values(2);

1 row created.

SQL> alter session set container=cdb$root;

Session altered.

SQL> shutdown immediate;
ORA-00604: error occurred at recursive SQL level 1
ORA-65023: active transaction exists in container ORCLPDB1
SQL> alter session set container=orclpdb1;

Session altered.

SQL> commit;

Commit complete.

SQL> alter session set container=cdb$root;

Session altered.

关闭数据库

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

恢复数据库

首先删除所有的控制和数据文件,仅留下redo log:

[oracle@oracle-12201-vagrant ~]$ cd $ORACLE_BASE
[oracle@oracle-12201-vagrant oracle]$ ls
admin  audit  cfgtoollogs  checkpoints  diag  oradata  oraInventory  product
[oracle@oracle-12201-vagrant oracle]$ cd oradata/
[oracle@oracle-12201-vagrant oradata]$ ls
ORCLCDB
[oracle@oracle-12201-vagrant oradata]$ cd ORCLCDB
[oracle@oracle-12201-vagrant ORCLCDB]$ ls
control01.ctl  control02.ctl  ORCLPDB1  pdbseed  redo01.log  redo02.log  redo03.log  sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf
[oracle@oracle-12201-vagrant ORCLCDB]$ rm *.dbf *.ctl
[oracle@oracle-12201-vagrant ORCLCDB]$ cd ORCLPDB1
[oracle@oracle-12201-vagrant ORCLPDB1]$ ls
sysaux01.dbf  system01.dbf  temp01.dbf  undotbs01.dbf  users01.dbf
[oracle@oracle-12201-vagrant ORCLPDB1]$ rm *
[oracle@oracle-12201-vagrant ORCLPDB1]$ cd ../pdbseed
[oracle@oracle-12201-vagrant pdbseed]$ ls
sysaux01.dbf  system01.dbf  temp012019-04-07_16-00-25-755-PM.dbf  undotbs01.dbf
[oracle@oracle-12201-vagrant pdbseed]$ rm *

然后恢复文件到原位置:

[oracle@oracle-12201-vagrant backup]$ pwd
/u01/backup
[oracle@oracle-12201-vagrant backup]$ cat restoredb.sh
cd /u01/backup/ORCLCDB/ORCLPDB1
cp sysaux01.dbf system01.dbf undotbs01.dbf users01.dbf /opt/oracle/oradata/ORCLCDB/ORCLPDB1
cd /u01/backup/ORCLCDB/pdbseed
cp sysaux01.dbf system01.dbf undotbs01.dbf /opt/oracle/oradata/ORCLCDB/pdbseed
cd /u01/backup/ORCLCDB
cp control01.ctl control02.ctl sysaux01.dbf system01.dbf undotbs01.dbf users01.dbf /opt/oracle/oradata/ORCLCDB
[oracle@oracle-12201-vagrant backup]$ time ./restoredb.sh

real    0m42.060s
user    0m0.064s
sys     0m5.122s

启动数据库

[oracle@oracle-12201-vagrant ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 22:21:03 2019

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 1207959552 bytes
Fixed Size                  8792152 bytes
Variable Size             436209576 bytes
Database Buffers          754974720 bytes
Redo Buffers                7983104 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 18045
Session ID: 17 Serial number: 52778

查看错误:

[oracle@oracle-12201-vagrant ~]$ adrci

ADRCI: Release 12.2.0.1.0 - Production on Mon Apr 8 22:28:26 2019

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

ADR base = "/opt/oracle"
adrci> show homes
ADR Homes:
diag/rdbms/orclcdb/ORCLCDB
diag/tnslsnr/oracle-12201-vagrant/listener
adrci> set home diag/rdbms/orclcdb/ORCLCDB
adrci> show alert -tail 100
2019-04-08 22:21:20.297000 +08:00
  audit_file_dest          = "/opt/oracle/admin/ORCLCDB/adump"
  commit_wait              = "nowait"
  commit_logging           = "batch"
  audit_trail              = "NONE"
  db_name                  = "ORCLCDB"
  open_cursors             = 300
  pga_aggregate_target     = 384M
  diagnostic_dest          = "/opt/oracle"
  enable_pluggable_database= TRUE
NOTE: remote asm mode is local (mode 0x1; from cluster type)
============================================================
NOTE: PatchLevel of this instance 0
============================================================
Starting background process PMON
PMON started with pid=2, OS id=17962
Starting background process CLMN
CLMN started with pid=3, OS id=17964
Starting background process PSP0
Starting background process VKTM
PSP0 started with pid=4, OS id=17966
2019-04-08 22:21:21.529000 +08:00
VKTM started with pid=5, OS id=17969 at elevated (RT) priority
VKTM running at (1)millisec precision with DBRM quantum (100)ms
Starting background process GEN0
Starting background process MMAN
GEN0 started with pid=6, OS id=17973
MMAN started with pid=7, OS id=17975
Starting background process GEN1
Starting background process DIAG
GEN1 started with pid=9, OS id=17979_17981
Starting background process OFSD
DIAG started with pid=11, OS id=17983
OFSD started with pid=12, OS id=17985_17987
Starting background process DBRM
Oracle running with ofslib:'Oracle File Server Library' version=2
Starting background process VKRM
DBRM started with pid=14, OS id=17989
VKRM started with pid=15, OS id=17991
Starting background process SVCB
SVCB started with pid=16, OS id=17993
Starting background process PMAN
PMAN started with pid=17, OS id=17995
Starting background process DIA0
DIA0 started with pid=18, OS id=17997
Starting background process DBW0
DBW0 started with pid=19, OS id=17999
Starting background process LGWR
LGWR started with pid=20, OS id=18001
Starting background process CKPT
CKPT started with pid=21, OS id=18003
LGWR slave LG00 created with pid=22, OS pid=18005
Starting background process SMON
SMON started with pid=23, OS id=18007
LGWR slave LG01 created with pid=24, OS pid=18009
Starting background process SMCO
SMCO started with pid=25, OS id=18011
Starting background process RECO
RECO started with pid=26, OS id=18013
Starting background process LREG
LREG started with pid=28, OS id=18017
Starting background process PXMN
Starting background process FENC
PXMN started with pid=30, OS id=18021
Starting background process MMON
FENC started with pid=31, OS id=18023
Starting background process MMNL
MMON started with pid=32, OS id=18025
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
MMNL started with pid=31, OS id=18027
starting up 1 shared server(s) ...
Starting background process TMON
ORACLE_BASE from environment = /opt/oracle
TMON started with pid=35, OS id=18033
2019-04-08 22:21:22.547000 +08:00
ALTER DATABASE   MOUNT
2019-04-08 22:21:24.834000 +08:00
Using default pga_aggregate_limit of 2048 MB
2019-04-08 22:21:26.680000 +08:00
Network throttle feature is disabled as mount time
Successful mount of redo thread 1, with mount id 2776128994
Database mounted in Exclusive Mode
Lost write protection disabled
Using STANDBY_ARCHIVE_DEST parameter default value as USE_DB_RECOVERY_FILE_DEST
Completed: ALTER DATABASE   MOUNT
ALTER DATABASE OPEN
Ping without log force is disabled:
  instance mounted in exclusive mode.
Endian type of dictionary set to little
LGWR: STARTING ARCH PROCESSES
Starting background process ARC0
ARC0 started with pid=38, OS id=18051
ARC0: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC0: Becoming a 'no FAL' ARCH
ARC0: Becoming the 'no SRL' ARCH
TT00: Gap Manager starting (PID:18053)
Errors in file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_lgwr_18001.trc:
ORA-00338: log 3 of thread 1 is more recent than control file
ORA-00312: online log 3 thread 1: '/opt/oracle/oradata/ORCLCDB/redo03.log'
Errors in file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_lgwr_18001.trc:
ORA-00338: log 3 of thread 1 is more recent than control file
ORA-00312: online log 3 thread 1: '/opt/oracle/oradata/ORCLCDB/redo03.log'
Errors in file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_ora_18045.trc:
ORA-00338: log 1 of thread  is more recent than control file
ORA-00312: online log 3 thread 1: '/opt/oracle/oradata/ORCLCDB/redo03.log'
USER (ospid: 18045): terminating the instance due to error 338
System state dump requested by (instance=1, osid=18045), summary=[abnormal instance termination].
System State dumped to trace file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_diag_17983_20190408222127.trc
Dumping diagnostic data in directory=[cdmp_20190408222127], requested by (instance=1, osid=18045), summary=[abnormal instance termination].
2019-04-08 22:21:29.008000 +08:00
Instance terminated by USER, pid = 18045
adrci>exit

尝试恢复

SQL> select group#,bytes/1024/1024,status from v$log;

    GROUP# BYTES/1024/1024 STATUS
---------- --------------- ----------------
         1             200 INACTIVE
         3             200 CURRENT
         2             200 INACTIVE

SQL> recover until cancel;
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

重建控制文件

SQL> alter database backup controlfile to trace;

Database altered.

SQL> show parameter user_dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest                       string      /opt/oracle/product/12.2.0.1/d
                                                 bhome_1/rdbms/log
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[oracle@oracle-12201-vagrant ~]$ cd $ORACLE_HOME/rdbms/log
[oracle@oracle-12201-vagrant log]$ ls -ltr|more
total 72
-rw-r-----. 1 oracle oinstall  959 Apr  7 15:57 orclcdb_ora_27928.trc
-rw-r-----. 1 oracle oinstall  959 Apr  7 15:59 orclcdb_ora_28109.trc
-rw-r-----. 1 oracle oinstall  959 Apr  7 15:59 orclcdb_ora_28209.trc
-rw-r-----. 1 oracle oinstall  959 Apr  7 16:00 orclcdb_ora_28494.trc
-rw-r-----. 1 oracle oinstall  120 Apr  7 16:01 qopatch.log
-rw-r-----. 1 oracle oinstall  959 Apr  7 16:03 orclcdb_ora_29982.trc
-rw-r-----. 1 oracle oinstall  959 Apr  7 16:04 orclcdb_ora_30520.trc
-rw-r-----. 1 oracle oinstall  958 Apr  8 19:35 orclcdb_ora_3162.trc
-rw-r-----. 1 oracle oinstall  958 Apr  8 20:27 orclcdb_ora_9241.trc
-rw-r-----. 1 oracle oinstall  960 Apr  8 20:38 orclcdb_ora_10212.trc
-rw-r-----. 1 oracle oinstall  960 Apr  8 20:51 orclcdb_ora_11233.trc
-rw-r-----. 1 oracle oinstall  960 Apr  8 21:16 orclcdb_ora_12919.trc
-rw-r-----. 1 oracle oinstall  960 Apr  8 21:30 orclcdb_ora_14152.trc
-rw-r-----. 1 oracle oinstall  960 Apr  8 22:05 orclcdb_ora_16513.trc
-rw-r-----. 1 oracle oinstall 6636 Apr  8 22:06 qopatch_log.log
-rw-r-----. 1 oracle oinstall  960 Apr  8 22:21 orclcdb_ora_17943.trc
-rw-r-----. 1 oracle oinstall  960 Apr  8 22:38 orclcdb_ora_18887.trc

再来一次,这回找对了文件位置:

SQL> alter database backup controlfile to trace;

Database altered.

SQL> oradebug setmypid;
Statement processed.
SQL> oradebug tracefile_name;
/opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_ora_20197.trc
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
[oracle@oracle-12201-vagrant 2019_04_08]$ cat /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_ora_20197.trc
Trace file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_ora_20197.trc
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
Build label:    RDBMS_12.2.0.1.0_LINUX.X64_170125
ORACLE_HOME:    /opt/oracle/product/12.2.0.1/dbhome_1
System name:    Linux
Node name:      oracle-12201-vagrant
Release:        4.14.35-1844.3.2.el7uek.x86_64
Version:        #2 SMP Mon Feb 25 17:43:37 PST 2019
Machine:        x86_64
Instance name: ORCLCDB
Redo thread mounted by this instance: 1
Oracle process number: 8
Unix process pid: 20197, image: oracle@oracle-12201-vagrant (TNS V1-V3)


*** 2019-04-08T23:02:02.280245+08:00 (CDB$ROOT(1))
*** SESSION ID:(17.19026) 2019-04-08T23:02:02.280284+08:00
*** CLIENT ID:() 2019-04-08T23:02:02.280293+08:00
*** SERVICE NAME:() 2019-04-08T23:02:02.280299+08:00
*** MODULE NAME:(sqlplus@oracle-12201-vagrant (TNS V1-V3)) 2019-04-08T23:02:02.280312+08:00
*** ACTION NAME:() 2019-04-08T23:02:02.280320+08:00
*** CLIENT DRIVER:(SQL*PLUS) 2019-04-08T23:02:02.280327+08:00
*** CONTAINER ID:(1) 2019-04-08T23:02:02.280334+08:00

-- The following are current System-scope REDO Log Archival related
-- parameters and can be included in the database initialization file.
--
-- LOG_ARCHIVE_DEST=''
-- LOG_ARCHIVE_DUPLEX_DEST=''
--
-- LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf
--
-- DB_UNIQUE_NAME="ORCLCDB"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'
-- LOG_ARCHIVE_MAX_PROCESSES=4
-- STANDBY_FILE_MANAGEMENT=MANUAL
-- STANDBY_ARCHIVE_DEST=?#/dbs/arch
-- FAL_CLIENT=''
-- FAL_SERVER=''
--
-- LOG_ARCHIVE_DEST_1='LOCATION=USE_DB_RECOVERY_FILE_DEST'
-- LOG_ARCHIVE_DEST_1='MANDATORY NOREOPEN NODELAY'
-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_1='NOREGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_1='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_1=ENABLE
--
-- Below are two sets of SQL statements, each of which creates a new
-- control file and uses it to open the database. The first set opens
-- the database with the NORESETLOGS option and should be used only if
-- the current versions of all online logs are available. The second
-- set opens the database with the RESETLOGS option and should be used
-- if online logs are unavailable.
-- The appropriate set of statements can be copied from the trace into
-- a script file, edited as necessary, and executed when there is a
-- need to re-create the control file.
--
--     Set #1. NORESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- Additional logs may be required for media recovery of offline
-- Use this only if the current versions of all online logs are
-- available.
-- WARNING! The current control file needs to be checked against
-- the datafiles to insure it contains the correct files. The
-- commands printed here may be missing log and/or data files.
-- Another report should be made after the database has been
-- successfully opened.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCLCDB" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/opt/oracle/oradata/ORCLCDB/redo01.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 2 '/opt/oracle/oradata/ORCLCDB/redo02.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 3 '/opt/oracle/oradata/ORCLCDB/redo03.log'  SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/opt/oracle/oradata/ORCLCDB/system01.dbf',
  '/opt/oracle/oradata/ORCLCDB/sysaux01.dbf',
  '/opt/oracle/oradata/ORCLCDB/undotbs01.dbf',
  '/opt/oracle/oradata/ORCLCDB/pdbseed/system01.dbf',
  '/opt/oracle/oradata/ORCLCDB/pdbseed/sysaux01.dbf',
  '/opt/oracle/oradata/ORCLCDB/users01.dbf',
  '/opt/oracle/oradata/ORCLCDB/pdbseed/undotbs01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/undotbs01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf'
CHARACTER SET AL32UTF8
;
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/u01/fra/ORCLCDB/archivelog/2019_04_08/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/u01/fra/ORCLCDB/archivelog/2019_04_08/o1_mf_1_1_%u_.arc';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE
-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;
-- Database can now be opened normally.
ALTER DATABASE OPEN;
-- Open all the PDBs.
ALTER PLUGGABLE DATABASE ALL OPEN;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/oradata/ORCLCDB/temp01.dbf' REUSE;
ALTER SESSION SET CONTAINER = PDB$SEED;
ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/oradata/ORCLCDB/pdbseed/temp012019-04-07_16-00-25-755-PM.dbf' REUSE;
ALTER SESSION SET CONTAINER = ORCLPDB1;
ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/temp01.dbf' REUSE;
ALTER SESSION SET CONTAINER = CDB$ROOT;
-- End of tempfile additions.
--
--     Set #2. RESETLOGS case
--
-- The following commands will create a new control file and use it
-- to open the database.
-- Data used by Recovery Manager will be lost.
-- The contents of online logs will be lost and all backups will
-- be invalidated. Use this only if online logs are damaged.
-- WARNING! The current control file needs to be checked against
-- the datafiles to insure it contains the correct files. The
-- commands printed here may be missing log and/or data files.
-- Another report should be made after the database has been
-- successfully opened.
-- After mounting the created controlfile, the following SQL
-- statement will place the database in the appropriate
-- protection mode:
--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ORCLCDB" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/opt/oracle/oradata/ORCLCDB/redo01.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 2 '/opt/oracle/oradata/ORCLCDB/redo02.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 3 '/opt/oracle/oradata/ORCLCDB/redo03.log'  SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/opt/oracle/oradata/ORCLCDB/system01.dbf',
  '/opt/oracle/oradata/ORCLCDB/sysaux01.dbf',
  '/opt/oracle/oradata/ORCLCDB/undotbs01.dbf',
  '/opt/oracle/oradata/ORCLCDB/pdbseed/system01.dbf',
  '/opt/oracle/oradata/ORCLCDB/pdbseed/sysaux01.dbf',
  '/opt/oracle/oradata/ORCLCDB/users01.dbf',
  '/opt/oracle/oradata/ORCLCDB/pdbseed/undotbs01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/undotbs01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf'
CHARACTER SET AL32UTF8
;
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/u01/fra/ORCLCDB/archivelog/2019_04_08/o1_mf_1_1_%u_.arc';
-- ALTER DATABASE REGISTER LOGFILE '/u01/fra/ORCLCDB/archivelog/2019_04_08/o1_mf_1_1_%u_.arc';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE USING BACKUP CONTROLFILE
-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;
-- Open all the PDBs.
ALTER PLUGGABLE DATABASE ALL OPEN;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/oradata/ORCLCDB/temp01.dbf' REUSE;
ALTER SESSION SET CONTAINER = PDB$SEED;
ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/oradata/ORCLCDB/pdbseed/temp012019-04-07_16-00-25-755-PM.dbf' REUSE;
ALTER SESSION SET CONTAINER = ORCLPDB1;
ALTER TABLESPACE TEMP ADD TEMPFILE '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/temp01.dbf' REUSE;
ALTER SESSION SET CONTAINER = CDB$ROOT;
-- End of tempfile additions.
--

*** 2019-04-08T23:02:10.376567+08:00 (CDB$ROOT(1))
Processing Oradebug command 'setmypid'

*** 2019-04-08T23:02:10.376641+08:00 (CDB$ROOT(1))
Oradebug command 'setmypid' console output: <none>

*** 2019-04-08T23:02:16.364730+08:00 (CDB$ROOT(1))
Processing Oradebug command 'tracefile_name'

*** 2019-04-08T23:02:16.364899+08:00 (CDB$ROOT(1))
Oradebug command 'tracefile_name' console output:
/opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_ora_20197.trc

在trace文件中截取创建控制文件一段,并存为control.sql文件:

CREATE CONTROLFILE REUSE DATABASE "ORCLCDB" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/opt/oracle/oradata/ORCLCDB/redo01.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 2 '/opt/oracle/oradata/ORCLCDB/redo02.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 3 '/opt/oracle/oradata/ORCLCDB/redo03.log'  SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/opt/oracle/oradata/ORCLCDB/system01.dbf',
  '/opt/oracle/oradata/ORCLCDB/sysaux01.dbf',
  '/opt/oracle/oradata/ORCLCDB/undotbs01.dbf',
  '/opt/oracle/oradata/ORCLCDB/pdbseed/system01.dbf',
  '/opt/oracle/oradata/ORCLCDB/pdbseed/sysaux01.dbf',
  '/opt/oracle/oradata/ORCLCDB/users01.dbf',
  '/opt/oracle/oradata/ORCLCDB/pdbseed/undotbs01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/undotbs01.dbf',
  '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf'
CHARACTER SET AL32UTF8
;

启动数据库,并重建控制文件:

SQL> startup nomount
ORACLE instance started.

Total System Global Area 1207959552 bytes
Fixed Size                  8792152 bytes
Variable Size             436209576 bytes
Database Buffers          754974720 bytes
Redo Buffers                7983104 bytes
SQL> @control.sql

Control file created.

分布恢复数据库ORCLCDB和ORCLPDB1,然后可以看到数据,说明恢复成功:

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/opt/oracle/oradata/ORCLCDB/system01.dbf'


SQL> startup
ORA-01081: cannot start already-running ORACLE - shut it down first
SQL> shutdown immediate
ORA-01109: database not open


Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1207959552 bytes
Fixed Size                  8792152 bytes
Variable Size             436209576 bytes
Database Buffers          754974720 bytes
Redo Buffers                7983104 bytes
Database mounted.
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/opt/oracle/oradata/ORCLCDB/system01.dbf'

SQL> recover database;
Media recovery complete.
SQL> alter database open;

Database altered.

SQL> show con_name;

CON_NAME
------------------------------
CDB$ROOT
SQL> select * from cdb_table;

         A
----------
         1
         2

SQL> alter session set container=pdb_table;
ERROR:
ORA-65011: Pluggable database PDB_TABLE does not exist.

SQL> alter session set container=orclpdb1;

Session altered.

SQL> select * from pdb_table;
select * from pdb_table
              *
ERROR at line 1:
ORA-01219: database or pluggable database not open: queries allowed on fixed
tables or views only


SQL> show con_name;

CON_NAME
------------------------------
ORCLPDB1
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 ORCLPDB1                       MOUNTED
SQL> alter pluggable database orclpdb1 open;
alter pluggable database orclpdb1 open
*
ERROR at line 1:
ORA-01113: file 9 needs media recovery
ORA-01110: data file 9: '/opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf'


SQL> recover database;
Media recovery complete.
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 ORCLPDB1                       MOUNTED
SQL> alter pluggable database orclpdb1 open;

Pluggable database altered.

SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         3 ORCLPDB1                       READ WRITE NO
SQL> select * from pdb_table;

         A
----------
         1
         2

最后,验证数据库一切正常

[oracle@oracle-12201-vagrant 2019_04_08]$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 23:20:07 2019

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


Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area 1207959552 bytes
Fixed Size                  8792152 bytes
Variable Size             436209576 bytes
Database Buffers          754974720 bytes
Redo Buffers                7983104 bytes
Database mounted.
Database opened.
SQL> show pdbs;

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB1                       READ WRITE NO
SQL> select * from cdb_table;

         A
----------
         1
         2

SQL> alter session set container=orclpdb1;

Session altered.

SQL> select * from pdb_table;

         A
----------
         1
         2

SQL> alter session set container=cdb$root;

Session altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

参考

  1. https://support.oracle.com/epmos/faces/DocContentDisplay?id=735106.1
  2. https://www.dummies.com/programming/databases/how-to-enable-and-maintain-oracle-12c-archives/
  3. https://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/283263.htm

猜你喜欢

转载自blog.csdn.net/stevensxiao/article/details/89107995