故障表现
ORACLE12C数据库引入了CDB容器和PDB可插入数据库的概念,无法直接使用11GR2之前的备份恢复方法。
只需要注意建立ORACLE命名服务的时候,对应好关系即可。相关服务ORACLE12C安装数据库的时候建立。
例如:CDB数据库默认服务为 ORCL,建立命名服务的时候,选择内部的ORCL;
PDB数据库默认服务为PDBORCL,建立命名服务的时候,选择对应的PDBORCL;
那么EXPDP导出或者IMPDP导入的时候,要对应的命名服务。
例如:
导入到CDB,就是
impdp system/syetem@orcl DUMPFILE=impdp20240528.dmp logfile=impdp20240528.log DIRECTORY=mydir SCHEMAS=mypdb parallel=4
导入到PDB,就是
impdp system/syetem@pdborcl DUMPFILE=impdp20240528.dmp logfile=impdp20240528.log DIRECTORY=mydir SCHEMAS=mypdb parallel=4
按传统导入语句导入报错:表现为:
ORA-39002 ORA-39070 ORA-29283错误。
故障分析
ORA-39002、ORA-39070
报错信息:ORA-39002: invalid operation
ORA-39070: unimplemented feature is used
解释:
ORA-39002: 表示无效的操作。这个错误通常出现在尝试执行Oracle数据库不支持的操作时。
ORA-39070: 表示使用了未实现的特性。这意味着用户尝试使用了Oracle数据库当前版本不支持的特性。
- > 分析相关权限,正常。
- PDB对应的DIRECTORY,正常。
- 命名服务,正常。
-特意拿了之前日期的备份文件验证了下,导入正常。
-因此怀疑是当前磁盘空间不够,对磁盘空间进行了扩容也不行。
解决办法
重建了个DIRECTORY,换了个名字,换了个本地路径。把备份文件拷贝过来,导入正常了。
很诡异的问题,折腾了一天一夜。