控制文件是 Oracle 数据库用来查找数据库文件,并从总体上管理数据库状态的根文件
包括
- 数据库名称和数据库唯一标识符(DBID)
- 创建数据库的时间戳
- 有关数据文件、联机重做日志文件、和归档重做日志文件的信息
- 表空间信息
- RMAN备份
将控制文件备份到trace
SYS@TEST>alter database backup controlfile to trace;
Database altered.
编写查找trace文件脚本
SYS@TEST>!vi gettrcname.sql
SELECT d.VALUE
|| '/'
|| LOWER (RTRIM (i.INSTANCE, CHR (0)))
|| '_ora_'
|| p.spid
|| '.trc' trace_file_name
FROM (SELECT p.spid
FROM SYS.v$mystat m, SYS.v$session s, SYS.v$process p
WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
(SELECT t.INSTANCE
FROM SYS.v$thread t, SYS.v$parameter v
WHERE v.NAME = 'thread'
AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
(SELECT VALUE
FROM SYS.v$parameter
WHERE NAME = 'user_dump_dest') d
/
查找trace文件
TRACE_FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/diag/rdbms/test/TEST/trace/test_ora_8420.trc
查看
[oracle@TEST trace]$ cat /u01/app/oracle/diag/rdbms/test/TEST/trace/TEST_ora_8420.trc
Trace file /u01/app/oracle/diag/rdbms/test/TEST/trace/TEST_ora_8420.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1
System name: Linux
Node name: TEST
Release: 2.6.32-100.26.2.el5
Version: #1 SMP Tue Jan 18 20:11:49 EST 2011
Machine: x86_64
VM name: VMWare Version: 6
Instance name: TEST
Redo thread mounted by this instance: 1
Oracle process number: 19
Unix process pid: 8420, image: oracle@TEST (TNS V1-V3)
*** 2016-09-06 11:12:38.496
*** SESSION ID:(1.5) 2016-09-06 11:12:38.496
*** CLIENT ID:() 2016-09-06 11:12:38.496
*** SERVICE NAME:() 2016-09-06 11:12:38.496
*** MODULE NAME:(sqlplus@TEST (TNS V1-V3)) 2016-09-06 11:12:38.496
*** ACTION NAME:() 2016-09-06 11:12:38.496
-- 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.arc
--
-- DB_UNIQUE_NAME="TEST"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE'
-- LOG_ARCHIVE_CONFIG='DG_CONFIG=("PROD")'
-- LOG_ARCHIVE_MAX_PROCESSES=4
-- STANDBY_FILE_MANAGEMENT=AUTO
-- STANDBY_ARCHIVE_DEST=?/dbs/arch
-- FAL_CLIENT=''
-- FAL_SERVER=15
--
-- LOG_ARCHIVE_DEST_2='SERVICE=15'
-- LOG_ARCHIVE_DEST_2='OPTIONAL REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_2='LGWR AFFIRM NOEXPEDITE NOVERIFY ASYNC=0'
-- LOG_ARCHIVE_DEST_2='REGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_2='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED'
-- LOG_ARCHIVE_DEST_2='DB_UNIQUE_NAME=PROD'
-- LOG_ARCHIVE_DEST_2='VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)'
-- LOG_ARCHIVE_DEST_STATE_2=ENABLE
--
-- LOG_ARCHIVE_DEST_1='LOCATION=/u01/app/oracle/FRA'
-- LOG_ARCHIVE_DEST_1='OPTIONAL REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_1='REGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED'
-- LOG_ARCHIVE_DEST_1='DB_UNIQUE_NAME=TEST'
-- 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.
-- 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 "TEST" NORESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/TEST/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/u01/app/oracle/oradata/TEST/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/TEST/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
-- GROUP 4 '/u01/app/oracle/oradata/TEST/sredo04.log' SIZE 20M BLOCKSIZE 512,
-- GROUP 5 '/u01/app/oracle/oradata/TEST/sredo05.log' SIZE 20M BLOCKSIZE 512,
-- GROUP 6 '/u01/app/oracle/oradata/TEST/sredo06.log' SIZE 20M BLOCKSIZE 512,
-- GROUP 7 '/u01/app/oracle/oradata/TEST/sredo07.log' SIZE 20M BLOCKSIZE 512
DATAFILE
'/u01/app/oracle/oradata/TEST/system01.dbf',
'/u01/app/oracle/oradata/TEST/sysaux01.dbf',
'/u01/app/oracle/oradata/TEST/users01.dbf',
'/u01/app/oracle/oradata/TEST/example01.dbf',
'/u01/app/oracle/oradata/TEST/undotbs2.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/app/oracle/FRA/1_1_824297850.arc';
-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/FRA/1_1_920763536.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;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp01.dbf' REUSE;
ALTER TABLESPACE TEMP1 ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp_01.dbf' REUSE;
ALTER TABLESPACE TEMP2 ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp_02.dbf' REUSE;
-- End of tempfile additions.
--
--
--
----------------------------------------------------------
-- The following script can be used on the standby database
-- to re-populate entries for a standby controlfile created
-- on the primary and copied to the standby site.
----------------------------------------------------------
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo04.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo05.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo06.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo07.log'
SIZE 20M BLOCKSIZE 512 REUSE;
-- 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.
-- 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 "TEST" RESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/TEST/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/u01/app/oracle/oradata/TEST/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/TEST/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
-- GROUP 4 '/u01/app/oracle/oradata/TEST/sredo04.log' SIZE 20M BLOCKSIZE 512
DATAFILE
'/u01/app/oracle/oradata/TEST/system01.dbf',
'/u01/app/oracle/oradata/TEST/sysaux01.dbf',
'/u01/app/oracle/oradata/TEST/users01.dbf',
'/u01/app/oracle/oradata/TEST/example01.dbf',
'/u01/app/oracle/oradata/TEST/undotbs2.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/app/oracle/FRA/1_1_824297850.arc';
-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/FRA/1_1_920763536.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
-- Create log files for threads other than thread one.
;
-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp01.dbf' REUSE;
ALTER TABLESPACE TEMP1 ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp_01.dbf' REUSE;
ALTER TABLESPACE TEMP2 ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp_02.dbf' REUSE;
-- End of tempfile additions.
--
--
--
----------------------------------------------------------
-- The following script can be used on the standby database
-- to re-populate entries for a standby controlfile created
-- on the primary and copied to the standby site.
----------------------------------------------------------
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo04.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo05.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo06.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo07.log'
SIZE 20M BLOCKSIZE 512 REUSE;
从startup nomount开始 依次保留LOGFILE、DATAFILE、RECOVER DATABASE等
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/u01/app/oracle/oradata/TEST/redo01.log' SIZE 50M BLOCKSIZE 512,
GROUP 2 '/u01/app/oracle/oradata/TEST/redo02.log' SIZE 50M BLOCKSIZE 512,
GROUP 3 '/u01/app/oracle/oradata/TEST/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
-- GROUP 4 '/u01/app/oracle/oradata/TEST/sredo04.log' SIZE 20M BLOCKSIZE 512,
-- GROUP 5 '/u01/app/oracle/oradata/TEST/sredo05.log' SIZE 20M BLOCKSIZE 512,
-- GROUP 6 '/u01/app/oracle/oradata/TEST/sredo06.log' SIZE 20M BLOCKSIZE 512,
-- GROUP 7 '/u01/app/oracle/oradata/TEST/sredo07.log' SIZE 20M BLOCKSIZE 512
DATAFILE
'/u01/app/oracle/oradata/TEST/system01.dbf',
'/u01/app/oracle/oradata/TEST/sysaux01.dbf',
'/u01/app/oracle/oradata/TEST/users01.dbf',
'/u01/app/oracle/oradata/TEST/example01.dbf',
'/u01/app/oracle/oradata/TEST/undotbs2.dbf'
CHARACTER SET AL32UTF8
;
RECOVER DATABASE
ALTER SYSTEM ARCHIVE LOG ALL;
ALTER DATABASE OPEN;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp01.dbf' REUSE;
ALTER TABLESPACE TEMP1 ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp_01.dbf' REUSE;
ALTER TABLESPACE TEMP2 ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp_02.dbf' REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo04.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo05.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo06.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo07.log'
SIZE 20M BLOCKSIZE 512 REUSE;
数据库启动到nomount状态
SYS@TEST>startup nomount
ORACLE instance started.
Total System Global Area 1653518336 bytes
Fixed Size 2253784 bytes
Variable Size 1006636072 bytes
Database Buffers 637534208 bytes
Redo Buffers 7094272 bytes
11:47:41 SYS@TEST>CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS FORCE LOGGING ARCHIVELOG
11:50:26 2 MAXLOGFILES 16
11:50:26 3 MAXLOGMEMBERS 3
11:50:26 4 MAXDATAFILES 100
11:50:26 5 MAXINSTANCES 8
11:50:26 6 MAXLOGHISTORY 292
11:50:26 7 LOGFILE
11:50:26 8 GROUP 1 '/u01/app/oracle/oradata/TEST/redo01.log' SIZE 50M BLOCKSIZE 512,
11:50:26 9 GROUP 2 '/u01/app/oracle/oradata/TEST/redo02.log' SIZE 50M BLOCKSIZE 512,
11:50:26 10 GROUP 3 '/u01/app/oracle/oradata/TEST/redo03.log' SIZE 50M BLOCKSIZE 512
11:50:26 11 -- STANDBY LOGFILE
11:50:26 12 -- GROUP 4 '/u01/app/oracle/oradata/TEST/sredo04.log' SIZE 20M BLOCKSIZE 512,
11:50:26 13 -- GROUP 5 '/u01/app/oracle/oradata/TEST/sredo05.log' SIZE 20M BLOCKSIZE 512,
11:50:26 14 -- GROUP 6 '/u01/app/oracle/oradata/TEST/sredo06.log' SIZE 20M BLOCKSIZE 512,
11:50:26 15 -- GROUP 7 '/u01/app/oracle/oradata/TEST/sredo07.log' SIZE 20M BLOCKSIZE 512
11:50:26 16 DATAFILE
11:50:26 17 '/u01/app/oracle/oradata/TEST/system01.dbf',
11:50:26 18 '/u01/app/oracle/oradata/TEST/sysaux01.dbf',
11:50:26 19 '/u01/app/oracle/oradata/TEST/users01.dbf',
11:50:26 20 '/u01/app/oracle/oradata/TEST/example01.dbf',
11:50:26 21 '/u01/app/oracle/oradata/TEST/undotbs2.dbf'
11:50:26 22 CHARACTER SET AL32UTF8
11:50:26 23 ;
RECOVER DATABASE
ALTER SYSTEM ARCHIVE LOG ALL;
ALTER DATABASE OPEN;
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp01.dbf' REUSE;
ALTER TABLESPACE TEMP1 ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp_01.dbf' REUSE;
ALTER TABLESPACE TEMP2 ADD TEMPFILE '/u01/app/oracle/oradata/TEST/temp_02.dbf' REUSE;
Control file created.
11:50:26 SYS@TEST>ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo04.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ORA-00283: recovery session canceled due to errors
ORA-00264: no recovery required
11:50:26 SYS@TEST>ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo05.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo06.log'
SIZE 20M BLOCKSIZE 512 REUSE;
ALTER DATABASE ADD STANDBY LOGFILE '/u01/app/oracle/oradata/TEST/sredo07.log'
SIZE 20M BLOCKSIZE 512 REUSE;
System altered.
11:50:38 SYS@TEST>
Database altered.
11:50:40 SYS@TEST>
Tablespace altered.
11:50:40 SYS@TEST>
Tablespace altered.
11:50:40 SYS@TEST>
Tablespace altered.
11:50:40 SYS@TEST>11:50:40 2
Database altered.
11:50:40 SYS@TEST>11:50:40 2
Database altered.
11:50:41 SYS@TEST>11:50:41 2
Database altered.
11:50:41 SYS@TEST>11:50:41 2
Database altered.