现在的位置: 首页 > 综合 > 正文

备份及应用控制文件

2013年09月12日 ⁄ 综合 ⁄ 共 2794字 ⁄ 字号 评论关闭

1、在sqlplus下面备份控制文件
SQL> alter database backup controlfile to trace;

数据库已更改。

SQL> alter database backup controlfile to 'd:controlbak.ctl';

数据库已更改。

2、关闭数据库,然后删除已有的控制文件,再打开,发现不能正常打开
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。

Total System Global Area 319888364 bytes
Fixed Size 453612 bytes
Variable Size 192937984 bytes
Database Buffers 125829120 bytes
Redo Buffers 667648 bytes
ORA-00205: ?????????????????????

SQL> alter session set nls_language=american;

Session altered.

SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying controlfile, check alert log for more info

--查看日志文件有
Fri May 26 00:11:53 2006
ORA-205 signalled during: ALTER DATABASE MOUNT...
Fri May 26 00:12:48 2006
alter database mount
Fri May 26 00:12:48 2006
ORA-00202: controlfile: 'D:oracleoradatadb1control01.ctl'
ORA-27041: unable to open file
OSD-04002: 无法打开文件
O/S-Error: (OS 2) 系统找不到指定的文件。

SQL> shutdown immediate;
ORA-01507: database not mounted

ORACLE instance shut down.

3、启动到nomount重建控制文件
SQL> startup nomount;
ORACLE instance started.

Total System Global Area 319888364 bytes
Fixed Size 453612 bytes
Variable Size 192937984 bytes
Database Buffers 125829120 bytes
Redo Buffers 667648 bytes

--找到trace文件,执行里面的建立控制文件的脚本,创建控制文件
SQL> show parameter user_dump_dest

NAME TYPE VALUE
------------------------------------ ----------- --------------------------
user_dump_dest string D:oracleadmindb1udump
--到上面这个目录里把刚才备份的trace文件找到,然后打开会发现以下重建控制文件脚本

SQL> CREATE CONTROLFILE REUSE DATABASE "DB1" RESETLOGS ARCHIVELOG
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 5
4 MAXLOGMEMBERS 3
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 226
8 LOGFILE
9 GROUP 1 'D:ORACLEORADATADB1REDO01.LOG' SIZE 100M,
10 GROUP 2 'D:ORACLEORADATADB1REDO02.LOG' SIZE 100M,
11 GROUP 3 'D:ORACLEORADATADB1REDO03.LOG' SIZE 100M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'D:ORACLEORADATADB1SYSTEM01.DBF',
15 'D:ORACLEORADATADB1UNDOTBS01.DBF',
16 'D:ORACLEORADATADB1TEST01.DBF',
17 'D:ORACLEORADATADB1RCVCAT01.DBF',
18 'D:ORACLEORADATADB1DATA01.DBF'
19 CHARACTER SET ZHS16GBK
20 ;

控制文件已创建

--查看控制文件信息
SQL> show parameter control

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string D:oracleoradatadb1control0
1.ctl, D:oracleoradatadb1c
ontrol02.ctl, D:oracleoradat
adb1control03.ctl

SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01100: database already mounted

5、进行恢复,然后打开数据库到正常运行状态
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

--需要加resetlogs进行恢复,因为应用旧的控制文件
SQL> alter database open resetlogs;

Database altered.

--查看日志信息,发现应用到的改变有5998333
alter database open resetlogs
RESETLOGS after incomplete recovery UNTIL CHANGE 5998333
Resetting resetlogs activation ID 0 (0x0)

SQL> select name,created,dbid,log_mode,checkpoint_change# from v$database;

NAME CREATED DBID LOG_MODE CHECKPOINT_CHANGE#
--------- --------- ---------- ------------ ------------------
DB1 26-MAY-06 1173694693 ARCHIVELOG 5998335

SQL>


 

【上篇】
【下篇】

抱歉!评论已关闭.