在关闭的状态下进行数据库恢复的实例
以系统表空间为例
======================== =造假数据===========================================
1、备份表空间数据文件
SQL> alter tablespace system begin backup;
SQL> host copy C:\ORACEL\BASE\ORADATA\ORCL\SYSTEM01.DBF C:\orcl1122\sysbeifen;
已复制 1 个文件。
SQL> alter tablespace system end backup;
表空间已更改。
2、关闭数据库、删除系统文件
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
================================================================ ===========
=========================== 数据恢复,假定存放系统表空间硬盘坏了==============
1、启动例程
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 272630224 bytes
Database Buffers 255852544 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
2、将备份的文件复制到新的位置(原位置坏了)
SQL> host copy C:\orcl1122\sysbeifen\SYSTEM01.DBF C:\orcl1122\sysdisk;
已复制 1 个文件。
3、修改原数据文件名为新的文件
SQL> alter database rename file 'C:\oracel\base\oradata\orcl\SYSTEM01.DBF' to
2 'C:\orcl1122\sysdisk\SYSTEM01.DBF';
数据库已更改。
4、进行恢复:
SQL> recover database;
完成介质恢复。
5、切换数据库状态有mount 到open:
SQL> alter database open;
数据库已更改。
6、查看: 系统表空间filename已更改
SQL> set line 123
SQL> select file_id,file_name,tablespace_name from dba_data_files;
FILE_ID FILE_NAME TABLESPACE_NAME
---------- -------------------------------------------------- -----------------
--
4 C:\ORACEL\BASE\ORADATA\ORCL\USERS01.DBF USERS
3 C:\ORACEL\BASE\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1
2 C:\ORACEL\BASE\ORADATA\ORCL\SYSAUX01.DBF SYSAUX
1 C:\ORCL1122\SYSDISK\SYSTEM01.DBF SYSTEM
5 C:\ORACEL\BASE\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE
6 C:\ORCL1122\DISK5\LIANXI01.DBF LIANXI
7 C:\ORCL1122\DISK5\LIANXI02.DBF LIANXI
8 C:\ORCL1122\DISK8\PIONEER_DATA.DBF PIONEER_DATA
9 C:\ORCL1122\DISK5\LIANXI_INDEX.DBF LIANXI_INDEX
10 C:\ORCL1122\DISK5\LIANXI_INDEX02.DBF LIANXI_INDEX
11 C:\ORCL1122\DISK8\PIONEER_INDX.DBF PIONEER_INDX
已选择11行。
7.OK
以系统表空间为例
======================== =造假数据===========================================
1、备份表空间数据文件
SQL> alter tablespace system begin backup;
SQL> host copy C:\ORACEL\BASE\ORADATA\ORCL\SYSTEM01.DBF C:\orcl1122\sysbeifen;
已复制 1 个文件。
SQL> alter tablespace system end backup;
表空间已更改。
2、关闭数据库、删除系统文件
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
================================================================ ===========
=========================== 数据恢复,假定存放系统表空间硬盘坏了==============
1、启动例程
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 272630224 bytes
Database Buffers 255852544 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
2、将备份的文件复制到新的位置(原位置坏了)
SQL> host copy C:\orcl1122\sysbeifen\SYSTEM01.DBF C:\orcl1122\sysdisk;
已复制 1 个文件。
3、修改原数据文件名为新的文件
SQL> alter database rename file 'C:\oracel\base\oradata\orcl\SYSTEM01.DBF' to
2 'C:\orcl1122\sysdisk\SYSTEM01.DBF';
数据库已更改。
4、进行恢复:
SQL> recover database;
完成介质恢复。
5、切换数据库状态有mount 到open:
SQL> alter database open;
数据库已更改。
6、查看: 系统表空间filename已更改
SQL> set line 123
SQL> select file_id,file_name,tablespace_name from dba_data_files;
FILE_ID FILE_NAME TABLESPACE_NAME
---------- -------------------------------------------------- -----------------
--
4 C:\ORACEL\BASE\ORADATA\ORCL\USERS01.DBF USERS
3 C:\ORACEL\BASE\ORADATA\ORCL\UNDOTBS01.DBF UNDOTBS1
2 C:\ORACEL\BASE\ORADATA\ORCL\SYSAUX01.DBF SYSAUX
1 C:\ORCL1122\SYSDISK\SYSTEM01.DBF SYSTEM
5 C:\ORACEL\BASE\ORADATA\ORCL\EXAMPLE01.DBF EXAMPLE
6 C:\ORCL1122\DISK5\LIANXI01.DBF LIANXI
7 C:\ORCL1122\DISK5\LIANXI02.DBF LIANXI
8 C:\ORCL1122\DISK8\PIONEER_DATA.DBF PIONEER_DATA
9 C:\ORCL1122\DISK5\LIANXI_INDEX.DBF LIANXI_INDEX
10 C:\ORCL1122\DISK5\LIANXI_INDEX02.DBF LIANXI_INDEX
11 C:\ORCL1122\DISK8\PIONEER_INDX.DBF PIONEER_INDX
已选择11行。
7.OK