RAC添加新表空间时数据文件误放置到本地文件系统的修正
于是我想11G 也兼容这些操作的方法,但是11G的新特性有一点就是可以直接支持ASM文件系统直接可以和本地文件系统进行文件的拷贝了,也就是有三种方法。
1. RMAN的 copy datafile 方式
2. dbms_file_transfer方式
3. ASMCMD中的直接cp方式了
分别演示三种方式:
RMAN
1)创建好本地开始的表空间
SQL> create tablespace andy datafile '/u01/app/oracle/admin/bai.dbf' size 100M;
2)查看一下状态
SQL> select name,status from v$datafile;
3)在本地表空间上创建表 andy01
SQL> create table andy01 tablespace andy as select * from dba_objects;
4)在第二个实例上去创建表也放在andy这个表空间上,注意红色字体部分,报告无法定位andy.dbf数据文件
[oracle@racdb2 ~]$ sqlplus /nolog
SQL> conn / as sysdba
Connected.
SQL> create table andy02 tablespace andy as select * from dba_objects;
create table andy02 tablespace andy as select * from dba_objects
*
ERROR at line 1:
ORA-01157: cannot identify/lock data file 11 - see DBWR trace file
ORA-01110: data file 11: '/home/oracle/andy.dbf'
----------------------------------------------------------------
注意:下面回到rac1 上执行:
5)然后进行修正操作,先将andy表空间进行offline
然后进行RMAN 拷贝 在将数据文件进行移动,online即可
5.1 如果是归档模式可以执行如下SQL设置数据文件的状态为OFFLINE:
ALTER DATABASE DATAFILE '/u01/app/oracle/admin/bai.dbf' OFFLINE;
此时数据文件为 “RECOVER” 状态
5.2 如果是非归档模式执行以下SQL将数据文件状态设置为OFFLINE:
SQL> ALTER DATABASE DATAFILE '/u01/app/oracle/admin/bai.dbf' OFFLINE DROP;
rac1-> rman target /
RMAN> copy DATAFILE '/u01/app/oracle/admin/bai.dbf' TO '+DATA/baydb/DATAFILE/bai.dbf';
Starting backup at 2019/05/23 15:57:46
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=63 instance=baydb1 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00007 name=/u01/app/oracle/admin/bai.dbf
rac1-> rman target /output file name=+DATA/baydb/datafile/bai.dbf tag=TAG20190523T155749 RECID=2 STAMP=1009036676
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:07
Finished backup at 2019/05/23 15:57:57
SQL> alter database rename file '/u01/app/oracle/admin/bai.dbf' to '+DATA/baydb/DATAFILE/bai.dbf';
完成介质恢复:
SQL> recover datafile '+DATA/baydb/DATAFILE/bai.dbf';
将数据文件在线:
ALTER DATABASE DATAFILE '+DATA/baydb/DATAFILE/bai.dbf' ONLINE;
检查数据恢复了:
SELECT * FROM andy01;
-------------------------------------------
--删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;