控制文件的备份和重建

1.如果控制文件全部丢失,且没有控制文件的备份,则只能通过CREATE CONTROLFILE命令来重建控制文件。利用这种CREATE CONTROLFILE的方式重建控制文件不需要使用RESETLOGS方式打开数据库。

2.如果在最后一次数据库结构修改后使用了ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS命令备份了创建控制文件的脚本,则可以直接用TRACE文件中的脚本进行控制文件的重建。

3.如果使用ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS命令之后又进行了数据库结构的修改,则需要手工编辑TRACE文件中的脚本,来反映出数据库最后的修改。

4.如果是使用的ALTER DATABASE BACKUP CONTROLFILE TO FILENAME方式进行的备份(这种情况其实应该算作有备份的情况,不过如果利用备份进行恢复需要使用RESETLOGS方式打开数据库),则可以利用备份的控制文件首先将数据库STARTUP MOUNT,然后再利用ALTER DATABASE BACKUP CONTROLFILE TO TRACE NORESETLOGS命令备份建立控制文件的脚本,最后将备份控制文件后所有数据库结构的修改,反映到控制文件的脚本上。

5.如果控制文件没有任何方式的备份,那么只能通过手工方式编写CREATE CONTROLFILE语句,这时候需要了解所有数据文件和联机重做日志文件的位置和大小。(这就是丢失前,什么准备都没有的情况)

 

三种备份控制文件的方法:

控制文件的备份和恢复在数据库的备份恢复过程中十分关键。

 

备份控制文件的原则是:在数据库物理结构发生变化后备份控制文件。

备份控制文件包括三种方法:

通过操作系统命令在数据库关闭时对控制文件进行COPY

利用ALTER DATABASE BACKUP CONTROLFILE TO命令将控制文件备份到二进制文件;

利用ALTER DATABASE BACKUP CONTROLFILE TO TRACE命令将重建控制文件备份的脚本备份到后台trace文件中。

 

Oracle推荐使用第二种方式来备份控制文件。第一种方式备份的控制文件,一般用于全库一致性恢复。而第三种方式备份控制文件会丢失归档日志历史等许多信息。在重建控制文件时,只读表空间和脱机的数据文件的处理相对比较复杂。

现在主要说说的是2.3两种:

第二种:

16:33:39 sys@LEE2>alter database backup controlfile to 'e:\lee2_controlfile.bak';

 

数据库已更改。

 

第三种:

 

16:33:50 sys@LEE2>select tablespace_name,status

16:35:27   2  from dba_tablespaces;

 

TABLESPACE_NAME                STATUS

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

SYSTEM                         ONLINE

UNDOTBS1                       ONLINE

SYSAUX                         ONLINE

TEMP                           ONLINE

USERS                          ONLINE

LEE                            ONLINE

 

已选择6行。

 

//让其中的一个数据文件 offline

 

16:35:34 sys@LEE2>select file_id,file_name

16:37:39   2  from dba_data_files;

 

   FILE_ID

----------

FILE_NAME

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

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

         6

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE02.DBF

 

        10

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS02.DBF

 

         9

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM02.DBF

 

         8

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX02.DBF

 

         5

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE01.DBF

 

         4

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS01.DBF

 

         3

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX01.DBF

 

         2

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\UNDOTBS01.DBF

 

         1

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM01.DBF

 

 

已选择9行。

 

已用时间:  00: 00: 00.03

16:37:44 sys@LEE2>alter database datafile 6 offline;

 

数据库已更改。

 

16:38:38 sys@LEE2>select name,status from v$datafile;

 

NAME

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

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

STATUS

-------

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM01.DBF

SYSTEM

 

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\UNDOTBS01.DBF

ONLINE

 

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX01.DBF

ONLINE

 

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS01.DBF

ONLINE

 

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE01.DBF

ONLINE

 

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE02.DBF

RECOVER

 

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX02.DBF

ONLINE

 

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM02.DBF

SYSTEM

 

E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS02.DBF

ONLINE

 

 

已选择9行。

 

已用时间:  00: 00: 00.03

 

// backup controlfile

 

16:39:36 sys@LEE2>alter database backup controlfile to trace;

 

数据库已更改。

 

// 查看trace

 

--     Set #1. NORESETLOGS case

--

-- The following commands will create a new control file and use it

-- to open the database.

-- Data used by Recovery Manager will be lost.

-- Additional logs may be required for media recovery of offline

-- Use this only if the current versions of all online logs are

-- available.

-- After mounting the created controlfile, the following SQL

-- statement will place the database in the appropriate

-- protection mode:

--  ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "LEE2" NORESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\REDO01.LOG'  SIZE 50M,

  GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\REDO02.LOG'  SIZE 50M,

  GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\REDO03.LOG'  SIZE 50M

-- STANDBY LOGFILE

DATAFILE

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM01.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\UNDOTBS01.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX01.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS01.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE01.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE02.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX02.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM02.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS02.DBF'

CHARACTER SET ZHS16GBK

;

-- Take files offline to match current control file.

ALTER DATABASE DATAFILE 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE02.DBF' OFFLINE;

-- 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 'E:\ARCHIVE2\LEE2\ARC00001_0657977050.001';

-- Recovery is required if any of the datafiles are restored backups,

-- or if the last shutdown was not normal or immediate.

RECOVER DATABASE

-- All logs need archiving and a log switch is needed.

ALTER SYSTEM ARCHIVE LOG ALL;

-- 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 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\TEMP01.DBF'

     SIZE 91226112  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

-- End of tempfile additions.

--

--     Set #2. RESETLOGS case

--

-- 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 STANDBY DATABASE TO MAXIMIZE PERFORMANCE

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "LEE2" RESETLOGS  ARCHIVELOG

    MAXLOGFILES 16

    MAXLOGMEMBERS 3

    MAXDATAFILES 100

    MAXINSTANCES 8

    MAXLOGHISTORY 292

LOGFILE

  GROUP 1 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\REDO01.LOG'  SIZE 50M,

  GROUP 2 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\REDO02.LOG'  SIZE 50M,

  GROUP 3 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\REDO03.LOG'  SIZE 50M

-- STANDBY LOGFILE

DATAFILE

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM01.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\UNDOTBS01.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX01.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS01.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE01.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\LEE02.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSAUX02.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\SYSTEM02.DBF',

  'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\USERS02.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 'E:\ARCHIVE2\LEE2\ARC00001_0657977050.001';

-- Recovery is required if any of the datafiles are 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 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\LEE2\TEMP01.DBF'

     SIZE 91226112  REUSE AUTOEXTEND ON NEXT 655360  MAXSIZE 32767M;

-- End of tempfile additions.

--002.gif

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

转载于:http://blog.itpub.net/11134734/viewspace-368919/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值