设置FRA用于归档

创建归档目录:

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

设置FRA:

[oracle@oracle-12201-vagrant ~]$ sqlplus / as sysdbaSQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 21:21:27 2019Copyright (c) 1982, 2016, Oracle.  All rights reserved.Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit ProductionSQL> 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 sysdbaSQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 21:29:37 2019Copyright (c) 1982, 2016, Oracle.  All rights reserved.Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit ProductionSQL> 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 archivelog2  ;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_083 directories, 0 files

插入数据,用于验证恢复

[oracle@oracle-12201-vagrant ~]$ sqlplus / as sysdbaSQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 21:37:34 2019Copyright (c) 1982, 2016, Oracle.  All rights reserved.Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit ProductionSQL> show con_nameCON_NAME
------------------------------
CDB$ROOT
SQL> select count(*) from cdb_table;COUNT(*)
----------0SQL> 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
------------------------------
ORCLPDB1SQL> select count(*) from pdb_table;COUNT(*)
----------0SQL> 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.dbf13 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.shreal    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 sysdbaSQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 22:05:39 2019Copyright (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_nameCON_NAME
------------------------------
CDB$ROOT
SQL> select count(*) from cdb_table;COUNT(*)
----------1SQL> 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(*)
----------1SQL> 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.shreal    0m42.060s
user    0m0.064s
sys     0m5.122s

启动数据库

[oracle@oracle-12201-vagrant ~]$ sqlplus / as sysdbaSQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 22:21:03 2019Copyright (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 ~]$ adrciADRCI: Release 12.2.0.1.0 - Production on Mon Apr 8 22:28:26 2019Copyright (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:00audit_file_dest          = "/opt/oracle/admin/ORCLCDB/adump"commit_wait              = "nowait"commit_logging           = "batch"audit_trail              = "NONE"db_name                  = "ORCLCDB"open_cursors             = 300pga_aggregate_target     = 384Mdiagnostic_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 INACTIVE3             200 CURRENT2             200 INACTIVESQL> 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_destNAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
user_dump_dest                       string      /opt/oracle/product/12.2.0.1/dbhome_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  ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 1024MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 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  ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 1024MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 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  ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 1024MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 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.sqlControl 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 openDatabase 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
----------12SQL> 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 onlySQL> 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
----------12

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

[oracle@oracle-12201-vagrant 2019_04_08]$ sqlplus / as sysdbaSQL*Plus: Release 12.2.0.1.0 Production on Mon Apr 8 23:20:07 2019Copyright (c) 1982, 2016, Oracle.  All rights reserved.Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit ProductionSQL> 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  NO3 ORCLPDB1                       READ WRITE NO
SQL> select * from cdb_table;A
----------12SQL> alter session set container=orclpdb1;Session altered.SQL> select * from pdb_table;A
----------12SQL> 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

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

  1. 查看mysql是否归档的命令_查看oracle数据库是否为归档模式

    查看oracle数据库是否为归档模式 [1] 1.select name,log_mode from v$database; NAME LOG_MODE ------------------ ---- ...

  2. oracle改成归档模式_将Oracle数据库改为归档模式并启用Rman备份

    如下Linux环境下对单节点数据库采用文件系统情况的配置归档模式过程. 首先查看数据库归档模式和磁盘使用情况,确定归档文件放到什么位置: [oracle@gisdbserver ~]$ sqlplus ...

  3. oracle非归档模式下如何备份,Oracle之RMAN数据库在非归档模式下的备份和恢复

    1.数据库在非归档模式下的备份 SQLgt; archive log list;数据库日志模式 非存档模式自动存档 禁用存档终点 USE_DB_RECOVERY_FIL 1.数据库在非归档模式下的备份 ...

  4. Oracle修改数据库为非归档模式

    操作步骤如下: 步骤 1 以oracle用户登录服务器,执行以下命令进入SQLPLUS. oracle@smgwrpt:~> sqlplus "/as sysdba" 步骤 ...

  5. Oracle数据库的冷备份和热备份

    1.冷备份 如果数据库可以正常关闭,而且允许关闭足够长的时间,那么就可以采用冷备份(脱机备份),可以是归档冷备份,也可以是非归档冷备份.其方法是首先关闭数据库,然后备份所有的物理文件,包括数据文件.控 ...

  6. 【设置Oracle 11Gr2 RAC的归档模式】

    数据库建立后缺省为非归档模式,为了使用RMAN执行热备份,需要手工将数据库切换成归档模式.通常情况下,归档模式的切换需要在数据库处于MOUNT EXCLUSIVE的状态下进行. RAC的特殊之处在于, ...

  7. oracle数据库扩大表空间,Oracle数据库手工扩大表空间

    Oracle数据库手工扩大表空间 1.首先查看表空间的名字和所属文件 select tablespace_name, file_id, file_name, round(bytes/(1024*102 ...

  8. mysql 自动归档,如何将数据库从非归档模式转为自动归档模式:

    这个问题小哥哥问过我,我一下卡住了,答不上来,他骂我,学了那么久,这么简单的东西你都不会?我低头默默无语!我确实没有反抗的权利,只能在被骂完之后赶紧学去!这个就是我的命,我的学习永远跟不上他们的步骤, ...

  9. RMAN数据库恢复 之归档模式有(无)备份-丢失数据文件的恢复

    1.归档模式有备份,丢失数据文件的恢复 归档模式有备份,不管丢失什么数据文件,直接在RMAN下RESTOER--->RECOVER--->OPEN即可. RMAN> STARUP M ...

最新文章

  1. 无人再谈CV:计算机视觉公司的困境
  2. imageloader 的 java.security.cert.CertPathValidatorException
  3. linux命令wget多个参数,wget 命令参数使用方法
  4. Unity3damp;amp;C#分布式游戏服务器ET框架介绍-组件式设计
  5. Servlet 过滤器笔记
  6. 2021年重庆市高考成绩查询时间复核,2021年重庆高考怎么查询是否被录取,具体录取时间安排...
  7. transform属性
  8. 一文读懂Netty的核心构成块
  9. 统计面要素中点要素的个数.
  10. python中对文件、文件夹,目录的基本操作
  11. Qt 的 linuxFB XCB KMS XCB Wayland
  12. keil5的暗色配色方案
  13. Android手机图片上传 选择不了本地照片 解决方案
  14. matlab航电系统仿真,航空航天和国防
  15. 增值税怎么用计算机算,什么是汽车税费计算器?我们如何通过网上使用这种计算器呢?...
  16. 一键清理电脑垃圾文件
  17. 超声波测距仪编程_51单片机控制的超声波测距仪程序
  18. 鸿蒙系统照样没有谷歌服务,曝华为Mate40 Pro+升级鸿蒙2.0系统 谷歌服务照样能用...
  19. 人工智能推动基础科学理论突破 人工智能推动基础科学理论突破
  20. python比较日期时间_python时间如何比较

热门文章

  1. 实体类使用@Builder,导致@ConfigurationProperties注入属性失败
  2. 深挖用户需求,教你4招搞定精准营销
  3. sap服务器迁移性能问题,专家详解SAP数据迁移的六个方法
  4. OpenGL编程轻松入门之显示例表
  5. 元器件的温度特性(电容、电感、晶振等)
  6. 漫画丨CTO不得不面对的9大困境
  7. 怎么找生物信息论文的数据,PubMed太有用了!
  8. java中jar包怎么下载
  9. 车载5G+4G多网聚合通信解决方案
  10. linux 网络监测工具