Decode360's Blog

业精于勤而荒于嬉 QQ:150355677 MSN:decode360@hotmail.com

  BlogJava :: 首页 :: 新随笔 :: 联系 ::  :: 管理 ::
  397 随笔 :: 33 文章 :: 29 评论 :: 0 Trackbacks
控制文件及其创建
 
    今天来学习一下Oracle中一个比较重要的文件类型——控制文件。控制文件主要用于记录Oracle实例中的各个系统信息,例如数据文件、日志、名称、版本、检查点SCN等信息,对于数据库的还原、以及一致性控制都有很重要的作用。
 
一、控制文件
 
    控制文件是一个小型的二进制文件,可以记录数据库的物理结构。包括:
 
    * 数据库名称
    * 数据文件和联机重做日志文件的名称和位置
    * 数据库创建的时标
    * 当前日志的序号
    * 检验点信息
 
    一般Oracle数据库创建时都会创建至少两个或两个以上的控制文件。
 
二、控制文件的标准
 
    1、控制文件的文件名
 
    由CONTROL_FILES参数来指定控制文件名。
    若没有指定该参数,则生成默认文件名,默认文件名在各个操作系统中各不相同
 
    2、控制文件的复用
 
    一般不同的控制文件都存放在不同的磁盘,当某个磁盘损坏时可以通过在其他磁盘上的控制文件进行复用,不需要任何的介质恢复。
 
    * 找到CONTROL_FILES参数列出所有文件名,将相应内容写入所有控制文件
    * CONTROL_FILES中列出的第一个文件是Oracle数据库运行期间唯一可以读取的文件
    * 数据库运行期间,任何控制文件变为不可用,则实例不能继续运行
 
    3、备份控制文件
 
    进行以下数据库物理结构改变之后,需要备份控制文件
 
    * 添加、取消或重命名数据文件
    * 添加或撤销表空间,或更改表空间读写状态
    * 添加或取消重做日志文件
 
    4、控制文件大小管理
 
    MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES参数控制
 
 
三、创建控制文件
 
    1、创建初始化控制文件
 
    CONTROL_FILES = (/u01/oracle/prod/control01.ctl,
                     /u02/oracle/prod/control02.ctl,
                     /u03/oracle/prod/control03.ctl)
 
    注:若已经存在与指定名同名的文件,则在CREATE DATABASE语句中指定CONTROLFILE REUSE子句。而且新控制文件与原先控制文件的SIZE必须相同。
 
    2、创建额外副本、重命名和重定位控制文件
 
    ① 关闭数据库
    ② 在操作系统中复制、修改原控制文件
    ③ 修改CONTROL_FILES,添加或修改新的控制文件名
    ④ 重新启动数据库
 
    3、创建新的控制文件
 
    以下情况可能会需要重新创建新的控制文件:
 
    * 数据库所有控制文件都收到永久性损坏,且无任何备份
    * 希望修改数据库参数的永久性设置,例如:SID、MAXDATAFILES、MAXLOGFILES、MAXLOGMEMBERS、MAXLOGHISTORY、MAXINSTANCES等参数
 
    4、创建语句示例
 
    CREATE CONTROLFILE
    SET DATABASE prod
    LOGFILE GROUP 1 ('/u01/oracle/prod/redo01_01.log',
                     '/u01/oracle/prod/redo01_02.log'),
            GROUP 2 ('/u01/oracle/prod/redo02_01.log',
                     '/u01/oracle/prod/redo02_02.log'),
            GROUP 3 ('/u01/oracle/prod/redo03_01.log',
                     '/u01/oracle/prod/redo03_02.log')
    NORESETLOGS
    DATAFILE '/u01/oracle/prod/system01.dbf' SIZE 3M,
             '/u01/oracle/prod/rbs01.dbf' SIZE 5M,
             '/u01/oracle/prod/users01.dbf' SIZE 5M,
             '/u01/oracle/prod/temp01.dbf' SIZE 5M
    MAXLOGFILES 50
    MAXLOGMEMBERS 3
    MAXDATAFILES 200
    MAXINSTANCES 6
    ARCHIVELOG;
 
    注:CREATE CONTROLFILE 语句可能会损坏数据文件和联机重做日志文件,省略文件名会引起文件中数据的丢失,或失去访问完整数据库的能力,所以在使用这条语句时需要特别小心。
 
    5、创建步骤(严格遵守)
 
    ① 制作包括数据库所有数据文件和联机重做日志文件的列表,可以使用以下SQL列出清单
        selectmemberfrom v$logfile; --联机重做日志文件

        select name from v$datafile; -- 数据文件

        select value from v$parameter where name = 'control_files' ; -- 控制文件

    ② 关闭数据库(IMMEDIATE、ABORT)
    ③ 备份数据库的所有数据文件和联机重做日志文件
    ④ 启动一个新的实例,但不要装载和打开数据库(NOMOUNT)
    ⑤ 使用CREATE CONTROLFILE语句创建一个新的控制文件
        注:若重命名数据库,或联机重做日志文件丢失,可使用RESETLOGS子句
    ⑥ 在离线存储设备上存储新的控制文件备份
    ⑦ 编辑CONTROL_FILES初始化参数,若重命名数据库,则编辑DB_NAME参数
    ⑧ 进行数据库恢复(如果需要的话 )
        注:若指定RESETLOGS,则需要加入USING BACKUP CONTROL FILE来恢复数据库
    ⑨ 打开数据库(ALTER DATABASE OPEN;)
   
 
 
posted on 2008-11-23 22:18 decode360 阅读(354) 评论(0)  编辑  收藏 所属分类: 08.DBA

只有注册用户登录后才能发表评论。


网站导航: