oracle控制文件

转载请注明出处 

控制文件(Control
File)
是Oracle的物理文件之一,它记录了数据库的物理结构(数据文件、日志文件等的名称和位置),数据库转载和打开都需要控制文件,

还记录了日志序列号,检查点和日志历史信息,同步和恢复数据库都需要控制文件。

控制文件包含以下信息:

数据名称

数据文件名称和位置

重做日志名称和位置

表空间名称和位置

当前日志序列号

检查点信息

日志历史信息

RMAN信息

查询控制文件T-SQL:

SQL> col name format
a30

SQL> select * from
V$controlfile;

STATUS        
NAME                          
IS_REC BLOCK_SIZE FILE_SIZE_BLKS

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

/home/oracle_11/app/oradata/or
NO         
16384           
594

cl/control01.ctl

/home/oracle_11/app/flash_reco
NO         
16384           
594

very_area/orcl/control02.ctl

/home/oracle_11/app/oradata/or
NO         
16384           
594

cl/control03.ctl

SQL> col value format
a30

SQL> select
name,type,value from v$parameter where name=‘control_files‘;

NAME                                
TYPE
VALUE

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

control_files                          
2 /home/oracle_11/app/oradata/or

cl/control01.ctl,
/home/oracle

_11/app/flash_recovery_area/or

cl/control02.ctl,
/home/oracle

_11/app/oradata/orcl/control03

.ctl

SQL> show parameter
control_files;

NAME                                
TYPE

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

VALUE

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

control_files                       
string

/home/oracle_11/app/oradata/or

cl/control01.ctl,
/home/oracle

_11/app/flash_recovery_area/or

cl/control02.ctl,
/home/oracle

_11/app/oradata/orcl/control03

.ctl

多元化控制文件:因为控制文件非常重要所以DBA必须确保控制文件不会丢失或者损坏,所以建议采用2个或者2个以上的控制文件(最多支持8个),控制文件应该尽量放在不同的磁盘上。

使用PFILE

1.手动修改Pfile
control_files=("D:\oracle\oradata\orcl\control01.ctl",
"D:\oracle\oradata\orcl\control02.ctl",
"D:\oracle\oradata\orcl\control03.ctl")

shutdown immediate

2.比如3是新加的  host copy 
"D:\oracle\oradata\orcl\control02.ctl",
"D:\oracle\oradata\orcl\control03.ctl"

3.startup pfile=   (一般在D:\Oracle\admin\orcl\pfile)

  使用SPFILE --比较经常使用

1.ALTER SYSTEM SET
CONTROL_FILES=‘/home/oracle_11/app/oradata/orcl/control01.ctl‘,‘/home/oracle_11/app/flash_recovery_area/orcl/control02.ctl‘,‘/home/oracle_11/app/oradata/orcl/control03.ctl‘
SCOPE=SPFILE

shutdown immediate

2.比如3是新加的  host copy (linux采用cp)
/home/oracle_11/app/oradata/orcl/control01.ctl 
/home/oracle_11/app/oradata/orcl/control03.ctl

(注意linux下必须是oracle用户)

3.startup open;

  创建控制文件:

CREATE CONTROLFILE REUSE DATABASE "demo" NORESETLOGS
NOARCHIVELOG

MAXLOGFILES 32--最大日志组

MAXLOGMEMBERS 2--最大日志文件

MAXDATAFILES 32

MAXINSTANCES 1

MAXLOGHISTORY 449

LOGFILE

GROUP 1
‘/path/oracle/dbs/t_log1.f‘  SIZE 500K,

GROUP 2
‘/path/oracle/dbs/t_log2.f‘  SIZE 500K

# STANDBY LOGFILE

DATAFILE

‘/path/oracle/dbs/t_db1.f‘,

‘/path/oracle/dbs/dbu19i.dbf‘,

‘/path/oracle/dbs/tbs_11.f‘,

‘/path/oracle/dbs/smundo.dbf‘,

‘/path/oracle/dbs/demo.dbf‘

CHARACTER SET WE8DEC
---代表字符集

;

相关参考:

一、什么情况下要手工重新创建控制文件?

  通常情况下,在数据库创建过程中,系统就会自动创建控制文件。不过在遇到一些比较特殊的情况是,

数据库管理员就需要手工重新创建新的控制文件。这些特殊情况,据笔者所知,主要有如下两种情况。

  一是希望改变某个数据库参数的永久性设置。在创建数据库的时候,数据库管理员需要设置一些永久性的参数,如数据库的名字等等。有时候在一些特殊的情况下,需要修改这些永久性的参数。如企业后来随着规模的扩大,一台数据库服务器已经不能够满足企业日常作业的需要。为此,数据库管理员决定采用分布式环境来改善数据库的性能。可是,在刚创建数据库的时候,由于没有考虑到这种情况,所以给数据库命名的时候比较简便。现在需要创建多个数据库,管理员为了统一各个数据库的命名策略,即可能需要更改数据库的名字,以符合这个命名规则。遇到这种情况,数据库管理员必须要手工重新建立控制文件,才能够更改数据库名字。

  二是所有数据库的控制文件都遭受到永久性损坏。通常情况下,数据库处于Archivelog模式时,ARCH进程会自动用归档日志文件名和日志序列号之类的信息修改控制文件。而当管理员利用RMAN执行备份操作时,RMAN的备份信息也会被记录到控制文件中。所以,如果当控制文件发生永久性损坏时,那么对于数据库的影响是致命的。如此此时,数据库管理员因为一时疏忽,没有做好数据库控制文件的备份(或者说备份文件比较早),那么此时数据库管理员不得不手工创建新的控制文件。

  二、如何创建控制文件?

  手工创建新的控制文件比较麻烦。不过数据库管理员若按照下面的步骤一步步来的话,还是可以创建一个完好无损的控制文件。

  第一步:制作一个包含数据库据所有数据文件和重做日志文件的列表。

  因为数据库启动时必须要有数据文件的相关信息。为此要创建新的控制文件,数据库管理员首先就需要收集数据库所有数据文件和重做日志文件的列表。这个列表可以从两个地方取得。一是如果对控制文件进行了备份的话,则可以从备份的控制文件中获取这些数据文件与重做日志文件的相关信息。如果没有控制文件的备份或者控制文件备份损坏的话,则可以从动态性能视图中查询相关的信息。如利用查询语句SELECT
NAME FROM
V$DATEFILE语句来查询所有的数据文件信息。此时的一个前提条件就是存在控制文件的最新备份文件或者数据库仍然可以正常启动。也就是说,如果需要改变数据库的永久性参数则可以利用这种方式获取所需要的信息。

  但是如果此时数据库已经无法启动无法找到这些信息,或者控制文件已经受到严重破坏又没有合适的控制文件备份的话,那么上面这些方法就不适用了。此时数据库管理员只有人工定位构成数据库的所有数据文件和重做日志文件。也就是说,数据库管理员要根据日常工作中的笔记来整理这些记录。通常情况下,笔者新建数据文件的时候,都会有书面的记录。当遇到这个意外情况时,这些书面的记录就起到作用了。

  注意如此此时数据库管理员收集到的数据文件不全,那么在数据库启动的时候就会发生错误。此时管理员就需要根据系统提供的错误信息来查找原因。在创建新的控制文件并且使用它打开数据库之后,Oracle会对数据字典和控制文件的内容进行检查。如果发现数据字典包含了某个数据文件、而控制文件中则没有列出这个数据文件,Oracle数据库就会报错。Oracle将会在新的控制文件中创建一个名为Missingnnn占位符入口。这里最后面的NNN是十进制的文件编号。此时数据库管理员就可以凭借这个信息来判断是否缺少必要的数据文件。找到数据文件之后,可以通过修改这个值,让数据库找到相对应的真正数据文件。

  第二步:关闭数据库。

  如果数据库仍然处于启动状态,需要把数据库先关闭掉。在关闭的时候,如果能够采用正常模式关闭的,则最好采用正常模式关闭。而其他关闭模式,则是不得已而为之的做法。采用正常模式关闭,可以减少数据库重新启动过程中可能出现的问题。

  另外为安全起见,关闭数据库之后,最好把数据库中所有的数据文件、重做日志文件、参数文件备份到其他地方。这主要是为了不小心而给数据库造成无法挽回的损失。虽然这不是必须的,但是笔者强烈建议这么做。

oracle控制文件,码迷,mamicode.com

时间: 2024-12-26 07:28:39

oracle控制文件的相关文章

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

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

Oracle 控制文件(CONTROLFILE)

--============================= -- Oracle 控制文件(CONTROLFILE) --============================= 一.Oracle 控制文件 为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份 记录了当前数据库的结构信息,同时也包含数据文件及日志文件的信息以及相关的状态,归档信息等等 在参数文件中描述其位置,个数等等.通常采用分散放开,多路复用的原则.在mount阶段被读取,open阶段一直被使

oracle 控制文件的重建

目录 oracle 控制文件的重建 NORESETLOGS RESETLOGS oracle 控制文件的重建 不到最后时刻,如三个控制文件都已损坏,又没有控制文件的备份.还是不要重建控制文件,处理不好就会有数据丢失. NORESETLOGS Set #1. NORESETLOGS case -- -- The following commands will create a new control file and use it -- to open the database. -- Data

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 控制文件误删除手动恢复小测试

测试系统 OLinux 5.9 oracle版本 11.2.0.4 备份控制文件 1.备份到trace文件 SQL> alter database backup controlfile to trace; Database altered. 查看告警日志,确定备份控制文件trace的位置信息 alter database backup controlfile to trace Backup controlfile written to trace file /u01/app/oracle/dia

ORACLE控制文件一致性【weber出品】

一.首先控制文件有什么作用呢? 控制文件记录了如下信息:1.数据库的创建时间2.数据文件的位置3.日志文件的位置等作用是指导数据库 找到数据文件,日志文件并将数据库启动到 open 状态. 与其用文字来描述,不如我们来看看control_file里面有些什么好了.然后在一一分析: SQL> show parameter control_file NAME TYPE VALUE ------------------------------------ ----------- -----------

Oracle控制文件多路复用

一.控制文件多路复用 1.show parameter control --查看控制文件信息 show parameter spfile --查看是否有spfile create pfile from spfile; --生成pfile shutdown immediate --关库 2.修改pfile文件,添加多个路径 vi $ORACLE_HOME/dbs/initORCL.ora 将原有controlfile拷贝到新添加路径目录: cp -- 3.create spfile from pf

oracle 控制文件多路复用

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

Oracle 控制文件和日志文件

管理控制文件 在Oracle数据库中,控制文件是一个很小(大小一般在10MB范围内)的二进制文件,含有数据库的结构信息,包括数据文件和日志文件的信息.可以将控制文件理解为物理数据库的一个元数据存储库.控制文件在数据库创建时被自动创建,并在数据库发生物理变化时更新.控制文件被不断更新,并且在任何时候都要保证控制文件是可用的.只有Oracle进程才能够安全地更新控制文件的内容,所以,任何时候都不要试图手动编辑控制文件. 由于控制文件在数据库中的重要地位,所以保护控制文件的安全非常重要,为此Oracl