Oracle的控制文件

一、控制文件

   oracle的控制文件是极其重要的文件,它是一个较小的二进制文件。

  记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等

   在参数文件中描述其位置,个数等等。

  在mount阶段被读取,open阶段一直被使用

  一个控制文件只能属于一个数据库

  控制文件的任意修改将写入到初始化参数中指定的所有控制文件中,读取时则仅读取第一个控制文件

  控制文件中包含的内容:

  1.     数据库的名字、ID、创建的时间戳
  2. 表空间的名字
  3. 联机日志文件、数据文件的位置、个数、名字
  4. 联机日志的Sequence号码
  5. 检查点的信息
  6. 撤销段的开始或结束
  7. 归档信息
  8. 备份信息

二、查看控制文件的相关定义

1.使用相关视图来查看

  V$CONTROLFILE                         --列出实例中所有控制文件的名字及状态信息

V$PARAMETER                           --列出所有参数的位置及状态信息

V$CONTROLFILE_RECORD_SECTION    --列出控制文件中记录的部分信息

SHOW PARAMETER CONTROL_FILES    --列出控制文件的名字、状态、位置等

2.使用strings命令查看

strings $ORACLE_BASE/oradata/orcl/control01.ct

3.备份控制文件到可查看文件

SQL> alter database backup controlfile to trace as ‘/tmp/ctl.txt‘;

--或者使用

SQL> host strings /u01/app/oracle/oradata/orcl/control01.ctl > /tmp/ctl.txt

cat  /tmp/ctl.txt

-- 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="orcl"
--
-- 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_3=‘LOCATION=/u03/ARCHLOG/‘
-- LOG_ARCHIVE_DEST_3=‘OPTIONAL REOPEN=300 NODELAY‘
-- LOG_ARCHIVE_DEST_3=‘ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC‘
-- LOG_ARCHIVE_DEST_3=‘REGISTER NOALTERNATE NODEPENDENCY‘
-- LOG_ARCHIVE_DEST_3=‘NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME‘
-- LOG_ARCHIVE_DEST_3=‘VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)‘
-- LOG_ARCHIVE_DEST_STATE_3=ENABLE
--
-- LOG_ARCHIVE_DEST_2=‘LOCATION=/u02/ARCHLOG/‘
-- LOG_ARCHIVE_DEST_2=‘OPTIONAL REOPEN=300 NODELAY‘
-- LOG_ARCHIVE_DEST_2=‘ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC‘
-- LOG_ARCHIVE_DEST_2=‘REGISTER NOALTERNATE NODEPENDENCY‘
-- LOG_ARCHIVE_DEST_2=‘NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME‘
-- LOG_ARCHIVE_DEST_2=‘VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)‘
-- LOG_ARCHIVE_DEST_STATE_2=ENABLE
--
-- LOG_ARCHIVE_DEST_1=‘LOCATION=/u01/ARCHLOG/‘
-- LOG_ARCHIVE_DEST_1=‘MANDATORY 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 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 "ORCL" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 5
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    ‘/u01/orcl/onlinelog/redo1a.log‘,
    ‘/u02/orcl/onlinelog/redo1b.log‘,
    ‘/u03/orcl/onlinelog/redo1c.log‘
  ) SIZE 50M BLOCKSIZE 512,
  GROUP 2 (
    ‘/u01/orcl/onlinelog/redo2a.log‘,
    ‘/u02/orcl/onlinelog/redo2b.log‘,
    ‘/u03/orcl/onlinelog/redo2c.log‘
  ) SIZE 50M BLOCKSIZE 512,
  GROUP 3 (
    ‘/u01/orcl/onlinelog/redo3a.log‘,
    ‘/u02/orcl/onlinelog/redo3b.log‘,
    ‘/u03/orcl/onlinelog/redo3c.log‘
  ) SIZE 50M BLOCKSIZE 512,
  GROUP 4 (
    ‘/u01/orcl/onlinelog/redo4a.log‘,
    ‘/u02/orcl/onlinelog/redo4b.log‘,
    ‘/u03/orcl/onlinelog/redo4c.log‘
  ) SIZE 50M BLOCKSIZE 512,
  GROUP 5 ‘/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_5_d678b9q8_.log‘  SIZE 100M BLOCKSIZE 512
-- STANDBY LOGFILE

DATAFILE
  ‘/u01/app/oracle/oradata/orcl/system01.dbf‘,
  ‘/u01/app/oracle/oradata/orcl/sysaux01.dbf‘,
  ‘/u01/app/oracle/oradata/orcl/undotbs01.dbf‘,
  ‘/u01/app/oracle/oradata/orcl/users01.dbf‘,
  ‘/u01/app/oracle/oradata/orcl/test.dbf‘,
  ‘/u01/app/oracle/oradata/orcl/bk02.dbf‘
CHARACTER SET AL32UTF8
;

-- Configure RMAN configuration record 1
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘RETENTION POLICY‘,‘TO RECOVERY WINDOW OF 3 DAYS‘);
-- Configure RMAN configuration record 2
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘BACKUP OPTIMIZATION‘,‘ON‘);
-- Configure RMAN configuration record 3
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE‘,‘DISK TO ‘‘/u02/database/orcl/backup/rman/20161228/orcl_lev0_201612280036_%F‘‘‘);
-- Configure RMAN configuration record 4
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘CONTROLFILE AUTOBACKUP‘,‘ON‘);
-- 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 ‘/u03/ARCHLOG/1_1_930793088.dbf‘;
-- ALTER DATABASE REGISTER LOGFILE ‘/u03/ARCHLOG/1_1_931117309.dbf‘;
-- ALTER DATABASE REGISTER LOGFILE ‘/u03/ARCHLOG/1_1_931133551.dbf‘;
-- ALTER DATABASE REGISTER LOGFILE ‘/u03/ARCHLOG/1_1_931634970.dbf‘;
-- 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/orcl/temp01.dbf‘
     SIZE 31457280  REUSE AUTOEXTEND ON NEXT 8192  MAXSIZE 32767M;
-- 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 "ORCL" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 5
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 (
    ‘/u01/orcl/onlinelog/redo1a.log‘,
    ‘/u02/orcl/onlinelog/redo1b.log‘,
    ‘/u03/orcl/onlinelog/redo1c.log‘
  ) SIZE 50M BLOCKSIZE 512,
  GROUP 2 (
    ‘/u01/orcl/onlinelog/redo2a.log‘,
    ‘/u02/orcl/onlinelog/redo2b.log‘,
    ‘/u03/orcl/onlinelog/redo2c.log‘
  ) SIZE 50M BLOCKSIZE 512,
  GROUP 3 (
    ‘/u01/orcl/onlinelog/redo3a.log‘,
    ‘/u02/orcl/onlinelog/redo3b.log‘,
    ‘/u03/orcl/onlinelog/redo3c.log‘
  ) SIZE 50M BLOCKSIZE 512,
  GROUP 4 (
    ‘/u01/orcl/onlinelog/redo4a.log‘,
    ‘/u02/orcl/onlinelog/redo4b.log‘,
    ‘/u03/orcl/onlinelog/redo4c.log‘
  ) SIZE 50M BLOCKSIZE 512,
  GROUP 5 ‘/u01/app/oracle/flash_recovery_area/ORCL/onlinelog/o1_mf_5_d678b9q8_.log‘  SIZE 100M BLOCKSIZE 512
-- STANDBY LOGFILE

DATAFILE
  ‘/u01/app/oracle/oradata/orcl/system01.dbf‘,
  ‘/u01/app/oracle/oradata/orcl/sysaux01.dbf‘,
  ‘/u01/app/oracle/oradata/orcl/undotbs01.dbf‘,
  ‘/u01/app/oracle/oradata/orcl/users01.dbf‘,
  ‘/u01/app/oracle/oradata/orcl/test.dbf‘,
  ‘/u01/app/oracle/oradata/orcl/bk02.dbf‘
CHARACTER SET AL32UTF8
;

-- Configure RMAN configuration record 1
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘RETENTION POLICY‘,‘TO RECOVERY WINDOW OF 3 DAYS‘);
-- Configure RMAN configuration record 2
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘BACKUP OPTIMIZATION‘,‘ON‘);
-- Configure RMAN configuration record 3
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE‘,‘DISK TO ‘‘/u02/database/orcl/backup/rman/20161228/orcl_lev0_201612280036_%F‘‘‘);
-- Configure RMAN configuration record 4
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG(‘CONTROLFILE AUTOBACKUP‘,‘ON‘);
-- 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 ‘/u03/ARCHLOG/1_1_930793088.dbf‘;
-- ALTER DATABASE REGISTER LOGFILE ‘/u03/ARCHLOG/1_1_931117309.dbf‘;
-- ALTER DATABASE REGISTER LOGFILE ‘/u03/ARCHLOG/1_1_931133551.dbf‘;
-- ALTER DATABASE REGISTER LOGFILE ‘/u03/ARCHLOG/1_1_931634970.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

-- 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/orcl/temp01.dbf‘
     SIZE 31457280  REUSE AUTOEXTEND ON NEXT 8192  MAXSIZE 32767M;
-- End of tempfile additions.
--

三、控制文件的管理

1.控制文件的移动实例

目的:将闪回区的控制文件移到指定位置

--查看控制文件的配置

SQL> select * from v$controlfile;

STATUS    NAME                   IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- ------------------------------ --- ---------- --------------
    /u01/app/oracle/oradata/orcl/c NO    16384         618
    ontrol01.ctl

    /u01/app/oracle/flash_recovery NO    16384         618
    _area/control02.ctl

--修改控制文件的位置

SQL> alter system set control_files=
  2  ‘/u01/app/oracle/oradata/orcl/control01.ctl‘,
  3  ‘/u02/control02.ctl‘
  4  scope=spfile;

系统已更改。

--关闭数据库

SQL> shutdown immediate

--拷贝物理文件到指定位置

SQL> host cp /u01/app/oracle/oradata/orcl/control01.ctl /u02/control02.ctl

--启动数据库,验证

SQL> startup

SQL> select * from v$controlfile;

STATUS    NAME                   IS_ BLOCK_SIZE FILE_SIZE_BLKS
------- ------------------------------ --- ---------- --------------
    /u01/app/oracle/oradata/orcl/c NO    16384         618
    ontrol01.ctl

    /u02/control02.ctl           NO    16384           618

--删除以前的控制文件

SQL> host rm /u01/app/oracle/flash_recovery_area/control02.ctl

如果启动的时候出现版本不一致,使用高版本覆盖低版本

2.备份控制文件

--用于归档模式下的恢复,直接覆盖到控制文件

SQL> alter database backup controlfile to ‘/u01/app/oracle/control.bak‘;

--用于重建控制文件

SQL> alter database backup controlfile to trace as ‘/u01/app/oracle/recreate_controlfile.txt‘;

--使用RMAN备份

 RMAN> backup current controlfile;

3. 控制文件的恢复管理

控制文件版本不一致的问题

用较新版本的控制文件覆盖旧版本的控制文件

直接修改参数control_file

丢失问题

归档模式下

当归档日志全的时候,先做全备,然后使用备份的控制文件恢复即可

当归档日志不全的时候,先做全备,然后建立新的控制文件即可

非归档模式下

先做全备,然后建立新的控制文件即可

时间: 2024-08-03 08:36:09

Oracle的控制文件的相关文章

oracle添加控制文件,ORA-00214: 错误

今天学习oracle添加控制文件,控制文件是一个二进制文件,记录了物理数据库的当前状态,每一个数据文件只属于一个数据库,为了防止文件损坏丢失等情况,一个数据库不止一个控制文件.一个数据库的控制文件中的内容完全一样. 利用数据字典v$controlfile查询数据文件的位置.名字: select name from v$controlfile; 结果: NAME --------------------------------------------------------------------

Oracle数据库 控制文件

一.概念控制文件的主要任务是管理数据库的状态以及描述数据库的物理结构 二.所含有的信息1.数据库名2.数据库标识符(DBID)3.数据库创建时间戳4.数据库字符集5.数据文件信息6.临时文件信息7.在线重做日志信息8.近期的归档日志信息9.表空间信息10.RMAN备份文件信息,即RMAN资料库11.检查点信息12.损坏的数据块注册表13.还原点信息14.重设日志SCN15.脏数据块的数量 三.数据库启动[3个阶段]1.NOMOUNT阶段:此阶段读取参数文件2.MOUNT阶段:此阶段打开控制文件3

oracle重建控制文件

根据已有数据库创建新的控制文件#数据库必须是mounted或open状态 sql> alter database backup controlfile to trace; 可以使用以下快捷方式找到对应的trace文件 sql> alter database backup controlfile to trace; sql> oradebug setmypid; sql> oradebug tracefile_name; 从trace文件中要找出以下内容,保存到脚本controlfi

Oracle控制文件移动

Oracle移动控制文件 OS:Windows oracle:10g 移动控制文件即将当前的控制文件由当前位置迁移到另一个新位置. 六步完成控制文件移动: 1.获取控制文件名: SQL> select status,name from v$controlfile; 2.修改SPFILE中的控制文件名: SQL> alter system set control_files= 'D:\oracle\new\CONTROL01.CTL', 'D:\oracle\new\CONTROL02.CTL'

Oracle控制文件与参数文件管理_超越OCP精通Oracle视频教程培训13

Oracle视频教程目标 Oracle视频教程,风哥本套oracle教程培训学习Oracle Parameter参数文件与Oracle控制文件controlfile的深入解析,如何修改参数文件,Oracle控制文件的作用,针对Resetlogs和NoResetlogs的分析,oracle控制文件的重建/镜像/备份/恢复等日常管理与维护. 适用人群 IT相关从业人员.Oracle数据库技术人员.想加工资的.想升职的都可以. 视频在线学习地址: http://edu.51cto.com/course

oracle 控制文件多路复用

网上有很多关于控制文件的操作,我大概看了下.有很多都是炒来炒去转来转去.下面以自己理解和操作为例来对oracle的控制文件进行下介绍. 首先介绍下控制文件 在oralce数据库中,控制文件是一个很小的二进制文件,一般大小在10MB左右在数据库创建时被自动创建,并在数据库变化时更新.控制文件不断被更新,并且在任何时候都要保证控制文件可用.控制文件在oracle中扮演者很重要的角色,没有控制文件或者控制文件损坏数据库必然down掉.控制文件包含有数据库结构信息,数据文件和日志文件信息. 由于控制文件

服务器异常断电,导致oracle控制文件版本不一致,报错ora-00214解决记录

控制文件介绍: 每一个oracle都至少会生成一个控制文件,一个数据库可以拥有多个控制文件,但是一个控制文件只能属于一个数据库. 控制文件内部除了存放数据库名及其创建日期,数据文件,日志文件等相关信息,在系统运行的过程中还会存放系统更改号,检查点信息及归档的当前状态等信息. 出于安全考虑,数据库会自动创建2到3个控制文件,每个控制文件记录相同的信息,这个可以确保在数据库运行时,某个控制文件损坏,oracle会自动使用另一个控制文件,当所有控制文件损坏时,数据库将无法工作. 注:通过 v$cont

oracle_控制文件--笔记

oracle数据库物理文件大致有8种: 参数文件(parameter file) 跟踪文件(trace file) 警告文件(alert file) 数据文件(data file) 临时文件(temp file) 控制文件(control file) 重做日志文件(redo log file) 密码文件(password file) 我认为最重要的是数据文件和重做日志文件.因为就算其他文件都损坏了,我也能恢复出需要的其他数据.(数据管理的重心是重在预防,而不是亡羊补牢) 控制文件是什么?控制文件

Oracle 11g 管理控制文件

oracle数据库控制文件是非常重要的文件,它是数据库创建的时候自动生成的二进制文件,其中记录了数据库的状态信息,主要包括以下内容 ? 数据库的名称,一个控制文件只能属于一个数据库 ? 数据库创建时间 ? 数据文件的名称.位置.联机.脱机状态信息 ? 重做日志文件的名称.位置及归档信息 ? 所有表空间信息 ? 当前日志序列号 ? 最近检查点信息 控制文件在数据库启动的Mount阶段被读取,在数据库启动时首先使用默认规则找到并打开参数文件,在参数文件中含有控制文件的位置信息,打开控制文件后,会通过