案例5:将数据文件恢复到新的位置


1、模拟环境

SQL> create table lxtb01(id int) tablespace lx01;

SQL> insert into lxtb01 values(1);

1 row created.

SQL> insert into lxtb01 values(2);

1 row created.

SQL> select * from lxtb01;

ID

----------

1

2

SQL> commit;

Commit complete.

SQL> shutdown abort;

ORACLE instance shut down.

SQL> !

[oracle@solaris10 ~]$rm /u01/app/oracle/oradata/anny/lx01.dbf

[oracle@solaris10 ~]$exit

exit

SQL> startup

ORACLE instance started.

Total System Global Area  314572800 bytes

Fixed Size                  1279964 bytes

Variable Size              58722340 bytes

Database Buffers          251658240 bytes

Redo Buffers                2912256 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 6 - see DBWR trace file

ORA-01110: data file 6: '/u01/app/oracle/oradata/anny/lx01.dbf'

SQL> select file#,error from v$recover_file;

FILE# ERROR

---------- -----------------------------------------------------------------

6 FILE NOT FOUND


2、对数据文件进行恢复,并恢复到新的位置

SQL> alter database datafile 6 offline;

Database altered

[oracle@solaris10 oradata]$cp /disk1/backup/anny/cold_bak/lx01.dbf /disk1/oradata/anny/——新的位置

SQL> alter database open;

Database altered.

SQL> alter database rename file '/u01/app/oracle/oradata/anny/lx01.dbf'

2  to '/disk1/oradata/anny/lx01.dbf';

Database altered.

SQL> recover datafile 6;

Media recovery complete.

SQL> alter database datafile 6 online;

Database altered.

SQL> select * from scott.lxtb01;

ID

----------

1

2

SQL> col file_name for a50

SQL> select file_id,file_name,tablespace_name from dba_data_files;

FILE_ID FILE_NAME                                          TABLESPACE_NAME

---------- -------------------------------------------------- --------------------------

5 /u01/app/oracle/oradata/anny/test01.dbf            TEST

4 /u01/app/oracle/oradata/anny/user01.dbf            USERS

3 /u01/app/oracle/oradata/anny/sysaux01.dbf          SYSAUX

2 /u01/app/oracle/oradata/anny/lx02.dbf              LX02

1 /u01/app/oracle/oradata/anny/system01.dbf          SYSTEM

6 /disk1/oradata/anny/lx01.dbf                       LX01

7 /u01/app/oracle/oradata/anny/undotbs01.dbf         UNDOTBS

8 /u01/app/oracle/oradata/anny/lx03.dbf              LX03

9 /u01/app/oracle/oradata/anny/lx04.dbf              LX04

10 /u01/app/oracle/oradata/anny/index01.dbf           INDEXES

12 /u01/app/oracle/oradata/anny/cuug01.dbf            CUUG

11 /u01/app/oracle/oradata/anny/test02.dbf            TEST

12 rows selected.


3、将数据文件迁移到原来的位置

SQL> alter tablespace lx01 offline;

Tablespace altered.

[oracle@solaris10 ~]$cp /disk1/oradata/anny/lx01.dbf /u01/app/oracle/oradata/anny/lx01.dbf——将文件拷回来

SQL> alter database rename file '/disk1/oradata/anny/lx01.dbf'

2  to '/u01/app/oracle/oradata/anny/lx01.dbf';

Database altered.

SQL> alter tablespace lx01 online;

Tablespace altered.

SQL> select file_id,file_name,tablespace_name from dba_data_files;

FILE_ID FILE_NAME                                          TABLESPACE_NAME

---------- -------------------------------------------------- ----------------------

5 /u01/app/oracle/oradata/anny/test01.dbf            TEST

4 /u01/app/oracle/oradata/anny/user01.dbf            USERS

3 /u01/app/oracle/oradata/anny/sysaux01.dbf          SYSAUX

2 /u01/app/oracle/oradata/anny/lx02.dbf              LX02

1 /u01/app/oracle/oradata/anny/system01.dbf          SYSTEM

6 /u01/app/oracle/oradata/anny/lx01.dbf              LX01

7 /u01/app/oracle/oradata/anny/undotbs01.dbf         UNDOTBS

8 /u01/app/oracle/oradata/anny/lx03.dbf              LX03

9 /u01/app/oracle/oradata/anny/lx04.dbf              LX04

10 /u01/app/oracle/oradata/anny/index01.dbf           INDEXES

12 /u01/app/oracle/oradata/anny/cuug01.dbf            CUUG

11 /u01/app/oracle/oradata/anny/test02.dbf            TEST

12 rows selected.


4、删除旧文件

[oracle@solaris10 ~]$rm /disk1/oradata/anny/lx01.dbf


oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html