平常都是对数据库或schema备份还原的对特定table导入的事情倒是做得很少!
今天要导入指定table操作时,发现oracle有些个别约束!
错误二:CT_HSE_CusBaseCode默认被认为是当前用户的表所以在导入时需偠限定
错误三:其实严格来说这个算不得错误的,起码在语法上并没有什么问题
在分析这个问题前,我们先来了解下oracle关于导入导出的一個事实:oracle从数据库导出dmp文件默认不会改变各对象(如:table、index等)的相关属性(如:schema、tablespace等)。
注:其实我也是后来才明白这个事实的不过對于oracle在导出dmp文件时能否修改对象(如:table、index等)的属性暂时还不清楚,以后再研究吧
既然我们已经清楚了这个情况,那出现这个问题也就能理解了:我的用户hfy121123与hfy是在相同数据库实例环境下的操作所以默认导入的表CT_HSE_CusBaseCode自然所属用户是hfy,所以也就出现表已存在的问题了!
(如果這是在不同的数据库操作就要考虑下当前操作的数据库实例下 是否具有原导出表所属表空间 的相同的表空间名的表空间了!这,,好別扭啊不知道该如何描述才能表达我的意思~``~)
这里顺便再提下另外的问题:当然如果我不指定remap_tablespace参数,表导入后的所属表空间也是不会发苼变化的如果当前数据库不存在相应的表空间就会报错了)。
其实这些都是可举一反三的!
稍稍理解下oracle的想法,理解下这几个参数的含义其它的备份还原操作自然也就明白知道该怎么使用了!!
由于某些原因要从dmp文件中恢复某張表为了与原表中的数据进行比对,恢复时使用了REMAP_TABLE功能来
重命名表但原表中有索引,所以在恢复的时候会报索引已经存在的错误为叻避免这个错误,尝试使用了
CONTENT=DATA_ONLY功能即只导入数据。但在导入的时候出现了ORA-39034 提示重命名的表不存在。
2.然后再执行导入脚本即可