利用trace重建控制文件

控制文件是 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文件

SYS@TEST>@gettrcname

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.




猜你喜欢

转载自blog.csdn.net/whb234174124/article/details/52629232