本地数据文件copy进asm

SQL> create tablespace test datafile '+DATA' size 100m;

Tablespace created.

ASMCMD> ls
SYSAUX.260.993746509
SYSTEM.257.993746509
TEST.268.994093549
UNDOTBS1.258.993746509
UNDOTBS2.265.993746509
USERS.266.993746509


SQL> create user test identified by test default tablespace test;

User created.

SQL> grant dba to test;

Grant succeeded.

模拟添加数据文件到错误位置

SQL> alter tablespace test add datafile ' +DATA' size 100m;

Tablespace altered.

SQL> select file_name,file_id from dba_data_files where tablespace_name='TEST';

FILE_NAME
--------------------------------------------------------------------------------
   FILE_ID
----------
+DATA/rac10/datafile/test.268.994093549
         6

/u01/app/oracle/product/11.2.0/dbhome_1/dbs/ +DATA
         7

插入数据两个数据文件都有数据

SQL> create table test.test as select * from dba_objects;

Table created.

SQL> insert into test.test select * from test.test;

77122 rows created.

SQL> /
insert into test.test select * from test.test
*
ERROR at line 1:
ORA-01653: unable to extend table TEST.TEST by 1024 in tablespace TEST


SQL> commit;

Commit complete.

SQL> select bytes/1024/1024 from dba_segments where segment_name='TEST'; 

BYTES/1024/1024
---------------
            192

将本地文件添加进asm

RMAN>  backup as copy datafile 7 format '+DATA';

Starting backup at 05-DEC-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile copy
input datafile file number=00007 name=/u01/app/oracle/product/11.2.0/dbhome_1/dbs/ +DATA
output file name=+DATA/rac10/datafile/test.270.994096049 tag=TAG20181205T174727 RECID=12 STAMP=994096052
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
Finished backup at 05-DEC-18
 

ASMCMD> ls

SYSAUX.260.993746509
SYSTEM.257.993746509
TEST.268.994093549
TEST.270.994096049
UNDOTBS1.258.993746509
UNDOTBS2.265.993746509
USERS.266.993746509

插入数据

SQL> select count(*) from test.test;

  COUNT(*)
----------
   1234051

SQL> insert into test.test select * from dba_objects where rownum<100;

99 rows created.

SQL> commit;

Commit complete.

SQL> select count(*) from test.test;

  COUNT(*)
----------
   1234150

将数据文件7 offline 

SQL> alter database datafile 7 offline;

Database altered.

将数据文件rename为TEST.270.994096049

SQL> alter database rename file '/u01/app/oracle/product/11.2.0/dbhome_1/dbs/ +DATA' to '+data/rac10/datafile/TEST.270.994096049';

Database altered.

将数据文件recover 将数据文件online

SQL> recover datafile 7;
Media recovery complete.

SQL> alter database datafile 7 online;

Database altered.

验证

SQL>  select file_name,file_id from dba_data_files where tablespace_name='TEST';

FILE_NAME
--------------------------------------------------------------------------------
   FILE_ID
----------
+DATA/rac10/datafile/test.268.994093549
         6

+DATA/rac10/datafile/test.270.994096049
         7


SQL> select count(*) from test.test;

  COUNT(*)
----------
   1234150

猜你喜欢

转载自blog.csdn.net/whb234174124/article/details/84615653