|
|
biti ,恐怕你的做法是有问题的!
在817和9i中都是仅仅丢失全部的控制文件,重建控制文件应该没有问题,不管是归档还是非归档,道理很简单,你仅仅丢失了控制文件,又没有丢失任何数据,原则上就不该在恢复的时候有部分恢复的情况,也就是说,重建控制文件不会破坏数据的完整性。
下面是oracle 81740 on Tru64 4.0f上的例子
我也曾经做过oracle 9201在win上的例子,过程一样,并且归档非归档都是这样的,因为道理一样:
丢失全部控制文件的恢复(81740)
(非归档模式,无备份)
Lunar
目 录
检查当前是否为NOARCHIVE MODE 3
关闭数据库,并作一个冷备份 3
重新启动数据库,并制作测试数据 4
模拟数据crash和丢失所有控制文件 6
通过重建控制文件来完全恢复数据库 7
nomount启动数据库 7
重建控制文件 7
完全恢复数据库 8
正常打开数据库 8
验证数据的完整性 8
检查当前是否为NOARCHIVE MODE
feptwo> sqlplus internal
SQL*Plus: Release 8.1.7.0.0 - Production on Fri Mar 28 10:48:11 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
JServer Release 8.1.7.4.0 - Production
SQL> archive log list
Database log mode No Archive Mode
Automatic archival Enabled
Archive destination /usr/oracle/app/oracle/product/8.1.7/admin/cint208/arch
Oldest online log sequence 98
Current log sequence 100
SQL>
关闭数据库,并作一个冷备份
(防止恢复过程(测试恢复的方法)如果出现问题)
SQL> alter database backup controlfile to trace;
Database altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> host
$ ls
coldback control03.ctl rbs01.dbf redo03.log testspace1.dbf
control01.ctl drsys01.dbf redo01.log system01.dbf tools01.dbf
control02.ctl indx01.dbf redo02.log temp01.dbf users01.dbf
$ mv *ctl *dbf *log coldback
$ ls
coldback
$ cd coldback
$ ls
control01.ctl drsys01.dbf redo01.log system01.dbf tools01.dbf
control02.ctl indx01.dbf redo02.log temp01.dbf users01.dbf
control03.ctl rbs01.dbf redo03.log testspace1.dbf
$
重新启动数据库,并制作测试数据
(假设命名当前的窗口为:窗口a)
SQL> startup
ORACLE instance started.
Total System Global Area 81884132 bytes
Fixed Size 103396 bytes
Variable Size 57401344 bytes
Database Buffers 24199168 bytes
Redo Buffers 180224 bytes
Database mounted.
Database opened.
SQL> conn lunar
Enter password:
Connected.
SQL> conn lunar
Enter password:
Connected.
SQL> create table test(a number);
Table created.
SQL> insert into test values(1);
1 row created.
SQL> insert into test values(2);
1 row created.
SQL>
再开一个窗口(窗口b)做checkpoin:
feptwo> sqlplus internal
SQL*Plus: Release 8.1.7.0.0 - Production on Fri Mar 28 10:59:13 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to:
Oracle8i Enterprise Edition Release 8.1.7.4.0 - Production
JServer Release 8.1.7.4.0 - Production
SQL> alter system checkpoint;
System altered.
SQL>
回到以前的窗口(窗口a),再次插入数据,并commit:
SQL> insert into test values(3);
1 row created.
SQL> insert into test values(4);
1 row created.
SQL> commit;
Commit complete.
SQL> insert into test values(5);
1 row created.
SQL> insert into test values(6);
1 row created.
SQL>
回到窗口b,做swhtch log:
SQL> alter system switch logfile;
System altered.
SQL>
回到窗口a,继续插入数据:
SQL> insert into test values(6);
1 row created.
错了,误操作了,呵呵,插了两条6,以后不好比对了
SQL> delete from test where a=6;
2 rows deleted.
SQL> insert into test values(7);
1 row created.
SQL> commit;
Commit complete.
SQL> insert into test values(8);
1 row created.
SQL> insert into test values(9);
1 row created.
SQL>
模拟数据crash和丢失所有控制文件
回到窗口b,模拟数据crash:
SQL> shutdown abort
ORACLE instance shut down.
SQL>
删除所有的控制文件:
SQL> host
ls
$ coldback control03.ctl rbs01.dbf redo03.log testspace1.dbf
control01.ctl drsys01.dbf redo01.log system01.dbf tools01.dbf
control02.ctl indx01.dbf redo02.log temp01.dbf users01.dbf
$ rm *ctl
$ ls
coldback indx01.dbf redo01.log redo03.log temp01.dbf tools01.dbf
drsys01.dbf rbs01.dbf redo02.log system01.dbf testspace1.dbf users01.dbf
通过重建控制文件来完全恢复数据库
nomount启动数据库
$ sqlplus internal
SQL*Plus: Release 8.1.7.0.0 - Production on Fri Mar 28 11:50:27 2003
(c) Copyright 2000 Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL> startup nomount;
ORACLE instance started.
Total System Global Area 81884132 bytes
Fixed Size 103396 bytes
Variable Size 57401344 bytes
Database Buffers 24199168 bytes
Redo Buffers 180224 bytes
SQL>
重建控制文件
SQL> CREATE CONTROLFILE REUSE DATABASE "CINT208" NORESETLOGS NOARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 2
4 MAXDATAFILES 30
5 MAXINSTANCES 1
6 MAXLOGHISTORY 226
7 LOGFILE
8 GROUP 1 '/usr/oracle/data/oradata/cint208/redo03.log' SIZE 500K,
9 GROUP 2 '/usr/oracle/data/oradata/cint208/redo02.log' SIZE 500K,
10 GROUP 3 '/usr/oracle/data/oradata/cint208/redo01.log' SIZE 500K
11 DATAFILE
12 '/usr/oracle/data/oradata/cint208/system01.dbf',
13 '/usr/oracle/data/oradata/cint208/tools01.dbf',
14 '/usr/oracle/data/oradata/cint208/rbs01.dbf',
15 '/usr/oracle/data/oradata/cint208/temp01.dbf',
16 '/usr/oracle/data/oradata/cint208/users01.dbf',
17 '/usr/oracle/data/oradata/cint208/indx01.dbf',
18 '/usr/oracle/data/oradata/cint208/drsys01.dbf',
19 '/usr/oracle/data/oradata/cint208/testspace1.dbf'
20 CHARACTER SET ZHS16GBK
21 ;
Control file created.
SQL>
完全恢复数据库
SQL> recover database;
Media recovery complete.
SQL>
正常打开数据库
SQL> alter database open;
Database altered.
SQL>
验证数据的完整性
SQL> conn lunar/lunarz
Connected.
SQL> select * from test;
A
----------
1
2
3
4
5
7
6 rows selected.
SQL> |
|