oracle基本文件之控制文件

来源:互联网 发布:c语言从1加到100 编辑:程序博客网 时间:2024/06/05 06:35
控制文件

一、作用
1.记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息及相关状态,归档信息等等。
2.用来维护数据一致性(数据库启动时会比较控制文件与联机日志文件中的ckpt,即起始scn号,如相等则正常启动,否则需要介质恢复)。

注意:
1.控制文件是一个二进制文件,不能手动修改,只能通过oracle进程才能够更新控制文件的内容。
2.多路复用技术。

二、内容
数据库的名字、ID、创建的时间戳
       表空间的名字
       联机日志文件、数据文件的位置、个数、名字
       联机日志的Sequence号码
       检查点的信息
       撤销段的开始或结束
       归档信息
       备份信息

三、查看
1.查看文件路径
V$CONTROLFILE                                        --列出实例中所有控制文件的名字及状态信息
       SHOW PARAMETER CONTROL_FILES    --列出控制文件的名字、状态、位置等
2.查看文件内容
1)备份控制文件到平面文件,然后进行查看
alter database backup controlfile  to trace as 'F:\oracle\ctl.txt';
2)转储控制文件内容,然后进行查看(关于转储文件,仍在学习中)

四、管理
1.增加或减少控制文件
通过修改参数文件来实现: 
alter system set control_files = 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL, F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL
\CONTROL02.CTL';
2.备份控制文件
控制文件的备份
        热备:
            alter database backup controlfile to '<dir>';  --热备份控制文件
            alter database backup controlfile to trace as '<dir>' ;--得到建立控制文件的脚本
        RMAN:
            backup current controlfile;
            backup database include current controlfile;
            -- 或者设置RMAN 为自动备份
            RMAN > configure controlfile autobackup on;
五、恢复
1.控制文件版本不一致的问题
用较新版本的控制文件覆盖旧版本的控制文件。具体做法:删除版本久的,然后复制版本新的并改名与版本久的控制文件相同即可。
直接修改参数control_file
2.丢失问题
归档模式下
当归档日志全的时候,先做全备,然后使用备份的控制文件恢复即可
当归档日志不全的时候,先做全备,然后建立新的控制文件即可
非归档模式下
先做全备,然后建立新的控制文件即可
3.新建控制文件语句
数据库处于mount及open状态
执行alter database backup controlfile to trace as '<dir>';得到建立语句
注意[no]archievelog [no]resetlogs 两个参数的区别
重建控制文件主要有三个需要考虑的是
        1)搞清各个日志文件的大小及位置
        2)搞清各个数据文件的位置
        3)设置正确的字符集   


附备份的控制文件脚本一份:

-- 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=ARC%S_%R.%T
--
-- DB_UNIQUE_NAME="orcl"
--
-- LOG_ARCHIVE_CONFIG='SEND, RECEIVE, NODG_CONFIG'
-- LOG_ARCHIVE_MAX_PROCESSES=2
-- STANDBY_FILE_MANAGEMENT=MANUAL
-- STANDBY_ARCHIVE_DEST=%ORACLE_HOME%\RDBMS
-- FAL_CLIENT=''
-- FAL_SERVER=''
--
-- LOG_ARCHIVE_DEST_10='LOCATION=USE_DB_RECOVERY_FILE_DEST'
-- LOG_ARCHIVE_DEST_10='OPTIONAL REOPEN=300 NODELAY'
-- LOG_ARCHIVE_DEST_10='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'
-- LOG_ARCHIVE_DEST_10='REGISTER NOALTERNATE NODEPENDENCY'
-- LOG_ARCHIVE_DEST_10='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED NODB_UNIQUE_NAME'
-- LOG_ARCHIVE_DEST_10='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'
-- LOG_ARCHIVE_DEST_STATE_10=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 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'  SIZE 50M,
  GROUP 2 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
  GROUP 3 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'  SIZE 50M
-- STANDBY LOGFILE
DATAFILE
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.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 'F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_08_20\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_08_20\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_08_20\O1_MF_1_1_%U_.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 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\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 "ORCL" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'  SIZE 50M,
  GROUP 2 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG'  SIZE 50M,
  GROUP 3 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG'  SIZE 50M
-- STANDBY LOGFILE

DATAFILE
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF',
  'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.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 'F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_08_20\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_08_20\O1_MF_1_1_%U_.ARC';
-- ALTER DATABASE REGISTER LOGFILE 'F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2013_08_20\O1_MF_1_1_%U_.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




-- 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 'F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF' REUSE;
-- End of tempfile additions.
--