最初在关闭状态下进行开启数据库恢复的实例:
以pioneer_data表空间为例:
============================制造假损坏=======================================
1、备份表空间:
SQL> alter tablespace pioneer_data begin backup;
Tablespace altered
SQL> host copy C:\ORCL1122\DISK8\PIONEER_DATA.DBF C:\orcl1122\beifen1;
1file(s) copied
SQL> alter tablespace pioneer_data end backup;
Tablespace altered
2、 cmd -----sqlplus / as sysdba;登录dba
3、关闭数据库
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
4、删除C:\ORCL1122\DISK8\PIONEER_DATA.DBF 文件,制造损坏。。
===============================开始修复============================================
1、从头开始,cmd --sqlplus / as sysdba;登录dba
Copyright (c) 1982, 2010, Oracle. All rights reserved.
已连接到空闲例程。
SQL>
2、启动数据库:
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 272630224 bytes
Database Buffers 255852544 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 8 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 8: 'C:\ORCL1122\DISK8\PIONEER_DATA.DBF'
注:可以看出 数据文件8 出现了问题。
3、将数据文件8脱机
SQL> alter database datafile 8 offline;
数据库已更改。
4、启动数据库open,除了数据文件8,其他正常使用。
SQL> alter database datafile 8 offline;
数据库已更改。
5、查看数据文件的状态:
SQL> select file#,status from v$datafile;
FILE# STATUS
---------- -------
1 SYSTEM
2 ONLINE
3 ONLINE
4 ONLINE
5 ONLINE
6 ONLINE
7 ONLINE
8 OFFLINE
9 ONLINE
10 ONLINE
11 ONLINE
注:数据文件8脱机了
6、查看恢复信息
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_
---------- ------- -------
ERROR CHANGE#
----------------------------------------------------------------- ----------
TIME
--------------
8 OFFLINE OFFLINE
FILE NOT FOUND 0
注:error:数据文件not found 丢了。
7、复制备份文件到原来的位置:
SQL> host copy C:\orcl1122\beifen1\PIONEER_DATA.DBF C:\orcl1122\disk8;
已复制 1 个文件。
8、恢复文件:
SQL> recover datafile 8;
完成介质恢复。
9、设置数据文件联机:
SQL> alter tablespace pioneer_data online;
表空间已更改。
10、查看数据文件状态:
SQL> select file#,status from v$datafile;
FILE# STATUS
---------- -------
1 SYSTEM
2 ONLINE
3 ONLINE
4 ONLINE
5 ONLINE
6 ONLINE
7 ONLINE
8 ONLINE
9 ONLINE
10 ONLINE
11 ONLINE
已选择11行。
11、检查数据:
SQL> conn nezha/nezha
已连接。
SQL> select count(*) from sales;
COUNT(*)
----------
918843
============================================OK==============================================
以pioneer_data表空间为例:
============================制造假损坏=======================================
1、备份表空间:
SQL> alter tablespace pioneer_data begin backup;
Tablespace altered
SQL> host copy C:\ORCL1122\DISK8\PIONEER_DATA.DBF C:\orcl1122\beifen1;
1file(s) copied
SQL> alter tablespace pioneer_data end backup;
Tablespace altered
2、 cmd -----sqlplus / as sysdba;登录dba
3、关闭数据库
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
4、删除C:\ORCL1122\DISK8\PIONEER_DATA.DBF 文件,制造损坏。。
===============================开始修复============================================
1、从头开始,cmd --sqlplus / as sysdba;登录dba
Copyright (c) 1982, 2010, Oracle. All rights reserved.
已连接到空闲例程。
SQL>
2、启动数据库:
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 272630224 bytes
Database Buffers 255852544 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 8 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 8: 'C:\ORCL1122\DISK8\PIONEER_DATA.DBF'
注:可以看出 数据文件8 出现了问题。
3、将数据文件8脱机
SQL> alter database datafile 8 offline;
数据库已更改。
4、启动数据库open,除了数据文件8,其他正常使用。
SQL> alter database datafile 8 offline;
数据库已更改。
5、查看数据文件的状态:
SQL> select file#,status from v$datafile;
FILE# STATUS
---------- -------
1 SYSTEM
2 ONLINE
3 ONLINE
4 ONLINE
5 ONLINE
6 ONLINE
7 ONLINE
8 OFFLINE
9 ONLINE
10 ONLINE
11 ONLINE
注:数据文件8脱机了
6、查看恢复信息
SQL> select * from v$recover_file;
FILE# ONLINE ONLINE_
---------- ------- -------
ERROR CHANGE#
----------------------------------------------------------------- ----------
TIME
--------------
8 OFFLINE OFFLINE
FILE NOT FOUND 0
注:error:数据文件not found 丢了。
7、复制备份文件到原来的位置:
SQL> host copy C:\orcl1122\beifen1\PIONEER_DATA.DBF C:\orcl1122\disk8;
已复制 1 个文件。
8、恢复文件:
SQL> recover datafile 8;
完成介质恢复。
9、设置数据文件联机:
SQL> alter tablespace pioneer_data online;
表空间已更改。
10、查看数据文件状态:
SQL> select file#,status from v$datafile;
FILE# STATUS
---------- -------
1 SYSTEM
2 ONLINE
3 ONLINE
4 ONLINE
5 ONLINE
6 ONLINE
7 ONLINE
8 ONLINE
9 ONLINE
10 ONLINE
11 ONLINE
已选择11行。
11、检查数据:
SQL> conn nezha/nezha
已连接。
SQL> select count(*) from sales;
COUNT(*)
----------
918843
============================================OK==============================================