ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 控制文件的管理

控制文件的管理

原创 Linux操作系统 作者:yuecaibo 时间:2012-03-05 23:57:43 0 删除 编辑

控制文件记录着数据库的物理文件信息和数据库的状态信息 非常重要
一个控制文件是定义当前物理数据库当前状态的一个小的二进制文件
Oracle 服务器在数据库使用的过程中会不断更新控制文件
何时涉及改控制文件
 每次在线日志文件、数据文件的新增、修改、删除,归档等都会更新控制文件
 热备份的时候
 触发系统事件时
 CKPT进程将每三秒会触发检查点进程去写控制文件

SELECT * FROM V$CONTROLFILE;
idle> col type for a30
idle> select * from v$controlfile_record_section;

控制文件的内容:
 数据库名
 创建数据库时的时间戳
 表空间名
 物理结构,包括日志文件,数据文件的名字和地址
 当前日志的序列号
 检查点信息
 回滚段的信息
 日志归档的历史
 备份与恢复的信息(RMAN)


数据库启动时使用几个控制文件由参数文件决定
control_files

idle> select value from v$parameter where name='control_files';

VALUE
-----------------------------------------------------------------
/home/oracle/oradata/demon/control01.ctl

idle>

控制文件很重要 所以控制文件需要多元化管理
最少1个  最多8个  多个控制文件都是镜像关系
默认文件系统存储位置 $ORACLE_BASE/oradata/$ORACLE_SID/controlNN.ctl

增加控制文件
 1.修改参数 增加一个新指针
 control_files='/home/oracle/oradata/demon/control01.ctl','/home/oracle/oradata/demon/control02.ctl'
 判断当前是pfile 还是spfile
 show parameter pfile
 value 有值就是spfile 没值就是pfile
 
 判断这个参数是否支持动态修改
 idle> select NAME,ISSYS_MODIFIABLE from v$system_parameter where NAME='control_files';

 NAME         ISSYS_MODIFIABLE
 -------------------------------------------------- ---------------------------
 control_files        FALSE


 vim $ORACLE_HOME/dbs/initdemon.ora
  control_files='/home/oracle/oradata/demon/control01.ctl','/home/oracle/oradata/demon/control02.ctl'
 :wq
 
 idle> shut immediate
 Database closed.
 Database dismounted.
 ORACLE instance shut down.
 idle> startup
 ORACLE instance started.

 Total System Global Area  289406976 bytes
 Fixed Size      1219016 bytes
 Variable Size    234882616 bytes
 Database Buffers    50331648 bytes
 Redo Buffers      2973696 bytes
 ORA-00205: error in identifying control file, check alert log for more info

 查看日志 $ORACLE_BASE/admin/bdump/alert_demon.log
 idle> ! cp $ORACLE_BASE/oradata/demon/control01.ctl $ORACLE_BASE/oradata/demon/control02.ctl
 idle> alter database mount ;

 Database altered.

 idle>


练习 减少,移动,改名控制文件

 

控制文件的备份
 两种备份方法
  1.产生二进制文件
  SQL> alter database backup controlfile to '/home/oracle/control.bak';

  Database altered.

 
  2.产生文本文件
  SQL> alter database backup controlfile to trace as '/home/oracle/control.sql';

  Database altered.

  SQL>

实验:
对一致的数据库建立控制文件

先停库 建立一致的数据文件和日志文件
shut immediate

删除控制文件
rm -rf $ORACLE_BASE/oradata/seker/control*

conn / as sysdba
startup

启动数据库出错 找不到控制文件

创建控制文件
noresetlogs 不重置日志; resetlogs 重置日志(联机日志文件损坏时使用)
重置日志后open时写 alter database open resetlogs;

create controlfile reuse database seker noresetlogs
maxinstances 8
maxloghistory 1
maxlogfiles 16
maxlogmembers 3
maxdatafiles 100
datafile
'/u01/oracle/oradata/seker/system01.dbf',
'/u01/oracle/oradata/seker/undotbs01.dbf',
'/u01/oracle/oradata/seker/sysaux01.dbf'
logfile
group 1 '/u01/oracle/oradata/seker/redo01.log' size 50M,
group 2 '/u01/oracle/oradata/seker/redo02.log' size 50M;


控制文件建立完成后数据库自动启动到open


重建完控制文件后 再建立临时文件(因为之前的数据库有临时文件存在 所以加重用参数reuse)
alter tablespace temp add tempfile '/u01/oracle/oradata/seker/temp01.dbf' reuse;

 

采用resetlogs方式重建congtrolfile,scn来自于datafile;
采用noresetlogs方式重建controlfile,scn来自于redo

 


 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24756465/viewspace-717775/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 建立裸设备库
下一篇: 修改实例和库名
请登录后发表评论 登录
全部评论

注册时间:2012-03-03

  • 博文量
    42
  • 访问量
    36591