如何在oracle中创建同一数据库上的完整模式副本

of1yzvn4  于 2022-11-03  发布在  Oracle
关注(0)|答案(3)|浏览(223)

我想在同一个数据库上创建架构的完整副本。实现此目的的最佳技术是什么?
我脑子里有几个想法:
1.通过数据库链路的数据泵
1.网络链路上的IMPDP

  1. EXPDP,然后是IMPDP。
    每种技术的优点和/或缺点是什么?
zengzsys

zengzsys1#

您不需要一个花哨的网络链接或任何东西,只需要使用expdp/impdp命令。

expdp fromUser/fromPword schemas=sourceSchema directory=DUMPDIR dumpfile=dump.dmp logfile=explog.txt

提示:确保该用户能够写入DUMPDIR或任何您称之为它的内容
然后使用remap_schema参数重新导入架构:

impdp toUser/toPword directory=DUMPDIR dumpfile=dump.dmp logfile=implog.txt remap_schema=fromUser:toUser

如果你真的想使用network_link参数(这样你就不会因为某些原因而创建一个转储文件),那么我建议你阅读thisthis
关于您的问题的大量信息也可以在here中找到。

juud5qan

juud5qan2#

试试看:
Copy schema into same database
我测试了一下,它工作了。但是你必须像评论中提到的那样创建一个公共链接。
如果你创建了一个.par文件来重新Map你的表空间,你可以重用它。
O并且不要忘记将transaform放在.par文件中:

TRANSFORM=oid:n

否则可能会出现错误。

w7t8yxp5

w7t8yxp53#

我在Oracle中将模式内容从模式user_a复制到模式user_b所执行的步骤如下:DBMS位于Oracle Linux服务器容器内。
让我们假设模式是这样定义的:

create user user_a identified by user_a_pass default tablespace tablespace_a;
grant
    create materialized view,
    create procedure,
    create sequence,
    create session,
    create table,
    create type,
    create trigger,
    create view to user_a;

create user user_b identified by user_b_pass default tablespace tablespace_a;
grant
    create materialized view,
    create procedure,
    create sequence,
    create session,
    create table,
    create type,
    create trigger,
    create view to user_b;

这里重要的一点是:这些模式可以访问同一个表空间并具有创建会话的权限。
要进行复制,需要数据模式的目录:检查授权目录:

select tp.grantee, tp.table_name from all_tab_privs tp where tp.privilege = 'WRITE' and tp.type = 'DIRECTORY';

检查目录的路径是否物理存在,以及组dba是否可以访问该路径。
如果未将目录分配给方案用户,请执行以下操作:

create or replace directory user_dir as '/opt/oracle/product/19c/dbhome_1/user_dir_name';
grant read, write on directory user_dir to user_a;
grant read, write on directory user_dir to user_b;

运行导出:

expdp user_a/user_a_pass@host/database schemas=user_a directory=user_dir dumpfile=user_a.dmp logfile=schema_exp.log

运行导入:

impdp user_b/user_b_pass@host/database directory=user_dir dumpfile=user_a.dmp logfile=schema_imp.log remap_schema=user_a:user_b

相关问题