我的具体情况是这样的:
以前用的是10g,现在想用11g做dataguard,于是要把10g的数据导出来,放到11g里面去
我的具体想法是这样的:
把10g的数据导入11g里面,然后用这个11g的数据库做主库,这样其它的备库通过日志应用就会用10g里面的数据了。那个10g的库就不要了,从新装上11g的做备库
我的问题是这样的:
我最近才开始接触oracle,以前都是做java前端的,oracle基本都不懂,看了点网上的资料
做法如下:
我两台虚拟机,一个装上10g的oracle,一个装上11g
在10g的安装目录/u01/app/oracle/下创建一个文件夹backup01,以system用户登录10g
create directory dpdata1 as '/u01/app/oracle/backup01';
grant read,write on directory dpdata1 to scott;//不懂这个scott用户在这干嘛的? 可以随便换么?
expdp system/Oracle123 DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
这个过程后,在我的backup01下面却是多了个数据文件和日志文件,导出的整个过程没有报错。然后我用u盘把导出来的文件拷贝到另一个虚拟机11g的相同目录下(我的两个oracle目录一模一样),然后同样以system用户登录
create directory dpdata1 as '/u01/app/oracle/backup01';
impdp system/Oracle123 DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
问题就出在导入的这一步,出了两千多个错,
满屏幕都是ORA-31684: Object type ... already exists这样的错
求高手帮忙 我做的是全库导出导入。不知道我这个过程是不是有误 或者有更好的办法
我不是很懂 恳请指教
------解决方案--------------------
grant read,write on directory dpdata1 to scott;//不懂这个scott用户在这干嘛的? 可以随便换么?
--这个要换成你需要导出数据的那个用户。scott只是一个示例,在你的例子里面应该是换成system
你的过程应该没问题,只是导入的错误需要再详细一些才能看出是哪里有问题。有可能是你把ORACLE自带的那些TYPE、函数、过程全部都导出了,所以导入的时候才会报已经存在的错误。你可以直接impdp system/Oracle123 DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y ignore=y,先忽略这些错误,然后导入完成之后再看看你的数据是否已经到11G的数据库中去了。
------解决方案--------------------
dataguard最好同版本的库