Chinaunix首页 | 论坛 | 博客
  • 博客访问: 32881
  • 博文数量: 17
  • 博客积分: 696
  • 博客等级: 上士
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-14 16:59
文章分类

全部博文(17)

文章存档

2010年(4)

2009年(13)

我的朋友

分类: Oracle

2009-05-20 22:44:19

控制文件在创建数据库的时候会指定至少两个副本
并且这几个副本最好是放在不同的硬盘上,防止硬件的原因导致丢失全部的控制文件副本、
数据空的控制文件包含了以下的信息:
数据库名称
当前数据库的数据文件、redolog文件的名称以及路径
数据库的创建时间
checkpoint的信息
当前的日志序列号
当数据库在启动的时候就是通过控制文件的信息来确定哪些数据还没有写入数据文件,防止数据的讹误
数据库在写控制文件的时候是对pfile中的control_files的所有成员同时进行写的,但是在读控制文件的时候是选择这个参数中排在第一的那个控制文件
当控制文件中有一个副本发生错误或者缺失都会导致数据库关闭。
当控制文件副本中的某一个或者多个不可用(但是至少还有一个文件可用)的时候,可以复制当前可用的的那个副本到不同的目录,然后更改pfile中的
control_files的参数执行新的可用控制文件,然后启动数据库即可。
但是在某些情况下,如数据库控制文件全部损坏或者丢失 或者你需要改变数据库的sid,就需要重建控制文件
1 由于控制文件中包含了数据文件和redolog文件的信息,所以需要一个数据文件和redo日志文件的全部信息
  SELECT MEMBER FROM V$LOGFILE;
     SELECT NAME FROM V$DATAFILE;
     SELECT VALUE FROM V$PARAMETER WHERE NAME = 'control_files';
   2 使用shutdown immediate or shutdown abort关闭数据库
  
   3 备份所有的数据文件和redo日志文件
   4 将数据库启动到nomount状态
  
   5 使用以下的命令进行数据文件的重建
  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')
RESETLOGS--注意此参数的用法
DATAFILE '/u01/oracle/prod/system01.dbf' SIZE 3M,
'/u01/oracle/prod/rbs01.dbs' SIZE 5M,
'/u01/oracle/prod/users01.dbs' SIZE 5M,
'/u01/oracle/prod/temp01.dbs' SIZE 5M
MAXLOGFILES 50
MAXLOGMEMBERS 3
MAXLOGHISTORY 400
MAXDATAFILES 200
MAXINSTANCES 6
ARCHIVELOG;
 
需要明确指定为RESETLOGS的分为以下两种情况:
丢失了的文件不止控制文件还有数据文件或者redo文件
需要改变数据库的名称
其他情况就可以指定为NORESETLOGS
  6 在其他地方再保存一下新生成的数据库控制文件副本
  7 修改pfile中control_files,如果改变了数据库名称还需要更改db_name
  8 恢复数据库
    如果你使用了NORESETLOGS参数,那么你可以使用备份的数据文件和redo文件完整的恢复数据库
    如果你是使用RESETLOGS参数创建的心控制文件,你需要明确指出是USING BACKUP CONTROL FILE.  如果丢失了在线redo文件或者归档日志文件 或者数据文件,你就需要通过其他不办法恢复数据库
 9 启动数据库
   如果你并没有做第八步的回复操作 你可以直接进行alter database open
   如果你在创建数据库的时候指明是RESETLOGS,使用ALTER DATABASE OPEN RESETLOGS;
这样一个全新的控制文件已经建立完成。
 
备份控制文件有一下两个方法
1.将控制文件备份到一个二进制文件中
  ALTER DATABASE BACKUP CONTROLFILE TO '/oracle/backup/control.bkp';
2.备份近trc文件中
  ALTER DATABASE BACKUP CONTROLFILE TO TRACE;

View Description
V$DATABASE  Displays database information from the control file
V$CONTROLFILE  Lists the names of control files
V$CONTROLFILE_RECORD_SECTION  Displays information about control file record  sections
V$PARAMETER Displays the names of control files as specified in the CONTROL_FILES initialization parameter
 
阅读(651) | 评论(0) | 转发(0) |
0

上一篇:oracle IO介绍

下一篇:关于/dev/null 2>&1

给主人留下些什么吧!~~