控制文件的备份和重建

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/

### Oracle 控制文件的查询与备份方法 #### 查询控制文件的位置 在 Oracle 数据库中,可以通过查询动态性能视图 `v$controlfile` 来获取当前控制文件的路径。以下是具体的 SQL 查询语句: ```sql SELECT name FROM v$controlfile; ``` 这条语句将返回所有控制文件的完整路径[^1]。 #### 备份控制文件的方法 控制文件备份可以通过以下几种方式进行: 1. **手动备份控制文件** 使用 `ALTER DATABASE` 命令可以手动创建控制文件备份。例如,将控制文件备份到 `/backup/controlfile.bkp` 路径下: ```sql ALTER DATABASE BACKUP CONTROLFILE TO '/backup/controlfile.bkp'; ``` 该命令会生成一个二进制格式的控制文件副本。 2. **创建可读文本格式的控制文件备份** 如果需要生成一个可读的文本格式控制文件备份,可以使用以下命令: ```sql ALTER DATABASE BACKUP CONTROLFILE TO TRACE; ``` 这条命令会在数据库的跟踪目录中生成一个包含控制文件脚本的文本文件,用于在紧急情况下重建控制文件[^1]。 3. **配置自动备份(RMAN)** 使用 RMAN(Recovery Manager)可以配置控制文件的自动备份功能。通过以下命令可以更改自动备份存储路径: ```sql CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/opt/oracle/obak/control%F'; ``` 该命令将自动备份控制文件存储到指定路径 `/opt/oracle/obak/` 下,并以 `%F` 格式命名[^3]。 4. **镜像控制文件** 镜像控制文件是将控制文件复制到多个位置,以提高冗余性容错性。可以在初始化参数文件中设置 `CONTROL_FILES` 参数来定义多个控制文件路径。例如: ```sql CONTROL_FILES = ('C:\ORACLEXE\APP\ORACLE\ORADATA\XE\CONTROL01.CTL', 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\CONTROL02.CTL') ``` 镜像控制文件可以存放在同一目录下或不同的目录中[^2]。 #### 注意事项 - 在执行上述操作之前,请确保数据库处于打开状态,否则无法查询或备份控制文件[^2]。 - 如果需要更改控制文件的自动备份路径,请确保目标路径具有足够的权限空间[^3]。 ### 示例代码 以下是一个完整的示例,展示如何查询备份控制文件: ```sql -- 查询当前控制文件的位置 SELECT name FROM v$controlfile; -- 手动备份控制文件到指定路径 ALTER DATABASE BACKUP CONTROLFILE TO '/backup/controlfile.bkp'; -- 创建可读文本格式的控制文件备份 ALTER DATABASE BACKUP CONTROLFILE TO TRACE; -- 配置RMAN自动备份控制文件路径 CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/opt/oracle/obak/control%F'; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值