重建控制文件具体解释

简介:
完整图文最新版
 
创造“重建控制文件脚本”须要在mount或open下进行。

alter database backup controlfile to trace as '/tmp/ctl..sql';

运行“重建控制文件脚本”须要在nomount的时候。
 

-- 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="gs01ehis"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'
-- LOG_ARCHIVE_MAX_PROCESSES=2
-- STANDBY_FILE_MANAGEMENT=MANUAL
-- STANDBY_ARCHIVE_DEST=?/dbs/arch
-- FAL_CLIENT=''
-- FAL_SERVER=''
--
-- LOG_ARCHIVE_DEST_1='LOCATION=/paic/stg/oracle/10g/app102056/oracle/product/10.2.0/dbs/arch'
-- LOG_ARCHIVE_DEST_1='MANDATORY NOREOPEN NODELAY'
-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM EXPEDITE 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.

-- 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 "GS01EHIS" NORESETLOGS FORCE LOGGING NOARCHIVELOG
    MAXLOGFILES 32
    MAXLOGMEMBERS 3
    MAXDATAFILES 800
    MAXINSTANCES 8
    MAXLOGHISTORY 18696
LOGFILE
  GROUP 1 '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/redo01.log'  SIZE 100M,
  GROUP 2 '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/redo02.log'  SIZE 100M,
  GROUP 3 '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/redo03.log'  SIZE 100M
-- STANDBY LOGFILE

DATAFILE
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/system01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/undotbs01.dbf',
   '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/system01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/undotbs01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/sysaux01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/users01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/auddata01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/dbadata01.dbf'
CHARACTER SET ZHS16GBK
;

- 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 '/paic/stg/oracle/10g/app102056/oracle/product/10.2.0/dbs/arch1_1_807985002.dbf';
-- ALTER DATABASE REGISTER LOGFILE '/paic/stg/oracle/10g/app102056/oracle/product/10.2.0/dbs/arch1_1_807987054.dbf';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE

-- Set Database Guard and/or Supplemental Logging
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
-- Database can now be opened normally.
ALTER DATABASE OPEN;

-- Files in read-only tablespaces are now named.
ALTER DATABASE RENAME FILE 'MISSING00030'
  TO '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/fwy01.dbf';

-- Online the files in read-only tablespaces.
ALTER TABLESPACE "FWY01" ONLINE;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/temp01.dbf' REUSE;
-- 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.

-- 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 "GS01EHIS" RESETLOGS FORCE LOGGING NOARCHIVELOG
    MAXLOGFILES 32
    MAXLOGMEMBERS 3
    MAXDATAFILES 800
    MAXINSTANCES 8
    MAXLOGHISTORY 18696
LOGFILE
  GROUP 1 '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/redo01.log'  SIZE 100M,
  GROUP 2 '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/redo02.log'  SIZE 100M,
  GROUP 3 '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/redo03.log'  SIZE 100M
-- STANDBY LOGFILE

DATAFILE
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/system01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/undotbs01.dbf',
     '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/system01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/undotbs01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/sysaux01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/users01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/auddata01.dbf',
  '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/dbadata01.dbf'
CHARACTER SET ZHS16GBK
;
-- 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.
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE '/paic/stg/oracle/10g/app102056/oracle/product/10.2.0/dbs/arch1_1_807985002.dbf';
-- ALTER DATABASE REGISTER LOGFILE '/paic/stg/oracle/10g/app102056/oracle/product/10.2.0/dbs/arch1_1_807987054.dbf';
-- 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

-- Set Database Guard and/or Supplemental Logging
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
-- Database can now be opened zeroing the online logs.
ALTER DATABASE OPEN RESETLOGS;

-- Files in read-only tablespaces are now named.
ALTER DATABASE RENAME FILE 'MISSING00030'
  TO '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/fwy01.dbf';

-- Online the files in read-only tablespaces.
ALTER TABLESPACE "FWY01" ONLINE;
-- Commands to add tempfiles to temporary tablespaces.
-- Online tempfiles have complete space information.
-- Other tempfiles may require adjustment.
ALTER TABLESPACE TEMP ADD TEMPFILE '/paic/drsh101/stg/ehis/data/oradata/gs01ehis/temp01.dbf' REUSE;
-- End of tempfile additions.

 
主要分为两部分,resetlogs也有noresetlogs的重建控制文件脚本。假设想单独要某部分,分别运行下面语句就可以。
alter database backup controlfile to trace as '/tmp/ctl_1.sql' noresetlogs;
alter database backup controlfile to trace as '/tmp/ctl_1.sql' resetlogs;

以下分别来解说。红框的几种选项。
重建控制文件的时候会去数据文件头读db_name。reuse是会參考数据文件头的db_name,而set会将数据文件头的db_name都改成脚本中指定的database "ZXRRIN"
。

SET还是REUSE
假如我选reuse database "ZXRRIN2",而数据文件头是ZXRRIN2,那么会报例如以下错误。
ORA-01503: CREATE CONTROLFILE failed
ORA-01161: database name ZXRRIN in file header does not match given name of
ZXRRIN2
ORA-01110: data file 1: '/oradata/zxrrin/zxrrin/system01.dbf'
所以。仅仅有数据文件头的database name与參数文件的db_name一致。才干在重建控制文件时用reuse。

当然,用set也没关系。仅仅是将数据文件头的db_name重写成同样的。就如update t set i=3 where i=3一样。假设想改变数据文件头的db_name使他们与起库參数的db_name一致,就当然得用set咯。


database "ZXRRIN"
database "ZXRRIN"指定的db_name。要跟起库參数文件的db_name一致。重建控制文件才干成功。
这是必须的。而跟REUSE还是SET等没关系。所以不能用A1起库,然后重建控制文件成A2的db_name哦。


noresetlogs还是resetlogs
重建conrolfile时,假如用的是noresetlogs的选项。那么controlfile里面的系统scn号。以及controlfile里面记录的数据文件scn号。来自Online logs中的Current log头。

 所以这个操作的前提是。在线日志完善没有损坏。而且,不会擦除redo log file中的内容与重置redo头的scn号。起库的时候,仅仅能alter database open,而不能alter database open resetlogs。否则会报这个错。

SQL> alter database open noresetlogs;
alter database open noresetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
所以,在重建控制文件时选择noresetlogs,oracle就会觉得你想告诉他。“我非常可能是不一致关闭的”,既然是不一致关闭。那怎么能alter database open resetlogs呢。所以会报上面的错。
在运行”重建控制文件脚本“的时候假设不须要在线重做日志的话能够用resetlogs选项。选择resetlogs,会将redo log file中的内容清空。sequence#由1算起。重建过程中,控制文件里datafile Checkpoint来自各数据文件头。而controlfile中记录的系统scn,会被设为0.能够通过select checkpoint_change#  from v$database;看出来。

NOARCHIVELOG还是ARCHIVELOG
重建控制文件脚本中,NOARCHIVELOG与ARCHIVELOG字段,选择重建的控制文件是使库不归档或者归档的。

一个数据库是否开启归档。是在控制文件中面辨析的。


几者之间的关系
假设要用set,那么一定要跟resetlogs那一part。由于set会改数据文件头的db_name。那么redo log file中的日志已经没用了,由于应用日志时必须匹配db_name的。
假如用set配noresetlogs会出现报错:
ORA-01223: RESETLOGS must be specified to set a new database name

关于tempfile
重建的控制文件不包括temp文件。所以重建控制文件脚本中有例如以下语句。
ALTER TABLESPACE TEMP ADD TEMPFILE '/paic/drsh101/stg/ehis/d ata/oradata/gs01ehis/temp01.dbf' REUSE;
我们也能够拷贝出来,等open库后再运行。

重建控制文件的时候。对应的redo与datafile文件必须已经存在,datafile文件必须是一致的。
而tempfile是不必要存在的, 起库后,要为temp表空间加入tempfile。否则temp表空间里面空空如也。
ALTER TABLESPACE TEMP ADD TEMPFILE '/oradata/zxrrin/zxrrin/temp01.dbf' size 100m reuse autoextend on;
加上reuse是非常好的,假设已经存在就覆盖掉,假设不存在就新建上。


这个命令能够备份控制文件成二进制文件。
ALTER DATABASE BACKUP CONTROLFILE TO '/tmp/fwy.ctl';











本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5099959.html,如需转载请自行联系原作者

相关文章
|
IDE 开发工具 C++
VS2015+Qt5.9.8编译报错:error MSB6006: “cmd.exe”已退出,代码为 2
VS2015+Qt5.9.8编译报错:error MSB6006: “cmd.exe”已退出,代码为 2
3830 0
|
Docker 容器 应用服务中间件
Docker 客户端是如何拉取镜像的?
Docker客户端拉取镜像的过程遵循Docker Registry HTTP API V2规范,主要分为解析镜像名、鉴权、获取Manifest、拉取Layers及本地合并五个步骤。它与Docker Hub、Harbor等仓库通信,确保镜像正确下载和构建。
1903 59
|
10月前
|
负载均衡 应用服务中间件 Nacos
Nacos配置中心
本章深入讲解Nacos配置中心实战,涵盖配置管理、热更新、共享配置及优先级规则,并通过搭建Nacos集群实现高可用部署,结合Spring Cloud Alibaba实现微服务动态配置,提升系统可维护性与稳定性。
387 0
|
传感器 人工智能 物联网
无线气体自动灭火系统在数据机房的应用,沃思智能
无线气体自动灭火系统融合物联网与AI技术,实现火灾秒级响应、智能判断与自动灭火,广泛应用于数据中心、电力设施等高价值场所。系统无需布线、安装灵活,支持远程监控与多设备联动,显著降低误报率与运维成本。随着5G与绿色灭火剂发展,正迈向“预测性防护”新阶段,助力消防进入智能化时代。(238字)
535 1
数电模电(三) 时序电路触发器 基本RS触发器 同步RS触发器 主从RS触发器 JK触发器 主从D触发器
数电模电(三) 时序电路触发器 基本RS触发器 同步RS触发器 主从RS触发器 JK触发器 主从D触发器
867 0
|
机器学习/深度学习 数据采集 人工智能
智能化运维:AI在IT运维中的应用与挑战###
本文探讨了人工智能(AI)技术在IT运维领域的应用现状、具体实现方式及其面临的挑战。通过分析AI如何优化故障预测、自动化处理和资源管理,文章旨在揭示AI赋能下运维工作的变革潜力与实践难题,为读者提供对智能化运维趋势的深刻理解。 ###
|
Linux C语言
Linux读写锁源码分析
本文分析了读写锁的实现原理与应用场景,基于glibc 2.17源码。读写锁通过读引用计数、写线程ID、条件变量等实现,支持读优先(默认)和写优先模式。读优先时,写锁可能饥饿;写优先时,读线程需等待写锁释放。详细解析了`pthread_rwlock_t`数据结构及加解锁流程,并通过实验验证:2000个读线程与1个写线程测试下,读优先导致写锁饥饿,写优先则正常抢占锁。
547 19
|
数据可视化 数据挖掘 Java
报表工具怎么选?8款主流报表工具大测评!
报表工具怎么选?8款主流报表工具大测评!
|
Unix API 开发者
微信公众号:如何根据关键词取文章列表 API 返回值说明?
微信公众号根据关键词获取文章列表的API通常指的是微信公众平台的“素材管理”接口中的“获取素材列表”功能。通过这个接口,开发者可以获取公众号已上传的文章素材列表,包括图文消息、视频、音频等。以下是API返回值的一般说明
|
存储 JSON 数据可视化
Python数据可视化-----制作全球地震散点图
Python数据可视化-----制作全球地震散点图
651 0