快捷搜索:

【Oracle备份恢复】3、数据库恢复案例(6)

案例 2:节制文件的毁坏

规划(1):使用脚本重修节制文件

(1)创建脚本

a.默认目录

SQL> alter database backup controlfile to trace;

Database altered.

目录可以从告警日志文件中读取到如下:

Tue Oct 09 19:11:39 2012

alter database backup controlfile to trace

Backup controlfile written to trace file /u01/oracle/diag/rdbms/elvis/elvis/trace/elvis_ora_4541.trc

Completed: alter database backup controlfile to trace

b.也可以 指定目录指定文件名字

SQL> alter database backup controlfile to trace as '/u01/createctl.trc';

Database altered.

里面即包孕resetlogs和noresetlogs两种模式

c.也可以指定天生什么模式的,比如这样

SQL> alter database backup controlfile to trace as '/u01/createctl.trc' resetlogs;

Database altered.

当然假如必要noresetlogs一样的款式,不在演示,我都已经够菜了,信托大年夜虾们会说,哎呀!早懂了,赶快进行下一步,好的好的,小鸟顿时下一步。。。

在弥补一句哈,着实天生那种模式都可以,便是在脚本代码里改下resetlogs变为noresetlogs就OK了。

d.也可以直接拷贝一份,当然即可以用OS复制也可以,但复制数据库如果关闭的环境,假如开启的时刻复制数据很不安然,数据库在线可以应用下面敕令复制

SQL> alter database backup controlfile to '/u01/createctl1.ctl';

Database altered.

脚本典型(noresetlogs):

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ELVIS" RESETLOGSARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/u01/oracle/oradata/elvis/redo01.log'SIZE 50M BLOCKSIZE 512,

GROUP 2 '/u01/oracle/oradata/elvis/redo02.log'SIZE 50M BLOCKSIZE 512,

GROUP 3 '/u01/oracle/oradata/elvis/redo03.log'SIZE 50M BLOCKSIZE 512

-- STANDBY LOGFILE

DATAFILE

'/u01/oracle/oradata/elvis/system01.dbf',

'/u01/oracle/oradata/elvis/sysaux01.dbf',

'/u01/oracle/oradata/elvis/undotbs01.dbf',

'/u01/oracle/oradata/elvis/users01.dbf',

'/u01/oracle/oradata/elvis/test01.dbf'

CHARACTER SET ZHS16GBK

;

大年夜家仔细看看这些代码,着实很简单不是么?你完全可以根据模板,在你懂得你数据库文件数量,日志文件的路径,等一些参数的值,自己改写一个得当自己库的节制文件,当然照样这样对照安然,终究假如库的文件多了,事情量照样很大年夜的。。。

(2)创建一个sql脚本

[oracle@elvis u01]$ cat createctl.sql

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE "ELVIS" NORESETLOGSARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 100

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 '/u01/oracle/oradata/elvis/redo01.log'SIZE 50M BLOCKSIZE 512,

GROUP 2 '/u01/oracle/oradata/elvis/redo02.log'SIZE 50M BLOCKSIZE 512,

GROUP 3 '/u01/oracle/oradata/elvis/redo03.log'SIZE 50M BLOCKSIZE 512

-- STANDBY LOGFILE

DATAFILE

'/u01/oracle/oradata/elvis/system01.dbf',

'/u01/oracle/oradata/elvis/sysaux01.dbf',

'/u01/oracle/oradata/elvis/undotbs01.dbf',

'/u01/oracle/oradata/elvis/users01.dbf',

'/u01/oracle/oradata/elvis/test01.dbf'

CHARACTER SET ZHS16GBK

;

(3)关闭数据库&毁坏节制文件

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

[oracle@elvis elvis]$ rm -f control01.ctl

[oracle@elvis elvis]$ ll

total 1789008

drwxr-xr-x 2 oracle oinstall4096 Oct8 08:58 bak

-rw-r----- 1 oracle oinstall52429312 Oct9 19:51 redo01.log

-rw-r----- 1 oracle oinstall52429312 Oct9 18:58 redo02.log

-rw-r----- 1 oracle oinstall52429312 Oct9 18:58 redo03.log

-rw-r----- 1 oracle oinstall 629153792 Oct9 19:51 sysaux01.dbf

-rw-r----- 1 oracle oinstall 734011392 Oct9 19:51 system01.dbf

-rw-r----- 1 oracle oinstall71311360 Oct8 08:50 temp01.dbf

-rw-r----- 1 oracle oinstall52436992 Oct9 19:51 test01.dbf

-rw-r----- 1 oracle oinstall 235937792 Oct9 19:51 undotbs01.dbf

-rw-r----- 1 oracle oinstall5251072 Oct9 19:51 users01.dbf

SQL> startup

ORACLE instance started.

Total System Global Area598437888 bytes

Fixed Size1338140 bytes

Variable Size394265828 bytes

Database Buffers197132288 bytes

Redo Buffers5701632 bytes

ORA-00205: error in identifying control file, check alert log for more info

(4)创建节制文件

[oracle@elvis u01]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Tue Oct 9 20:08:13 2012

Copyright (c) 1982, 2009, Oracle.All rights reserved.

Connected to an idle instance.

SQL> @createctl.sql

ORACLE instance started.

Total System Global Area598437888 bytes

Fixed Size1338140 bytes

Variable Size394265828 bytes

Database Buffers197132288 bytes

Redo Buffers5701632 bytes

Control file created.

SQL> alter database open;

Database altered.

总结:节制文件对数据库的紧张性就不用说了,很关键,着末冗余几个,而且放在不合的磁盘上。有人会问数据会不会有损掉,当然没有啦,你的其他数据文件都没丢,假如你详细懂得节制文件对数据库的感化你肯定一会儿就明白了,这个是备份规复的条记,不会对体系布局和根基讲的太细,小e正在策划要记这部分的条记,懂得Oracle的道理是很有需要的,但简单的说一下吧,节制文件是一个相称小的文件(最多能增长到64MB阁下),此中包孕Oracle必要的其他文件的一个目录。参数文件见告实例节制文件的位置,节制文件则见告实例数据库和在线重做日志文件的位置。节制文件还见告了Oracle其他一些工作,如。。。不可了,说多了,总之今后小e根基条记中会有具体记录。。。

规划2:有catalog的节制文件的规复,这个放在今后一步一步进修RMAN解说,敬请等候

转:http://blog.csdn.net/elvis_dataguru/article/details/8058097

您可能还会对下面的文章感兴趣: