表空间的数据文件怎么找的?我这样做 select b.name from v$tablespace a, v$datafile b where a.ts#=b.ts# and a.name='XXX' 查出来结果为空。 因为我之前删除过一些文件。是不是表示我的数据文件现在不存在?需要重新备份一次还是?
不要随意删除数据文件!!1、确定你的name为大写。 2、还可以用这个语句去查一下,根据路径去确认一下数据文件是否存在 SELECT t.TABLESPACE_NAME, t.FILE_NAME FROM dba_data_files t WHERE t.TABLESPACE_NAME = upper('表空间名');
谢谢楼上各位答复!在ORACLE 方面我是菜鸟。。丢人了! 首先重申下环境:我是在REDHAT 5.4 SERVER 下装的ORACLE11G R1 要拷贝的源表空间:sandbox2 目标表空间:sandbox_hf 都在同一个数据库 orcl 下。 目标:使sandbox_hf下的表结构和数据和sandbox2的一致,之后互不影响。 早上有点事情,耽误了。不好意思。我现在把我的操作说明下,请大家指导。 1.我用EXP命令成功导出了sandbox2.dmp文件。 2.我用命令在/u01/app/oracle/oradata/orcl/ 下找到了sandbox2(注意没有后缀,我在建立数据文件的时候没加.DBF) 3.我用imp命令: imp file=/tmp/sandbox2.dmp transport_tablespace=y datafiles=/u01/app/oracle/oradata/orcl/sandbox2 tablespaces=sandbox_hf(这里对不?我是想拷贝到sandbox_hf) 报错了,错误如下: import done in US7ASCII character set and AL16UTF16 NCHAR character set import server uses ZHS16GBK character set (possible charset conversion) . importing SYS's objects into SYS . importing SYS's objects into SYS IMP-00017: following statement failed with ORACLE error 29347: "BEGIN sys.dbms_plugts.beginImpTablespace('SANDBOX2',10,'SYS',1,0,8192,1,4" "0763378,1,2147483645,8,128,8,0,1,2147483645,8,1257749144,1,4129,37247199,NU" "LL,0,0,NULL,NULL); END;" IMP-00003: ORACLE error 29347 encountered ORA-29347: Tablespace name validation failed - failed to match tablespace 'SANDBOX2' ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86 ORA-06512: at "SYS.DBMS_PLUGTS", line 1827 ORA-06512: at line 1 IMP-00000: Import terminated unsuccessfully 请大家耐心点。小弟感激
exp、imp导出导入元数据,
然后复制表空间所包含的数据文件(数据文件就是需要的数据)。网上的资料很多
使用EXP/IMP 貌似不能包括数据是可以导出元数据的。
imp tablespace2 from tablespace1
select b.name from v$tablespace a, v$datafile b where a.ts#=b.ts# and a.name='XXX'
查出来结果为空。
因为我之前删除过一些文件。是不是表示我的数据文件现在不存在?需要重新备份一次还是?
2、还可以用这个语句去查一下,根据路径去确认一下数据文件是否存在
SELECT t.TABLESPACE_NAME, t.FILE_NAME
FROM dba_data_files t
WHERE t.TABLESPACE_NAME = upper('表空间名');
你如果是要换表空间,估计比较麻烦 一般来说 导入的会放在原来表空间下。
你试试 新建一个用户,默认表空间是你的目标表空间,该用户在原表空间上不要赋予资源,然后 指定fromuser和touser。
昨天刚刚用过肯定包含数据的
http://wenku.baidu.com/view/bfa7183767ec102de2bd89f8.html
1、把备份主机 backup controlfile to trace;到 trace 文件里找到重建controlfile 的语句。
2、把备份主机数据库 shutdown 了
3、拷贝数据库 表空间的数据文件到目标机器下
4、目标主机 startup nomount, 进行重做日志文件的 控制文件创建。
5、再 startup open 就可以了。
这个过程很简单,具体步骤你上网查查就清楚了。
首先重申下环境:我是在REDHAT 5.4 SERVER 下装的ORACLE11G R1
要拷贝的源表空间:sandbox2 目标表空间:sandbox_hf
都在同一个数据库 orcl 下。
目标:使sandbox_hf下的表结构和数据和sandbox2的一致,之后互不影响。
早上有点事情,耽误了。不好意思。我现在把我的操作说明下,请大家指导。
1.我用EXP命令成功导出了sandbox2.dmp文件。
2.我用命令在/u01/app/oracle/oradata/orcl/ 下找到了sandbox2(注意没有后缀,我在建立数据文件的时候没加.DBF)
3.我用imp命令:
imp file=/tmp/sandbox2.dmp transport_tablespace=y datafiles=/u01/app/oracle/oradata/orcl/sandbox2 tablespaces=sandbox_hf(这里对不?我是想拷贝到sandbox_hf)
报错了,错误如下:
import done in US7ASCII character set and AL16UTF16 NCHAR character set
import server uses ZHS16GBK character set (possible charset conversion)
. importing SYS's objects into SYS
. importing SYS's objects into SYS
IMP-00017: following statement failed with ORACLE error 29347:
"BEGIN sys.dbms_plugts.beginImpTablespace('SANDBOX2',10,'SYS',1,0,8192,1,4"
"0763378,1,2147483645,8,128,8,0,1,2147483645,8,1257749144,1,4129,37247199,NU"
"LL,0,0,NULL,NULL); END;"
IMP-00003: ORACLE error 29347 encountered
ORA-29347: Tablespace name validation failed - failed to match tablespace 'SANDBOX2'
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "SYS.DBMS_PLUGTS", line 1827
ORA-06512: at line 1
IMP-00000: Import terminated unsuccessfully
请大家耐心点。小弟感激
这里边写的很详细,楼主可以参考一下。可以使用expdp和impdp命令来对tablespace表空间和schema进行备份和还原!!
试了另一种方式:新建了个表空间。把原来的表空间设置为只读,复制了数据文件,覆盖掉新表空间的数据文件,结果也失败了。显示不出原表空间的内容。不知道为什么。
有没有人做过一样的。请不要以原有经验想当然。。
如果没有权限了,他则会当做ignore来进行处理,导入到用户指定的表空间。
(个人理解,仅供参考)