Oracle控制文件
oracle备份控制文件

如何备份控制文件∙1、∙ALTER DATABASE BACKUP CONTROLFILE TO TRACE;∙ALTER DATABASE BACKUP CONTROLFILE TO TRACE RESETLOGS;∙ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS;∙∙2、∙ALTER DATABASE BACKUP CONTROLFILE TO 文件名;∙ALTER DATABASE BACKUP CONTROLFILE TO 文件名 REUSE;(如果此文件已存在)∙∙例:∙SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'c:\a';∙∙数据库已更改。
∙∙SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'c:\a';∙ALTER DATABASE BACKUP CONTROLFILE TO 'c:\a'∙*∙ERROR 位于第 1 行:∙ORA-01580: 创建控制备份文件c:\a时出错∙ORA-27038: skgfrcre: 文件存在∙OSD-04010: <创建> 选项指定,文件已经存在∙∙∙SQL> ALTER DATABASE BACKUP CONTROLFILE TO 'c:\a' reuse;∙∙数据库已更改。
∙∙SQL>∙∙3、∙Shutdown,直接看init.ora文件中的control_files项,找到其中任意一个控制文件,∙用操作系统命令复制到备份地点即可(如:软盘、光盘、磁带等)∙∙第一种方法产生的是一个跟踪文件,里面存放的是创建控制文件的脚本,可以用记事本等文本编辑器打开∙这个脚本可以让你重新创建控制文件,∙生成一个跟踪文件到init.ora中user_dump_dest所指的目录下($ORACLE_HOME\ADMIN\ORADB\UDUMP\)。
Oracle11gR2RMAN配置控制文件自动备份(controlfileautobackup)

Oracle11gR2RMAN配置控制⽂件⾃动备份(controlfileautobackup)通过在 RMAN 中配置 control file autobackup,RMAN 会⾃动备份控制⽂件和参数⽂件到预先设定好的路径。
触发情况:1、当数据库的结构发⽣改变时(数据库运⾏在归档模式)2、当完成 RMAN 备份后好处:即使数据库丢失了控制⽂件和恢复⽬录(recovery catalog),控制⽂件和参数⽂件也可以从⾃动备份的控制⽂件中进⾏恢复,让数据库多了⼀层保护,⽽且从autobackup中恢复控制⽂件和参数⽂件更加快速⽅便。
设置⽅法:查看现有的 RMAN 配置参数,可以看到没有启⽤控制⽂件⾃动备份,参数依旧是默认值[oracle@ATFDB1 admin]$ rman target /Recovery Manager: Release 11.2.0.3.0 - Production on Wed Dec 9 09:19:07 2015Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.connected to target database: FIRE (DBID=917673527)RMAN> show all;using target database control file instead of recovery catalogRMAN configuration parameters for database with db_unique_name FIRE are:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # defaultCONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP OFF; # defaultCONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # defaultCONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # defaultCONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # defaultCONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u02/app/oracle/product/11.2.0/db_1/dbs/snapcf_fire.f'; # default启⽤控制⽂件⾃动备份特性RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;new RMAN configuration parameters:CONFIGURE CONTROLFILE AUTOBACKUP ON;new RMAN configuration parameters are successfully stored配置控制⽂件⾃动备份的路径和格式RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ORADATA/controlfile/cf_%F';new RMAN configuration parameters:CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ORADATA/controlfile/cf_%F';new RMAN configuration parameters are successfully stored查看重新设置的参数RMAN> show all;RMAN configuration parameters for database with db_unique_name FIRE are:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # defaultCONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ORADATA/controlfile/cf_%F'; CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # defaultCONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # defaultCONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u02/app/oracle/product/11.2.0/db_1/dbs/snapcf_fire.f'; # default通过 RMAN 备份数据库,查看是否⽣成控制⽂件⾃动备份。
Oracle 建立控制文件

Oracle 建立控制文件在一般情况下,如果使用了复合控制文件,并且将各个控制文件分别存储在不同的磁盘中,则丢失全部控件文件的可能性将非常小。
但是,如果数据库的所有控制文件全部丢失,这时惟一的补救方法就是以手动方式重新创建控制文件。
另外,如果DBA需要改变数据库的某个永久性参数,也需要重新创建控制文件。
永久性参数是在创建数据库时设置的一些参数,主要包括:数据库名称、MALOGFILES(最大的重做日志文件数)、MAXLOGMEMBERS(最大的重做日志组成员数)等。
下面介绍创建新的控制文件的命令CREATE CONTROLFILE语句的基本用法,具体步骤:(1)查看数据库中所有的数据文件和重做日志文件的名称和路径。
在创建新控制文件时,首先需要了解数据库中的数据文件和重做日志文件。
如果数据库中所有的控制文件和重做日志文件都已经丢失,这时数据库已经无法打开,因此也就无法来查询数所字典获得数据文件和日志文件的信息,这时惟一的办法就是查看警告文件中的内容。
如果数据库可以打开,那么可以通过执行下面的查询来生成文件列表:SQL> select member from v$logfile;SQL> select name from v$datafile;SQL> select name from v$controlfile;如果既无法打开数据库,又无法打开可靠的文件列表,那么就只能够用手工方法通过查找操作系统文件来制作文件列表。
(2)关闭数据库。
如果数据库处于打开状态,则可能采取正常模式关闭数据库。
SQL> connect as sysdba….SQL> shutdown immediate数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
(3)在操作系统级别备份所有的数据文件和重做日志文件。
在使用CREATE CONTROLFILE语句创建新的控制文件时,如果操作不当可能会损坏数据文件和日志文件,因此,需要事先对其进行备份。
oracle修改控制文件路径手册

Oracle修改控制文件路径文档(仅供内部人员使用)问题分析:如果闪回区控制文件(control02.ctl)跟数据目录控制文件(control01.ctl)不在同一个目录下,这在双机环境中,发生双机切换后,可能因为闪回区不在共享目录下,而造成切换过去后控制文件不统一,数据库无法打开的情况解决方案:如果是双机环境,建议将两台服务器的闪回区修改至共享目录中。
方法如下:1、通过sqlplus / as sysdba打开数据库。
2、通过select * from v$controlfile;查看数据库控制文件存放路径。
3、通过create pfile=’c:\app\administrator\product\11.2.0\dbhome_1\dbs\init.ora’ fromspfile; 创建pfile文件。
4、打开c:\app\administrator\product\11.2.0\dbhome_1\dbs\init.ora文件,并找到需要修改控制文件的位置。
5、本文档以将控制文件control02.ctl的路径修改至G:\app下为例。
将控制文件control02.ctl的路径修改为G:\app\control02.ctl6、修改完成后,通过shutdown immediate;关闭数据库。
7、从G:\app\Administrator\flash_recovery_area目录下将control02.ctl文件复制到新修改的目录G:\app下8、指定pfile文件启动数据库。
9、(1)通过指定的pfile文件创建spfile文件。
(2)然后通过shutdown immediate;关闭数据库(3)最后通过startup force强制启动数据库。
10、完成修改,通过select * from v$controlfile查看修改后的控制文件路径。
oracle ctl 参数

oracle ctl 参数
在Oracle中,CTL参数通常是指控制文件(Control File)的
参数。
控制文件是Oracle数据库中非常重要的一部分,它记录了数
据库的结构信息和状态信息,包括数据文件和日志文件的名称及位置、数据库的日志序列号、数据库的时间戳等。
控制文件的参数可
以影响数据库的运行和管理,下面我会从多个角度来解释一下这些
参数。
首先,控制文件的参数可以影响数据库的性能和稳定性。
例如,控制文件的大小和数量会影响数据库的启动时间和恢复时间。
较大
的控制文件可以记录更多的信息,但也会增加读取和写入的时间;
而较小的控制文件则可能无法记录足够的信息。
此外,控制文件的
位置也很重要,它应该存储在不同的磁盘上以提高容错能力。
其次,控制文件的参数还可以影响数据库的管理和维护。
例如,可以通过参数来指定控制文件的自动备份策略,以及控制文件的自
动扩展策略。
这些参数可以帮助数据库管理员更好地管理数据库的
备份和恢复工作,确保数据库的可靠性和可用性。
此外,控制文件的参数还可以影响数据库的安全性。
通过控制
文件的参数,可以限制对控制文件的访问权限,以防止未经授权的
用户对控制文件进行修改或篡改,从而保护数据库的安全。
总的来说,控制文件的参数在Oracle数据库中起着非常重要的
作用,它们可以影响数据库的性能、稳定性、管理、维护和安全性。
因此,在设置这些参数时,需要仔细考虑数据库的实际情况和需求,以确保数据库的正常运行和安全性。
ORACLE数据文件和控制文件头部

ORACLE数据文件和控制文件头部第一次检查数据文件头中的Checkpoint cnt是否与对应操纵文件中的Checkpoint cnt一致.假如相等,进行第二次检查.第二次检查数据文件头的开始SCN与对应操纵文件中的结束SCN是否一致假如结束SCN等于开始SCN,则不需要对那个文件进行恢复.对每个数据文件都完成检查后,打开数据库.同时将每个数据文件的结束SCN设置为无穷大.通过下列过程我们来进一步说明一下这个内容。
我们来看下列来自操纵文件部分(选取一个文件测试):DATA FILE #4:(name #4) /opt/oracle/oradata/eygle/eygle01.dbfcreation size=0 block size=8192 status=0xe head=4 tail=4 dup=1tablespace 4, index=4 krfil=4 prev_file=0unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00Checkpoint cnt:58 scn: 0x0000.002ac8ee 08/11/2006 09:48:29Stop scn: 0x0000.002ac8ee 08/11/2006 09:48:29Creation Checkpointed at scn: 0x0000.0015078d 06/06/2006 09:41:54thread:0 rba:(0x0.0.0)................aux_file is NOT DEFINED这部分中包含的重要信息有:检查点计数: Checkpoint cnt:58检查点SCN: scn: 0x0000.002ac8ee 08/11/2006 09:48:29数据文件Stop SCN:Stop scn: 0x0000.002ac8ee 08/11/2006 09:48:29我们再看来自数据文件头的信息:FILE HEADER:Software vsn=153092096=0x9200000, Compatibility Vsn=134217728=0x8000000Db ID=1407686520=0x53e79778, Db Name='EYGLE'Activation ID=0=0x0Control Seq=979=0x3d3, File size=1280=0x500File Number=4, Blksiz=8192, File Type=3 DATATablespace #4 - EYGLE rel_fn:4Creation at scn: 0x0000.0015078d 06/06/2006 09:41:54Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0reset logs count:0x232bee1f scn: 0x0000.0007c781 recovered at 08/10/2006 20:57:53begin-hot-backup file size: 0Checkpointed at scn: 0x0000.002ac8ee 08/11/2006 09:48:29.......................这部分中包含的重要信息有:检查点SCN: Checkpointed at scn: 0x0000.002ac8ee 08/11/2006 09:48:29检查点计数: chkpt cnt: 58 ctl cnt:57这两者都与操纵文件中所记录的一致。
Oracle控制文件(CONTROLFILE)
Oracle控制⽂件(CONTROLFILE)⼀、Oracle 控制⽂件为⼆进制⽂件,初始化⼤⼩由CREATE DATABASE指定,可以使⽤RMAN备份记录了当前数据库的结构信息,同时也包含数据⽂件及⽇志⽂件的信息以及相关的状态,归档信息等等在参数⽂件中描述其位置,个数等等。
通常采⽤分散放开,多路复⽤的原则。
在mount阶段被读取,open阶段⼀直被使⽤维护数据库⼀致性(数据库启动时会⽐较控制⽂件与联机⽇志⽂件中的ckpt,即起始scn号,如相等则正常启动,否则需要介质恢复)⼀个控制⽂件只能属于⼀个数据库控制⽂件的任意修改将写⼊到初始化参数中指定的所有控制⽂件中,读取时则仅读取第⼀个控制⽂件控制⽂件只能连接⼀个数据库,控制⽂件的⼤⼩⼀般不要超过MB,最多为个,最少⼀个,互为镜像控制⽂件中包含的内容数据库的名字、ID、创建的时间戳表空间的名字联机⽇志⽂件、数据⽂件的位置、个数、名字联机⽇志的Sequence号码检查点的信息撤销段的开始或结束归档信息备份信息⼆、查看控制⽂件的相关信息1.使⽤相关视图来查看V$CONTROLFILE --列出实例中所有控制⽂件的名字及状态信息V$PARAMETER --列出所有参数的位置及状态信息V$CONTROLFILE_RECORD_SECTION --列出控制⽂件中记录的部分信息SHOW PARAMETER CONTROL_FILES --列出控制⽂件的名字、状态、位置等SQL> select * from v$controlfile;STATUS NAME IS_ BLOCK_SIZE FILE_SIZE_BLKS------- -------------------------------------------------- --- ---------- --------------/u01/app/oracle/oradata/orcl/control01.ctl NO 16384 430/u01/app/oracle/oradata/orcl/control02.ctl NO 16384 430/u01/app/oracle/oradata/orcl/control03.ctl NO 16384 430SQL> select name,type,value from v$parameter where name like '%control%';NAME TYPE VALUEcontrol_files 2 /u01/app/oracle/oradata/orcl/control01.ctl,/u01/app/oracle/oradata/orcl/control02.ctl,/u01/app/oracle/oradata/orcl/control03.ctlcontrol_file_record_keep_time 3 7SQL> select * from v$controlfile_record_section;TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID ---------------------------- ----------- ------------- ------------ ----------- ---------- ----------DATABASE 316 1 1 0 0 0CKPT PROGRESS 8180 11 0 0 0 0REDO THREAD 256 8 1 0 0 0REDO LOG 72 16 9 0 0 20DATAFILE 428 100 8 0 0 28FILENAME 524 2298 21 0 0 0TABLESPACE 68 100 7 0 0 7TEMPORARY FILENAME 56 100 1 0 0 1RMAN CONFIGURATION 1108 50 0 0 0 0LOG HISTORY 56 292 35 1 35 35OFFLINE RANGE 200 163 0 0 0 0TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID ---------------------------- ----------- ------------- ------------ ----------- ---------- ----------ARCHIVED LOG 584 28 20 1 20 20BACKUP SET 40 409 0 0 0 0BACKUP PIECE 736 200 0 0 0 0BACKUP DATAFILE 116 282 0 0 0 0BACKUP REDOLOG 76 215 0 0 0 0DATAFILE COPY 660 223 1 1 1 1BACKUP CORRUPTION 44 371 0 0 0 0COPY CORRUPTION 40 409 0 0 0 0DELETED OBJECT 20 818 3 1 3 3PROXY COPY 852 249 0 0 0 0BACKUP SPFILE 36 454 0 0 0 0TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID ---------------------------- ----------- ------------- ------------ ----------- ---------- ----------DATABASE INCARNATION 56 292 2 1 2 2FLASHBACK LOG 84 2048 0 0 0 0INSTANCE SPACE RESERVATION 28 1055 1 0 0 0REMOVABLE RECOVERY FILES 32 1000 0 0 0 0RMAN STATUS 116 141 0 0 0 0THREAD INSTANCE NAME MAPPING 80 8 8 0 0 0MTTR 100 8 1 0 0 0DATAFILE HISTORY 568 57 0 0 0 0STANDBY DATABASE MATRIX 400 10 10 0 0 0GUARANTEED RESTORE POINT 212 2048 0 0 0 0TYPE RECORD_SIZE RECORDS_TOTAL RECORDS_USED FIRST_INDEX LAST_INDEX LAST_RECID ---------------------------- ----------- ------------- ------------ ----------- ---------- ----------RESTORE POINT 212 2083 0 0 0 0SQL> show parameter control_files;NAME TYPE VALUE------------------------------------ ----------- ------------------------------control_files string /u01/app/oracle/oradata/orcl/control01.ctl,/u01/app/oracle/oradata/orcl/control02.ctl, /u01/app/oracle/oradata/orcl/control03.ctlSQL> select controlfile_sequence# from v$database;CONTROLFILE_SEQUENCE#---------------------9852.使⽤STRINGS命令来查看控制⽂件中的具体内容SQL> host strings /u01/app/oracle/oradata/orcl/control01.ctl | more}|{zJORCLL-+RG+ORCL+ORCLorclorcl-+-='/u01/app/oracle/oradata/orcl/redo03.log/u01/app/oracle/oradata/orcl/redo3.log/u01/app/oracle/oradata/orcl/redo02.log/u01/app/oracle/oradata/orcl/redo2.log/u01/app/oracle/oradata/orcl/redo01.log/u01/app/oracle/oradata/orcl/tbs1_2.dbf/u01/app/oracle/oradata/orcl/tbs1_1.dbf/u01/app/oracle/oradata/orcl/example01.dbf/u01/app/oracle/oradata/orcl/users01.dbf/u01/app/oracle/oradata/orcl/sysaux01.dbf/u01/app/oracle/oradata/orcl/undotbs01.dbf/u01/app/oracle/oradata/orcl/system01.dbfu01/app/oracle/oradata/orcl/undotbs02.dbf/u01/app/oracle/oradata/orcl/redo03.log/u01/app/oracle/oradata/orcl/redo3.log/u01/app/oracle/oradata/orcl/redo02.log/u01/app/oracle/oradata/orcl/redo2.log/u01/app/oracle/oradata/orcl/redo01.log/u01/app/oracle/oradata/orcl/tbs1_2.dbf/u01/app/oracle/oradata/orcl/tbs1_1.dbf/u01/app/oracle/oradata/orcl/example01.dbf/u01/app/oracle/oradata/orcl/users01.dbf/u01/app/oracle/oradata/orcl/sysaux01.dbf/u01/app/oracle/oradata/orcl/undotbs01.dbf/u01/app/oracle/oradata/orcl/system01.dbfu01/app/oracle/oradata/orcl/undotbs02.dbfSYSTEMUNDOTBS1SYSAUXUSERSEXAMPLETBS1TEMP3.备份控制⽂件到平⾯⽂件(然后查看控制⽂件中的具体内容)SQL> alter database backup controlfile to trace as '/u01/app/oracle/ctl.txt';--或者使⽤SQL> host strings /u01/app/oracle/oradata/orcl/control01.ctl > /u01/app/oracle/ctl.txtSQL> host cat /u01/app/oracle/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=2-- STANDBY_FILE_MANAGEMENT=MANUAL-- STANDBY_ARCHIVE_DEST=?/dbs/arch-- 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-- 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 PERFORMANCESTARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS NOARCHIVELOG MAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M,GROUP 2 ('/u01/app/oracle/oradata/orcl/redo02.log','/u01/app/oracle/oradata/orcl/redo2.log') SIZE 50M,GROUP 3 ('/u01/app/oracle/oradata/orcl/redo03.log','/u01/app/oracle/oradata/orcl/redo3.log') SIZE 100M,GROUP 4 '/u01/app/oracle/oradata/orcl/redo04.log ' SIZE 50M,GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log ','/u01/app/oracle/oradata/orcl/redo7.log ') SIZE 50M,GROUP 8 ('/u01/app/oracle/oradata/orcl/redo8.log') SIZE 50M-- STANDBY LOGFILEDATAFILE'/u01/app/oracle/oradata/orcl/system01.dbf','/u01/app/oracle/oradata/orcl/undotbs01.dbf','/u01/app/oracle/oradata/orcl/sysaux01.dbf','/u01/app/oracle/oradata/orcl/users01.dbf','/u01/app/oracle/oradata/orcl/example01.dbf','/u01/app/oracle/oradata/orcl/tbs1_1.dbf','/u01/app/oracle/oradata/orcl/tbs1_2.dbf'CHARACTER SET WE8ISO8859P1;-- 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/flash_recovery_area-- /ORCL/archivelog/2010_05_20/o1_mf_1_1_%u_.arc';-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area-- /ORCL/archivelog/2010_05_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-- 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 26214400 REUSE AUTOEXTEND ON NEXT 655360 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 PERFORMANCESTARTUP NOMOUNTCREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS NOARCHIVELOG MAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log' SIZE 50M,GROUP 2 ('/u01/app/oracle/oradata/orcl/redo02.log','/u01/app/oracle/oradata/orcl/redo2.log') SIZE 50M,GROUP 3 ('/u01/app/oracle/oradata/orcl/redo03.log','/u01/app/oracle/oradata/orcl/redo3.log') SIZE 100M,GROUP 4 '/u01/app/oracle/oradata/orcl/redo04.log ' SIZE 50M,GROUP 7 ('/u01/app/oracle/oradata/orcl/redo07.log ','/u01/app/oracle/oradata/orcl/redo7.log ') SIZE 50M,GROUP 8 ('/u01/app/oracle/oradata/orcl/redo08.log','/u01/app/oracle/oradata/orcl/redo8.log') SIZE 50M-- STANDBY LOGFILEDATAFILE'/u01/app/oracle/oradata/orcl/system01.dbf','/u01/app/oracle/oradata/orcl/undotbs01.dbf','/u01/app/oracle/oradata/orcl/sysaux01.dbf','/u01/app/oracle/oradata/orcl/users01.dbf','/u01/app/oracle/oradata/orcl/example01.dbf','/u01/app/oracle/oradata/orcl/tbs1_1.dbf','/u01/app/oracle/oradata/orcl/tbs1_2.dbf'CHARACTER SET WE8ISO8859P1;-- 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/flash_recovery_area-- /ORCL/archivelog/2010_05_20/o1_mf_1_1_%u_.arc';-- ALTER DATABASE REGISTER LOGFILE '/u01/app/oracle/flash_recovery_area-- /ORCL/archivelog/2010_05_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 '/u01/app/oracle/oradata/orcl/temp01.dbf' SIZE 26214400 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;-- End of tempfile additions.4.转储控制⽂件内容(查看控制⽂件中的具体内容)alter session set events 'immediate trace name CONTROLF level 12'; level表⽰级别或 --level1 块头的内容 --level2 数据⽂件内容 --levle 10 |12 所有内容oradebug setmypidoradebug dump controlf 12SQL> alter system set events 'immediate trace name controlf level 10';System altered.SQL> show parameter user_dump;NAME TYPE VALUE------------------------------------ ----------- ------------------------------user_dump_dest string /u01/app/oracle/admin/orcl/udump--查看路径中最新的⽂件[root@robinson ~]# vim /u01/app/oracle/admin/orcl/udump/orcl_ora_5110.trc--以下仅列出部分信息Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsORACLE_HOME = /u01/app/oracle/10gSystem name: LinuxNode name: Release: 2.6.18-164.el5xenVersion: #1 SMP Tue Aug 18 16:06:30 EDT 2009Machine: i686Instance name: orclRedo thread mounted by this instance: 1Oracle process number: 19Unix process pid: 5110, image: oracle@ (TNS V1-V3)*** 2010-05-20 18:52:30.104*** SERVICE NAME:(SYS$USERS) 2010-05-20 18:52:30.084*** SESSION ID:(159.10) 2010-05-20 18:52:30.084DUMP OF CONTROL FILES, Seq # 985 = 0x3d9V10 STYLE FILE HEADER:Compatibility Vsn = 169869568=0xa200100Db ID=1242732291=0x4a129703, Db Name='ORCL'Activation ID=0=0x0Control Seq=985=0x3d9, File size=430=0x1aeFile Number=0, Blksiz=16384, File Type=1 CONTROLDump of memory from 0xB7EF7E00 to 0xB7EFBE00--使⽤oradebug setmypidSQL> oradebug setmypid --标记当前进程Statement processed.--获得当前的spidSQL> select spid from v$process where addr =2 (select paddr from v$session where sid =3 (select sid from v$mystat where rownum = 1));SPID------------5110SQL> oradebug dump controlf 3;--3表⽰包含头⽂件和数据⽂件内容Statement processed.--查看user_dump_dest 路径SQL> show parameter user_dNAME TYPE VALUE------------------------------------ ----------- ------------------------------user_dump_dest string /u01/app/oracle/admin/orcl/udu mp--找到当前spid的trc⽂件SQL> ! ls /u01/app/oracle/admin/orcl/udump/*5110.* -- *//u01/app/oracle/admin/orcl/udump/orcl_ora_5110.trcSQL> ! cat /u01/app/oracle/admin/orcl/udump/orcl_ora_5110.trc--下⾯列出的为部分内容***************************************************************************RMAN CONFIGURATION RECORDS***************************************************************************(size = 1108, compat size = 1108, section max = 50, section in-use = 0, last-recid= 0, old-recno = 0, last-recno = 0)(extent = 1, blkno = 90, numrecs = 50)***************************************************************************FLASHBACK LOGFILE RECORDS(size = 84, compat size = 84, section max = 2048, section in-use = 0, last-recid= 0, old-recno = 0, last-recno = 0)(extent = 1, blkno = 139, numrecs = 2048)***************************************************************************THREAD INSTANCE MAPPING RECORDS***************************************************************************(size = 80, compat size = 80, section max = 8, section in-use = 8,last-recid= 0, old-recno = 0, last-recno = 0)(extent = 1, blkno = 156, numrecs = 8)orcl recno=1UNNAMED_INSTANCE_2 recno=2UNNAMED_INSTANCE_3 recno=3UNNAMED_INSTANCE_4 recno=4UNNAMED_INSTANCE_5 recno=5UNNAMED_INSTANCE_6 recno=6UNNAMED_INSTANCE_7 recno=7UNNAMED_INSTANCE_8 recno=8***************************************************************************MTTR RECORDS***************************************************************************(size = 100, compat size = 100, section max = 8, section in-use = 1, last-recid= 0, old-recno = 0, last-recno = 0)(extent = 1, blkno = 157, numrecs = 8)MTTR record for thread 1MTTR statistics status: 3Init time: Avg: 47090974 us, Times measured: 4File open time: Avg: 11225 us, Times measured: 21Log block read time: Avg: 20 us, Times measured: 65536Data block read/claim time: Avg: 170 us, Times measured: 1000Data block write time: Avg: 390 us1000 change vector apply time: Avg: 112435 us, Times measured: 37 Ratio Information:# of log blocks measured: 207891# of data blocks measured: 12536# of change vectors measured: 564444STANDBY DATABASE MAP RECORDS***************************************************************************(size = 400, compat size = 400, section max = 10, section in-use = 10,last-recid= 0, old-recno = 0, last-recno = 0)(extent = 1, blkno = 160, numrecs = 10)***************************************************************************RESTORE POINT RECORDS***************************************************************************(size = 212, compat size = 212, section max = 2048, section in-use = 0,last-recid= 0, old-recno = 0, last-recno = 0)(extent = 1, blkno = 161, numrecs = 2048)三、控制⽂件的管理规划原则:多路复⽤,建议存放到不同的磁盘或同⼀磁盘不同的分区个数与位置及状态管理:查看控制⽂件的状态是否与参数定义中的相吻合,当数据库发⽣结构修改时,将修改内容同时写⼊控制⽂件备份管理恢复管理新建控制⽂件语句spfile或pfile都可以实现对控制⽂件的个数及位置管理spfile步骤修改spfile参数中的control_files -- alter system ... scope = spfile | both |memory⼀致性关闭数据库增加或减少控制⽂件(cp or mv)启动数据库使⽤spfile验证结果pfile步骤⼀致性关闭数据库修改pfile参数(vi或vim) 修改*.control_files=......这⼀段增加或减少控制⽂件(cp or mv)启动数据库使⽤pfile验证结果--演⽰spfile修改控制⽂件SQL> show parameter control_fileNAME TYPE VALUE------------------------------------ ----------- ------------------------------control_file_record_keep_time integer 7control_files string /u01/app/oracle/oradata/orcl/control01.ctl,/u01/app/oracle/oradata/orcl/control02.ctl, /u01/app/oracle/oradata/orcl/control03.ctl--将控制⽂件减少到⼀个SQL> alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl' scope = spfile; System altered.SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startup mountORACLE instance started.Total System Global Area 251658240 bytesFixed Size 1218796 bytesVariable Size 88082196 bytesDatabase Buffers 159383552 bytesRedo Buffers 2973696 bytesDatabase mounted.--再次查看参数⽂件,已显⽰为⼀个SQL> show parameter control_fileNAME TYPE VALUE------------------------------------ ----------- ------------------------------control_file_record_keep_time integer 7control_files string /u01/app/oracle/oradata/orcl/control01.ctl--增加控制⽂件(在nomount状态下即可修改)SQL> alter system set control_files = '/u01/app/oracle/oradata/orcl/control01.ctl',2 '/u01/app/oracle/oradata/orcl/control02.ctl',3 '/u01/app/oracle/oradata/orcl/control03.ctl'4 scope = spfile;System altered.--启动时可以看到在实例阶段出现了版本号不⼀致的问题SQL> startup forceORACLE instance started.Total System Global Area 251658240 bytesFixed Size 1218796 bytesVariable Size 88082196 bytesDatabase Buffers 159383552 bytesRedo Buffers 2973696 bytesORA-00214: control file '/u01/app/oracle/oradata/orcl/control01.ctl' version1051 inconsistent with file '/u01/app/oracle/oradata/orcl/control02.ctl'version 1049--处理办法,⽤版本号⾼的控制⽂件覆盖版本号低的控制⽂件SQL> host cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/orcl/control02.ctl; SQL> host cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/orcl/control03.ctl; SQL> alter database mount;Database altered.SQL> alter database open;Database altered.对于控制⽂件丢失的情况下,通过查看参数⽂件中设置,使⽤操作系统命令逐个查看这些⽂件是否存在SQL> host ls /u01/app/oracle/oradata/orcl/control01.ctl/u01/app/oracle/oradata/orcl/control01.ctlSQL> host ls /u01/app/oracle/oradata/orcl/control02.ctl/u01/app/oracle/oradata/orcl/control02.ctl查看控制⽂件所在的⽬录可⽤空间及控制⽂件的⼤⼩,建议不要超过100MBSQL> host ls /u01/app/oracle/oradata/orcl/c*.ctl -lh-rw-r----- 1 oracle oinstall 6.8M May 23 10:55 /u01/app/oracle/oradata/orcl/control01.ctl-rw-r----- 1 oracle oinstall 6.8M May 23 10:55 /u01/app/oracle/oradata/orcl/control02.ctl-rw-r----- 1 oracle oinstall 6.8M May 23 10:55 /u01/app/oracle/oradata/orcl/control03.ctlSQL> ! df -hFilesystem Size Used Avail Use% Mounted on/dev/sda2 6.4G 3.9G 2.2G 64% //dev/sdd1 6.8G 3.7G 2.8G 58% /u01/dev/sdc2 1.2G 34M 1.1G 3% /home/dev/sdc1 760M 17M 704M 3% /tmp/dev/sda1 456M 18M 415M 5% /boottmpfs 450M 0 450M 0% /dev/shmnone 450M 104K 450M 1% /var/lib/xenstored控制⽂件的备份热备: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;--演⽰备份--⽤于归档模式下的恢复,直接覆盖到控制⽂件SQL> alter database backup controlfile to '/u01/app/oracle/control.bak';Database altered.--⽤于重建控制⽂件SQL> alter database backup controlfile to trace as '/u01/app/oracle/recreate_controlfile.txt'; Database altered.--使⽤RMAN备份RMAN> connect target /;connected to target database: ORCL (DBID=1242732291)RMAN> backup current controlfile; --handle为备份⽂件的路径Starting backup at 23-MAY-10using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: sid=148 devtype=DISKchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetincluding current control file in backupsetchannel ORA_DISK_1: starting piece 1 at 23-MAY-10channel ORA_DISK_1: finished piece 1 at 23-MAY-10piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2010_05_23/o1_mf_ncnnf_TAG20100523T131841_5zkgon2l_.bkp tag=TAG20100523T131841 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:05Finished backup at 23-MAY-10RMAN> backup database include current controlfile;Starting backup at 23-MAY-10using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: sid=141 devtype=DISKchannel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=/u01/app/oracle/oradata/orcl/system01.dbfinput datafile fno=00003 name=/u01/app/oracle/oradata/orcl/sysaux01.dbfinput datafile fno=00005 name=/u01/app/oracle/oradata/orcl/example01.dbfinput datafile fno=00006 name=/u01/app/oracle/oradata/orcl/tbs1_1.dbfinput datafile fno=00007 name=/u01/app/oracle/oradata/orcl/tbs1_2.dbfinput datafile fno=00002 name=/u01/app/oracle/oradata/orcl/undotbs01.dbfinput datafile fno=00004 name=/u01/app/oracle/oradata/orcl/users01.dbfchannel ORA_DISK_1: starting piece 1 at 23-MAY-10channel ORA_DISK_1: finished piece 1 at 23-MAY-10piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2010_05_23/o1_mf_nnndf_TAG20100523T132647_5zkh4sk2_.bkp tag=TAG20100523T132647 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:05:25channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetincluding current control file in backupsetincluding current SPFILE in backupsetchannel ORA_DISK_1: starting piece 1 at 23-MAY-10channel ORA_DISK_1: finished piece 1 at 23-MAY-10piece handle=/u01/app/oracle/flash_recovery_area/ORCL/backupset/2010_05_23/o1_mf_ncsnf_TAG20100523T132647_5zkhh5st_.bkp tag=TAG20100523T132647 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:14Finished backup at 23-MAY-10RMAN> show all;RMAN configuration parameters are:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # defaultCONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP OFF; # defaultCONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # defaultCONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # defaultCONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # defaultCONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/10g/dbs/snapcf_orcl.f'; # defaultRMAN> configure controlfile autobackup on; --将控制⽂件⾃动备份功能置为on;new RMAN configuration parameters:CONFIGURE CONTROLFILE AUTOBACKUP ON;new RMAN configuration parameters are successfully stored控制⽂件的恢复管理控制⽂件版本不⼀致的问题⽤较新版本的控制⽂件覆盖旧版本的控制⽂件直接修改参数control_file丢失问题归档模式下当归档⽇志全的时候,先做全备,然后使⽤备份的控制⽂件恢复即可当归档⽇志不全的时候,先做全备,然后建⽴新的控制⽂件即可⾮归档模式下先做全备,然后建⽴新的控制⽂件即可新建控制⽂件语句数据库处于mount及open状态执⾏alter database backup controlfile to trace as '<dir>';得到建⽴语句注意[no]archievelog [no]resetlogs 两个参数的区别版本不⼀致演⽰SQL> startupORACLE instance started.Total System Global Area 251658240 bytesFixed Size 1218796 bytesVariable Size 88082196 bytesDatabase Buffers 159383552 bytesRedo Buffers 2973696 bytesORA-00214: control file '/u01/app/oracle/oradata/orcl/control01.ctl' version1051 inconsistent with file '/u01/app/oracle/oradata/orcl/control02.ctl'version 1049--处理办法,⽤版本号⾼的控制⽂件覆盖版本号低的控制⽂件SQL> host cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/orcl/control02.ctl; SQL> host cp /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/orcl/control03.ctl; SQL> alter database mount;Database altered.SQL> alter database open;Database altered.--控制⽂件部分丢失的演⽰,原本有两个控制⽂件,丢失⼀个--处理办法:1.将存在的控制⽂件复制到⽬的路径并更改控制⽂件名字为正确的控制⽂件名称2.修改控控⽂件参数将丢失的控制⽂件去掉(⼀般不建议使⽤)SQL> alter system set control_files = ' /u01/app/oracle/oradata/orcl/c ontrol01.ctl',2 '/u01/app/oracle/oradata/orcl/control02.ctl' scope = spfile;System altered.SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area 251658240 bytesFixed Size 1218796 bytesVariable Size 75499284 bytesDatabase Buffers 171966464 bytesRedo Buffers 2973696 bytesORA-00205: error in identifying control file, check alert log for more info[oracle@robinson ~]$ tail -n 100 /u01/app/oracle/admin/orcl/bdump/alert_orcl.log..........................Tue Jun 8 19:03:42 2010starting up 1 shared server(s) ...MMON started with pid=11, OS id=4557CJQ0 started with pid=10, OS id=4555Tue Jun 8 19:03:44 2010ALTER DATABASE MOUNTTue Jun 8 19:03:44 2010ORA-00202: control file: '/u01/app/oracle/10g/dbs/ /u01/app/oracle/oradata/orcl/c ontrol01.ctl' ORA-27037: unable to obtain file statusLinux Error: 2: No such file or directoryAdditional information: 3Tue Jun 8 19:03:47 2010ORA-205 signalled during: ALTER DATABASE MOUNT...--从警告⽇志中得知,⽂件名为c ontrol01.ctl的⽂件不存在,故将其改为正确的⽂件名。
探讨Oracle数据库管理之控制文件
探讨Oracle数据库管理之控制文件杜战伟【摘要】控制文件作为Oracle数据库管理的物理文件之一,数据库的名字以及数据文件的位置信息由它记录。
控制文件一旦损坏,电脑将无法正常工作。
因此控制文件十分重要,其管理的重点在于防御。
本文将对控制文件的相关内容作介绍,为安全管理Oracle控制文件提出了相关的方法。
%The control file was one of the physical files of the Oracle database management,the name and loaction of data files were recorded by it.Once the control file is damaged,the computer will not work properly.So the control file is very important,the focus of its management lies in defense.This article will introduce the related content of the control file, and put forward the related methods for the safety management of Oracle control file.【期刊名称】《电子测试》【年(卷),期】2016(000)010【总页数】3页(P90-91,98)【关键词】Oracle;数据库管理;控制文件【作者】杜战伟【作者单位】西安秦皇医院信息部,西安,710016【正文语种】中文控制文件是一个很小的二进制文件,用于对数据库的维护和记录,无论何时打开Oracle数据库,在此之前Oracle服务器都要对控制文件进行访问。
控制文件一旦出现问题,会导致Oracle数据库无法正常工作。
数据库的启动以及正常运行都离不开控制文件。
Oracle控制文件
Oracle控制文件数据库控制文件是一个很小的二进制文件,在其中包含了关于数据库物理结构的重要信息。
通过在加载数据库时读取控制文件,Oracle才能找到自己所需的操作系统文件(数据文件、重做日志文件等)。
控制文件对于数据库的成功启动和正常运行是至关重要的。
在加载数据库时,实例必须首先找到数据库的控制文件。
如果控制文件正常,实例才能加载并打开数据库。
但是如果控制文件中记录了错误的信息,或者实例无法找到一个可用的控制文件,数据库将无法加载,当然也法打开。
在数据库运行的过程中,Oracle会不断地更新控制文件中的内容,因此控制文件必须在整个数据库打开期间始终保持可用状态。
如果由于某种原因导致控制文件不可用,则数据库将会崩溃。
每个数据库必须至少拥有一个控制文件,一个数据库虽然可以同时拥有多个控制文件,但是一个控制文件只能属于一个数据库。
在数据库的控制文件中包含有关于该数据库物理结构的信息,控制文件中的主要信息包括:数据库的名字、检查点信息、数据库创建的时间戳、所有的数据文件、重做日志文件、归档日志文件信息和备份信息等。
有了控制文件中的这些信息,Oracle就可以确定那些文件是数据文件,现在的重做日志文件,这些都是系统启动和运行的基本条件。
由于控制文件是非常重要的,一般采用多个镜相复本来保护控制文件,或采用RAID来保护控制文件。
控制文件的丢失,将使数据库的恢复变的很复杂。
控制文件信息可以从V$CONTROLFILE中查询获得:SQL> select name from v$controlfile;NAME-------------------------------------------------D:\APP\MANAGER\ORADATA\ORCL\CONTROL01.CTLD:\APP\MANAGER\ORADATA\ORCL\CONTROL02.CTLD:\APP\MANAGER\ORADATA\ORCL\CONTROL03.CTL。
控制文件管理概要
7.2 创建控制文件
创建新的控制文件 3. 创建新控制文件的过程 (2)关闭数据库。 如果数据库处于运行状态,尽可能使用正常模式 关闭数据库。否则,使用IMMEDIATE或ABORT 选项作为最后的关闭手段。 (3)在操作系统中备份所有的数据文件和联机重做 日志文件。 (4)启动一个新的实例,但不要装载和打开数据库。 因为在加载数据库时,实例将打开控制文件。 SQL> START NOMOUNT;
7.2 创建控制文件
创建多路控制文件 【任务7.1】 为Oracle数据库新增一个多路控 制文件。 使用多路控制文件是保证控制文件安 全可靠的好方法。多路控制文件是由初始 化参数文件的CONTROL_FILES变量设置。 在Oracle 9i中,初始化参数文件分为 SPFILE和PFILE两类,针对不同的初始化 参数文件,创建多路控制文件的方法不同。
7.2 创建控制文件
创建多路控制文件
1.利用SPFILE创建多路控制文件 (3)关闭数据库 SQL> SHUTDOWN NORMAL (4)在操作系统中,将已有的控制文件复制,修改 名称后保存到刚才增加的控制文件指定位置。这 一步必须做,否则数据库无法正常启动 (5)重新启动数据库,使控制文件的改变生效 SQL> STARTUP
SQL> STARTUP 2 PFILE=<ORACLE_HOME>\DATABASE\INIT.ORA
7.2 创建控制文件
创建新的控制文件
【任务7.2】在控制文件无法使用时,为 Oracle数据库新建一个控制文件。 1.何时需要创建新的控制文件 所有数据库的控制文件都受到永久性损坏, 并且没有可用的备份文件。 希望改变某个数据库参数的永久性设置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle控制文件
原理:
在启动数据库实例的时候,Oracle会根据初始化参数的查找控制文件,并读取控制文件中的內容,然后根据控制文件中的信息(数据库名称、数据文件、日志文件的名称和位置)在实例和数据库之间建立起联系。
控制文件一般是一个很小(大小在10M范围内)的二进制文件,含有数据库结构信息。
可以将控制文件理解为物理数据库的一个元数据存储库。
控制文件在数据库创建时被自动创建,在数据库发生物理变化时更新。
只有Oracle进程才能够安全的更新控制文件的內容,所有任何时候都不要视图手动编辑控制文件。
控制文件记录对应数据库的结构信息和数据库当前的参数设置,其主要內容包含如下
A.数据库名称和SID标识
B.数据文件和日志文件列表(包括文件名称和对应路径信息)
C.数据库创建的时间戳
D.表空间的信息
E.当前重做日志文件序列号
F.归档日志信息
G.检查点信息
H.回滚段(UNDO SEGMENT)的起始和结束
I.备份数据文件信息
为了保护控制文件:实行多路复用控制文件和备份控制文件
多路复用控制文件:指在系统不同的位置上同时存放多个控制文件的副本,在这种情况下,如果多路复用控制文件的某个磁盘发生物理损害导致其所包含的控制文件损坏,数据库将被关闭(在实例启动的情况下),此时就可以利用另一个磁盘中保存的控制文件来恢复被损坏的控制文件,然后重启数据库。
实现多路复用的两个步骤:
1.更改Control_files参数
alter system set control_files=
'F:\APP\ADMINISTRATOR\ORADATA\SMLORCL\CONTROL01.CTL',
'F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\SMLORCL\CONTROL02.CTL',
'F:\OOOO\CONTROL03.CTL'
scope=spfile;
2.复制控制文件
A.退出sqlplus环境
B.进入服务关闭OracleServiceORCL和OracleDBCConsoleORCL服务,手动停止这些服务。
C.找到control_files参数指定的第一个空间文件,然后将控制文件复制到control_files参数中新增的目录下,并按照参数重新设置名称CONTROL03.CTL
D.启动关闭的服务,打开数据库。
select name from v$control_files 查询控制文件是否启用。
手动创建新的控制文件
1.查看数据文件和重做日志文件
如果数据库中的控制文件和日志文件都丢失,数据库也无法打开,无法通过数据字典来获得数据文件和日志文件的位置信息,唯一的办法就是查看警告日志文件中的內容。
如果数据库可以打开,可以通过数据字典来查询日志文件和数据文件的位置
Select member from v$logfile
Select name from v$datafile
2.关闭数据库shutdown immediate
3.备份文件:物理备份所有数据文件和日志文件。
因为创建新的控制文件时,如果操作不当可能会损坏数据文件和日志文件。
4.启动数据库实例,但不加载数据库(加载数据库时实例会打开控制文件)。
startup nomount
5.创建新的控制文件
Create controlfile
Reuse database “orcl” //database后面的名称要与spfile文件中的DB_NAME参数完全相同。
Logfile //指定原有的日志文件
Group 1 ‘F:\APP\ADMINISTRATOR\ORADATA\SMLORCL\REDO01..LOG’ ,
Group 2 ‘F:\APP\ADMINISTRATOR\ORADATA\SMLORCL\REDO02.LOG’,
Group 3 ‘F:\APP\ADMINISTRATOR\ORADATA\SMLORCL\REDO03.LOG ‘
Datafile //指定原有而当数据文件
‘F:\APP\ADMINISTRATOR\ORADATA\SMLORCL\SYSTEM01.DBF’,
‘F:\APP\ADMINISTRATOR\ORADATA\SMLORCL\SYSAUX01.DBF’,
‘F:\APP\ADMINISTRATOR\ORADATA\SMLORCL\UNDOTBS01.DBF’,
‘F:\APP\ADMINISTRATOR\ORADATA\SMLORCL\USERS01.DBF’,
‘F:\APP\ADMINISTRATOR\ORADATA\SMLORCL\EXAMPLE01.DBF’
Maxlogfiles 50 //最大重做日志文件数,永久性参数
Maxlogmembers 3 //最大日志组成员数,永久性参数
Maxinstances 6 //最大实例数,永久性参数
Maxdatafiles 200//最大数据文件数,永久性参数
Noresetlogs //任然使用原有重做日志文件resetlogs
Noarchivelog; //不启用归档模式archivelog
6.编辑参数
通过编辑spfile的初始化参数control_files,使其指向新的控制文件
alter system set control_files=
'F:\APP\ADMINISTRATOR\ORADATA\SMLORCL\CONTROL01.CTL',
'F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\SMLORCL\CONTROL02.CTL'
scope=spfile;
7.打开数据库
设置为noresetlogs。
打开数据库使用:alter database open;
设置为resetlogs。
打开数据库使用:alter database open resetlogs;
备份和恢复控制文件
备份控制文件:1.备份为二进制文件2.备份脚本文件
二进制:
Aller database backup controlfile
To ‘F:\backup\controlfile1.bkp’;
可读的文本文件:
Alter database backup controlfile
To trace;
将控制文件以文本形式备份时,也称为跟踪文件,实际上就是一个sql脚本。
跟踪文件存放的位置使用spfile 中的参数user_dump_dest参数来设定。
Show parameter user_dump_dest 查看跟踪文件的位置
2.恢复控制文件
控制文件本身损坏:复制多路复用的一个控制文件进行覆盖。
磁盘介质永久性损坏:修改spfile指向新的多路复用位置。
删除控制文件
注意:控制文件至少保留两个。
1.关闭数据库
2.编辑spfile的初始化参数control_files 清除掉打算要删除的文件名称
3.重新启动数据库
然后删除对应物理磁盘上的控制文件。
查询控制文件
视图:
v$controlfile 包含所有控制文件的名称和状态信息。
v$controlfile_record_section 包含控制文件中的各个记录文档段的信息。
v$parameter 包含了系统的所有初始化参数,从中可以查询参数control_files的值。