误将数据文件创建在本地盘而不是共享存储
错误原因:
不是共享存储中的数据文件,其他实例不能访问
解决思路和办法:
把本地的数据文件移到共享存储中。
步骤;
1. offline 表空间或数据文件
2. 复制数据文件
3. 重命名数据文件
4. 恢复数据文件(表空间不用)
5. online 表空间或数据文件
复制方案
1. RMAN copy datafile
2. dbms_file_transfer.copy_file
3. ASMCMD cp
详细步骤:
一:
alter tablespace ts1 offline;
rman>copy datafile ‘本地目录/源数据文件‘ to ‘共享目录/目标文件名‘;--目标文件自己取名
alter database rename file ‘本地目录/源数据文件‘ to ‘共享目录/目标文件名‘;
alter tablespace ts1 online;
二:
create directory source_dir as ‘本地目录/‘;
create directory dest_dir as ‘共享目录/‘;
alter tablespace ts1 offline;
begin
dbms_file_transfer.copy_file(‘SOURCE_DIR‘,‘源数据文件名‘,‘DEST_DIR‘,‘目标文件名‘);
end;
--可以通过asmcmd命令行确认是否正确copy成功
/*
grid>asmcmd
asmcmd>cd 共享目录
asmcmd>ls 目标文件名
*/
alter database rename file ‘本地目录/源数据文件名‘ to ‘共享目录/目标文件名‘;
alter tablespace ts1 online;
三:--操作数据文件,只能是表空间添加数据文件可行,创建表空间时出错(以下改成表空间)
alter database datafile ‘本地目录/源数据文件‘ offline;
root>mv 源数据文件 /home/grid/
root>chown grid:asmadmin 源数据文件--/home/grid/目录操作
grid>asmcmd
asmcmd>cd 共享目录
asmcmd>cp /home/grid/源数据文件 目标文件名
asmcmd>ls
alter database rename file ‘本地目录/源数据文件‘ to ‘共享目录/目标文件名‘;
alter database recover datafile ‘共享目录/目标文件名‘;
alter database datafile ‘共享目录/目标文件名‘ online;