首页  >  文章  >  数据库  >  Oracle 控制文件 说明

Oracle 控制文件 说明

WBOY
WBOY原创
2016-06-07 17:28:221036浏览

一. Oracle 控制文件内容 我们可以通过v$controlfile_record_section 视图查看控制文件里包含的内容。 SQLgt; select type

一. Oracle 控制文件内容

 

我们可以通过v$controlfile_record_section 视图查看控制文件里包含的内容。

 

SQL> select type from v$controlfile_record_section;

 

TYPE

--------------------------------------------------------

DATABASE

CKPT PROGRESS

REDO THREAD

REDO LOG

DATAFILE

FILENAME

TABLESPACE

TEMPORARY FILENAME

RMAN CONFIGURATION

LOG HISTORY

OFFLINE RANGE

ARCHIVED LOG

BACKUP SET

BACKUP PIECE

BACKUP DATAFILE

BACKUP REDOLOG

DATAFILE COPY

BACKUP CORRUPTION

COPY CORRUPTION

DELETED OBJECT

PROXY COPY

BACKUP SPFILE

DATABASE INCARNATION

FLASHBACK LOG

RECOVERY DESTINATION

INSTANCE SPACE RESERVATION

REMOVABLE RECOVERY FILES

RMAN STATUS

THREAD INSTANCE NAME MAPPING

MTTR

DATAFILE HISTORY

STANDBY DATABASE MATRIX

GUARANTEED RESTORE POINT

RESTORE POINT

DATABASE BLOCK CORRUPTION

ACM OPERATION

FOREIGN ARCHIVED LOG

 

37 rows selected.

 

二. 可以通过dump看到控制文件内

2.1 直接dump controlfile

alter system set events'immediate trace name controlf level 10'

 

2.2. 使用alter database backup controlfile to filename

 

以上两种方法生成的dump文件是不可读的即乱码。 只有生成trace后,才是可读的。

 

2.2. 使用alter database backup controlfile to trace

生成的trace 文件在udump目录下,可以通过日期来判断。

SQL>show parameteruser_dump_dest

 

也可以使用如下SQL 查询对应的trace 文件:

 

SELECT a.VALUE ||b.symbol|| c.instance_name|| '_ora_' ||d.spid|| '.trc'

trace_file

FROMv$parameter

symbol

FROMv$parameter

b,

(SELECTinstance_name FROMv$instance) c,

(SELECTspid

FROMv$session s,v$process p,v$mystat m

statistic#d

 

TRACE_FILE

--------------------------------------------------------------------------------

/u01/app/oracle/admin/dave/udump/dave_ora_7215.trc

 

整个Trace 的内容如下:

[oracle@qs-dmm-rh2 udump]$ cat dave_ora_7215.trc

/u01/app/oracle/admin/dave/udump/dave_ora_7215.trc

Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 -Production

With the Partitioning, OLAP, Data Mining and Real ApplicationTesting options

ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1

System name: Linux

Node name: qs-dmm-rh2

Release: 2.6.18-194.el5

Version: #1 SMP Tue Mar16 21:52:43 EDT 2010

Machine: i686

Instance name: dave

Redo thread mounted by this instance: 0

Oracle process number: 15

Unix process pid: 7215, image: oracle@qs-dmm-rh2 (TNS V1-V3)

 

*** ACTION NAME:() 2011-03-17 22:05:46.401

*** MODULE NAME:(sqlplus@qs-dmm-rh2 (TNS V1-V3)) 2011-03-1722:05:46.401

*** SERVICE NAME:() 2011-03-17 22:05:46.401

*** SESSION ID:(159.1) 2011-03-17 22:05:46.401

ORA-01160: file is not a data file

ORA-01110: data file : '/u01/app/oracle/oradata/dave/temp01.dbf'

*** 2011-03-17 22:08:25.791

Control file created with size 370 blocks

*** 2011-03-17 22:10:21.444

tkcrrsarc: (WARN) Failed to find ARCH for message (message:0x1)

tkcrrpa: (WARN) Failed initial attempt to send ARCH message(message:0x1)

kwqmnich: current time:: 14: 10: 24

kwqmnich: instance no 0 check_only flag 1

kwqmnich: initialized job cache structure

krvscm( ): Validating controlfile with logical metadata

krvscm( ): Initial controlfile state

krvscm( ): kccdiflg [400001]kccdifl2 [1000]

krvscm( ): kccdi2ldscn[0x0000.00000000]

krvscm( ): kccdi2lrscn[0x0000.00000000]

krvscm( ): Inspecting logical metadata

krvscm( ): Metadata state

krvscm( ): hasPrepSwitchSta[0]

krvscm( ): hasPrepSwitchPri[0]

krvscm( ): hasReceivedDict[0]

krvscm( ): hasDumpedDict [0]

krvscm( ): hasCommittedBor[0]

krvscm( ): hasSwitchedFromPri [0]

krvscm( ): hasStartedTa [0]

krvscm( ): hasValidSess [0]

krvscm( ): hasTxnConsistency[0]

krvscm( ): hasCleanlyShutdown [0]

krvscm( ):从元数据生成新的控制文件状态

krvscm( ):用新状态更新控制文件

krvscm( ):新的控制文件状态

krvscm( ): kccdiflg [400001]kccdifl2 [1000]

krvscm( ): kccdi2ldscn[0x0000.00000000]

krvscm( ): kccdi2lrscn[0x0000.00000000]

krvscm( ): 更新与控制文件状态相关的 SGA

krvscm( ): 验证完成

*** 2011-03-17 22:13:21.115

-- 以下是当前系统范围的 REDO 日志存档相关

-- 参数,可以包含在数据库初始化文件中。

--

-- LOG_ARCHIVE_DEST=''

-- LOG_ARCHIVE_DUPLEX_DEST=''

--

-- LOG_ARCHIVE_FORMAT=%t_%s_%r.dbf

--

-- DB_UNIQUE_NAME="dave_st"

--

-- LOG_ARCHIVE_CONFIG='发送、接收'

-- LOG_ARCHIVE_CONFIG='DG_CONFIG=("dave_pd")'

-- LOG_ARCHIVE_MAX_PROCESSES=2

-- STANDBY_FILE_MANAGEMENT=AUTO

-- STANDBY_ARCHIVE_DEST=/u01/archivelog

-- FAL_CLIENT=dave_st

-- FAL_SERVER=dave_pd

--

-- LOG_ARCHIVE_DEST_2='SERVICE=dave_pd'

-- LOG_ARCHIVE_DEST_2='可选重新打开=120 NODELAY'

-- LOG_ARCHIVE_DEST_2='LGWR NOAFFIRM NOEXPEDITE NOVERIFYASYNC=61440'

-- LOG_ARCHIVE_DEST_2='注册无备用节点依赖项'

-- LOG_ARCHIVE_DEST_2='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED'

-- LOG_ARCHIVE_DEST_2='DB_UNIQUE_NAME=dave_pd'

-- LOG_ARCHIVE_DEST_2='VALID_FOR=(STANDBY_LOGFILE,STANDBY_ROLE)'

-- LOG_ARCHIVE_DEST_STATE_2=启用

--

-- LOG_ARCHIVE_DEST_1='LOCATION=/u01/archivelog'

-- LOG_ARCHIVE_DEST_1='可选重新打开=300 NODELAY'

-- LOG_ARCHIVE_DEST_1='ARCH NOAFFIRM NOEXPEDITE NOVERIFY SYNC'

-- LOG_ARCHIVE_DEST_1='注册无备用节点依赖项'

-- LOG_ARCHIVE_DEST_1='NOMAX_FAILURE NOQUOTA_SIZE NOQUOTA_USED'

-- LOG_ARCHIVE_DEST_1='DB_UNIQUE_NAME=dave_st'

-- LOG_ARCHIVE_DEST_1='VALID_FOR=(PRIMARY_ROLE,ONLINE_LOGFILES)'

-- LOG_ARCHIVE_DEST_STATE_1=启用

--

-- 下面是两组 SQL 语句,每组都会创建一个新的

-- 控制文件并用它来打开数据库。第一集开启

-- 带有 NORESETLOGS 选项的数据库,并且应该仅在

时使用

--所有在线日志的当前版本均可用。第二个

-- set 使用 RESETLOGS 选项打开数据库,应该使用

-- 如果在线日志不可用。

-- 可以将适当的语句集从跟踪复制到

-- 脚本文件,根据需要进行编辑,并在存在

时执行

--需要重新创建控制文件。

--

-- 设置 #1。 NORESETLOGS 案例

--对使用noresetlogs 的说明

--

-- 以下命令将创建一个新的控制文件并使用它

-- 打开数据库。

-- 恢复管理器使用的数据将会丢失。

-- 离线媒体恢复可能需要额外日志

-- 仅当所有在线日志的当前版本为

时才使用此选项

--可用。

--挂载创建好的控制文件后,执行以下SQL

--语句将数据库放置在适当的

--保护模式:

-- 更改数据库设置备用数据库以最大化性能

启动NOMOUNT

创建控制文件重用数据库“DAVE”NORESETLOGS 归档日志

最大日志文件 16

MAXLOGMEMBERS 2

最大数据文件数 30

最大实例 1

MAXLOGHISTORY 292

日志文件

组 1'/u01/app/oracle/oradata/dave/redo01.log' 大小 50M,

组 2'/u01/app/oracle/oradata/dave/redo02.log' 大小 50M,

组 3'/u01/app/oracle/oradata/dave/redo03.log' 大小 50M

-- 备用日志文件

数据文件

'/u01/app/oracle/oradata/dave/system01.dbf',

'/u01/app/oracle/oradata/dave/undotbs01.dbf',

'/u01/app/oracle/oradata/dave/sysaux01​​.dbf',

'/u01/app/oracle/oradata/dave/users01.dbf'

字符集ZHS16GBK

;

--以上是创建控制文件的语法

-- 重新创建化身表的命令

-- 以下日志名称必须更改为

上的现有文件名

--磁盘。每个分支的任何一个日志文件都可用于

--重新创建转世记录。

-- 更改数据库寄存器日志文件 '/u01/archivelog/1_1_746031707.dbf';

-- 如果任何数据文件被恢复备份,则需要恢复,

--或者如果上次关闭不是正常或不立即。

恢复数据库

--所有日志都需要归档,需要进行日志切换。

更改系统存档日志全部;

-- 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/dave/temp01.dbf'

SIZE 32505856 REUSE AUTOEXTEND OFF;

--这里是要注意的地方,重建控制文件的时候,,不能写上临时表空间,等控制文件创建完毕之后,在手工的执行SQL加上临时表空间。

-- End of tempfile additions.

--

-- Set#2. RESETLOGS case

--第二种情况,使用resetlogs 的说明

--

-- 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 STANDBYDATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "DAVE" RESETLOGS ARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 2

MAXDATAFILES 30

MAXINSTANCES 1

MAXLOGHISTORY 292

LOGFILE

GROUP 1'/u01/app/oracle/oradata/dave/redo01.log' SIZE 50M,

GROUP 2'/u01/app/oracle/oradata/dave/redo02.log' SIZE 50M,

GROUP 3 '/u01/app/oracle/oradata/dave/redo03.log' SIZE 50M

-- STANDBY LOGFILE

DATAFILE

'/u01/app/oracle/oradata/dave/system01.dbf',

'/u01/app/oracle/oradata/dave/undotbs01.dbf',

'/u01/app/oracle/oradata/dave/sysaux01.dbf',

'/u01/app/oracle/oradata/dave/users01.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 '/u01/archivelog/1_1_746031707.dbf';

-- Recovery is required if any of the datafilesare 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/dave/temp01.dbf'

SIZE 32505856 REUSE AUTOEXTEND OFF;

-- End of tempfile additions.

--

 

注意里面的几个参数:

(1) MAXDATAFILES

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn