rebuild controlfile 控制文件创建脚本

经常特殊情况,控制文件损坏,需要重建控制文件。

1:在数据库OPEN情况下到处创建控制文件的脚本

  1. alter database backup controlfile to trace;

2:trace 文件的路径:

$ORACLE_BASE/admin/mis/udump

3:查看

$cat mis_ora_3618.trc|more

/oracle/admin/mis/udump/mis_ora_3618.trc
Oracle9i Enterprise Edition Release 9.2.0.6.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.6.0 - Production
ORACLE_HOME = /oracle/product/database
System name: Linux
Node name: DELL
Release: 2.4.21-32.EL
Version: #1 SMP Fri Apr 15 21:02:58 EDT 2005
Machine: x86_64
Instance name: mis
Redo thread mounted by this instance: 1
Oracle process number: 52
Unix process pid: 3618, image: oracle@DELL (TNS V1-V3)

*** SESSION ID:(121.51596) 2011-03-08 17:32:41.076
*** 2011-03-08 17:32:41.076
# 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=arch%s.arc
# REMOTE_ARCHIVE_ENABLE=TRUE
# LOG_ARCHIVE_START=TRUE
# LOG_ARCHIVE_MAX_PROCESSES=2
# STANDBY_FILE_MANAGEMENT=MANUAL
# STANDBY_ARCHIVE_DEST=?/dbs/arch
# FAL_CLIENT=''
# FAL_SERVER=''
#
# LOG_ARCHIVE_DEST_1='LOCATION=/oracle/product/database/dbs/arch'
# LOG_ARCHIVE_DEST_1='MANDATORY NOREOPEN NODELAY'
# LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM SYNC'
# LOG_ARCHIVE_DEST_1='NOREGISTER NOALTERNATE NODEPENDENCY'
# LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED'
# 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 the recovery manager will be lost. Additional logs may
# be required for media recovery of offline data files. Use this
# only if the current version of all online logs are available.
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "MIS" NORESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 30
MAXINSTANCES 1
MAXLOGHISTORY 454
LOGFILE
GROUP 1 (
'/oracle/oradata/mis/redo01.log',
'/oracle/oradata/mis/log_01.log'
) SIZE 10M,
GROUP 2 (
'/oracle/oradata/mis/redo02.log',
'/oracle/oradata/mis/redo_02.log'
) SIZE 10M,
GROUP 3 (
'/oracle/oradata/mis/redo03.log',
'/oracle/oradata/mis/redo_03.log'
) SIZE 10M,
GROUP 4 (
'/oracle/oradata/mis/log04.log',
'/oracle/oradata/mis/redo04.log'
) SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'/oracle/oradata/mis/system01.dbf',
'/oracle/oradata/mis/undotbs01.dbf',
'/oracle/oradata/mis/indx01.dbf',
'/oracle/oradata/mis/tools01.dbf',
'/oracle/oradata/mis/users01.dbf',
'/oracle/oradata/mis/mis01.dbf',
'/oracle/oradata/mis/mis02.dbf',
'/oracle/oradata/mis/mis03.dbf',
'/oracle/oradata/mis/undotbs02.dbf',
'/oracle/oradata/mis/mis04.dbf',
'/oracle/oradata/mis/TEMP01.dbf',
'/oracle/oradata/mis/mis05.dbf',
'/oracle/oradata/mis/mis06.dbf',
'/oracle/oradata/mis/mis07.dbf',
'/oracle/oradata/mis/DISCOVER01.dbf',
'/oracle/oradata/mis/mis08.dbf',
'/oracle/oradata/mis/mis09.dbf',
'/oracle/oradata/mis/system02.dbf',
'/oracle/oradata/mis/mis10.dbf',
'/oracle/oradata/mis/mis11.dbf',
'/oracle/oradata/mis/mis12.dbf',
'/oracle/oradata/mis/misidx01.dbf',
'/oracle/oradata/mis/temp02.dbf',
'/oracle/oradata/mis/mis13.dbf',
'/oracle/oradata/mis/misidx02.dbf',
'/oracle/oradata/mis/discover02.dbf',
'/oracle/oradata/mis/perfstat01.dbf',
'/oracle/oradata/mis/mis14.dbf',
'/oracle/oradata/mis/misidx03.dbf',
'/oracle/oradata/mis/misidx04.dbf'
CHARACTER SET ZHS16GBK
;
# Configure RMAN configuration record 1
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE','DISK TO ''/misbak/control%F''');
# Configure RMAN configuration record 2
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');
# 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 TEMP101 ADD TEMPFILE '/oracle/oradata/mis/temp101_3.dbf'
SIZE 4096M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE TEMP101 ADD TEMPFILE '/oracle/oradata/mis/temp101_02.dbf'
SIZE 4096M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE TEMP101 ADD TEMPFILE '/oracle/oradata/mis/TEMP101.dbf'
SIZE 1024M REUSE AUTOEXTEND OFF;
# End of tempfile additions.
#
# Set #2. RESETLOGS case
#
# The following commands will create a new control file and use it
# to open the database.
# The contents of online logs will be lost and all backups will
# be invalidated. Use this only if online logs are damaged.
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "MIS" RESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 30
MAXINSTANCES 1
MAXLOGHISTORY 454
LOGFILE
GROUP 1 (
'/oracle/oradata/mis/redo01.log',
'/oracle/oradata/mis/log_01.log'
) SIZE 10M,
GROUP 2 (
'/oracle/oradata/mis/redo02.log',
'/oracle/oradata/mis/redo_02.log'
) SIZE 10M,
GROUP 3 (
'/oracle/oradata/mis/redo03.log',
'/oracle/oradata/mis/redo_03.log'
) SIZE 10M,
GROUP 4 (
'/oracle/oradata/mis/log04.log',
'/oracle/oradata/mis/redo04.log'
) SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'/oracle/oradata/mis/system01.dbf',
'/oracle/oradata/mis/undotbs01.dbf',
'/oracle/oradata/mis/indx01.dbf',
'/oracle/oradata/mis/tools01.dbf',
'/oracle/oradata/mis/users01.dbf',
'/oracle/oradata/mis/mis01.dbf',
'/oracle/oradata/mis/mis02.dbf',
'/oracle/oradata/mis/mis03.dbf',
'/oracle/oradata/mis/undotbs02.dbf',
'/oracle/oradata/mis/mis04.dbf',
'/oracle/oradata/mis/TEMP01.dbf',
'/oracle/oradata/mis/mis05.dbf',
'/oracle/oradata/mis/mis06.dbf',
'/oracle/oradata/mis/mis07.dbf',
'/oracle/oradata/mis/DISCOVER01.dbf',
'/oracle/oradata/mis/mis08.dbf',
'/oracle/oradata/mis/mis09.dbf',
'/oracle/oradata/mis/system02.dbf',
'/oracle/oradata/mis/mis10.dbf',
'/oracle/oradata/mis/mis11.dbf',
'/oracle/oradata/mis/mis12.dbf',
'/oracle/oradata/mis/misidx01.dbf',
'/oracle/oradata/mis/temp02.dbf',
'/oracle/oradata/mis/mis13.dbf',
'/oracle/oradata/mis/misidx02.dbf',
'/oracle/oradata/mis/discover02.dbf',
'/oracle/oradata/mis/perfstat01.dbf',
'/oracle/oradata/mis/mis14.dbf',
'/oracle/oradata/mis/misidx03.dbf',
'/oracle/oradata/mis/misidx04.dbf'
CHARACTER SET ZHS16GBK
;
# Configure RMAN configuration record 1
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE','DISK TO ''/misbak/control%F''');
# Configure RMAN configuration record 2
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');
# 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;
# Commands to add tempfiles to temporary tablespaces.
# Online tempfiles have complete space information.
# Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP101 ADD TEMPFILE '/oracle/oradata/mis/temp101_3.dbf'
SIZE 4096M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE TEMP101 ADD TEMPFILE '/oracle/oradata/mis/temp101_02.dbf'
SIZE 4096M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE TEMP101 ADD TEMPFILE '/oracle/oradata/mis/TEMP101.dbf'
SIZE 1024M REUSE AUTOEXTEND OFF;
# End of tempfile additions.
#

5:脚本有两种情况的创建语句:

1:noresetlogs case

2: resetlogs case

第一段sql是在所有online redolog没有丢失,以noresetlogs选项打开数据库的情况下使用的。第二段则是在丢失了online redolog需要resetlogs的情况下使用。

6:一般是用 noresetlogs

创建一个脚本(将这段code 复制过来就可以了)

vi re_bulid.sql

CREATE CONTROLFILE REUSE DATABASE "MIS" NORESETLOGS ARCHIVELOG
-- SET STANDBY TO MAXIMIZE PERFORMANCE
MAXLOGFILES 16
MAXLOGMEMBERS 2
MAXDATAFILES 30
MAXINSTANCES 1
MAXLOGHISTORY 454
LOGFILE
GROUP 1 (
'/oracle/oradata/mis/redo01.log',
'/oracle/oradata/mis/log_01.log'
) SIZE 10M,
GROUP 2 (
'/oracle/oradata/mis/redo02.log',
'/oracle/oradata/mis/redo_02.log'
) SIZE 10M,
GROUP 3 (
'/oracle/oradata/mis/redo03.log',
'/oracle/oradata/mis/redo_03.log'
) SIZE 10M,
GROUP 4 (
'/oracle/oradata/mis/log04.log',
'/oracle/oradata/mis/redo04.log'
) SIZE 100M
-- STANDBY LOGFILE
DATAFILE
'/oracle/oradata/mis/system01.dbf',
'/oracle/oradata/mis/undotbs01.dbf',
'/oracle/oradata/mis/indx01.dbf',
'/oracle/oradata/mis/tools01.dbf',
'/oracle/oradata/mis/users01.dbf',
'/oracle/oradata/mis/mis01.dbf',
'/oracle/oradata/mis/mis02.dbf',
'/oracle/oradata/mis/mis03.dbf',
'/oracle/oradata/mis/undotbs02.dbf',
'/oracle/oradata/mis/mis04.dbf',
'/oracle/oradata/mis/TEMP01.dbf',
'/oracle/oradata/mis/mis05.dbf',
'/oracle/oradata/mis/mis06.dbf',
'/oracle/oradata/mis/mis07.dbf',
'/oracle/oradata/mis/DISCOVER01.dbf',
'/oracle/oradata/mis/mis08.dbf',
'/oracle/oradata/mis/mis09.dbf',
'/oracle/oradata/mis/system02.dbf',
'/oracle/oradata/mis/mis10.dbf',
'/oracle/oradata/mis/mis11.dbf',
'/oracle/oradata/mis/mis12.dbf',
'/oracle/oradata/mis/misidx01.dbf',
'/oracle/oradata/mis/temp02.dbf',
'/oracle/oradata/mis/mis13.dbf',
'/oracle/oradata/mis/misidx02.dbf',
'/oracle/oradata/mis/discover02.dbf',
'/oracle/oradata/mis/perfstat01.dbf',
'/oracle/oradata/mis/mis14.dbf',
'/oracle/oradata/mis/misidx03.dbf',
'/oracle/oradata/mis/misidx04.dbf'
CHARACTER SET ZHS16GBK

7:重建控制文件条件:

startup nomount

8:Other tempfiles may require adjustment.

ALTER TABLESPACE TEMP101 ADD TEMPFILE '/oracle/oradata/mis/temp101_3.dbf'
SIZE 4096M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE TEMP101 ADD TEMPFILE '/oracle/oradata/mis/temp101_02.dbf'
SIZE 4096M REUSE AUTOEXTEND OFF;
ALTER TABLESPACE TEMP101 ADD TEMPFILE '/oracle/oradata/mis/TEMP101.dbf'
SIZE 1024M REUSE AUTOEXTEND OFF;

这个情况就是临时表空间需要在OPEN以后手动创建。

9:也许还需要restore datafile 和recovery datafile

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22934571/viewspace-1046995/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22934571/viewspace-1046995/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值