大家好,有个问题想请教一下:
在Oracle同一实例下,我想将A表空间内的所有表复制到B表空间(刚新建的),我使用PL/SQL在本机数据库上用exp/imp语法试了好多次都没搞定,不知道是自己自己命令写的不对还是Oracle数据库的问题。
PS:我对这方面不太懂,只会写一点简单的查询插入语句,明天要操作公司的数据库,实在没办法了,希望有对这方面比较了解的大神能指点一二。多谢!
在Oracle同一实例下,我想将A表空间内的所有表复制到B表空间(刚新建的),我使用PL/SQL在本机数据库上用exp/imp语法试了好多次都没搞定,不知道是自己自己命令写的不对还是Oracle数据库的问题。
PS:我对这方面不太懂,只会写一点简单的查询插入语句,明天要操作公司的数据库,实在没办法了,希望有对这方面比较了解的大神能指点一二。多谢!
抱歉没有表达清楚。
我在新的B表空间里建了用户B1,A表空间用户A1,A2已经建了有若干表。我现在想把A表空间所有用户的表都复制一份到B表空间里去,我知道用create table B1.tableone as select * from A1.tableone ;这样的方式可以把别的A表空间里A1的表复制一份到B表空间里B1用户,只是这样太慢了,而且原来的表里的备注,索引什么的好像都不能复制过来。我想问的是有没有一种方法是表空间层面的复制,可能我这样的表述还是有问题,你刚才说了每个表都是有它的拥有者,但是我也不知道该怎么表达,你应该明白我的意思:我不想一个一个重新建表,我想直接复制一个表空间。
create directory expdb as '/opt/oradata/expdump';
grant read,write on directory empdb to Auserlinux下执行:
expdp Auser/password directory=expdb dumpfile=dumptest.dmp logfile=exporttest.log tables=table1,table2,table3;
impdp system/password directory=expdb dumpfile=dumptest.dmp logfie=importtest.log remap_tablespace=Atablespace:Btablespace remap_schema=Auser:Buser
导出的时候如果不指定tables就导出Auser下的所有表
不知道可以不 哈哈