繁体   English   中英

如何使用schema_dev数据来填充oracle 11g schema_prod

[英]How to feed oracle 11g schema_prod with schema_dev data

有人可以告诉我如何将schema_dev中的数据提供给schema_prod吗?

我正在研究与labvantage ERP连接的oracle 11g 2,并且在2018年之前,我想将在schema_dev上创建的所有数据转移到另一个schema_prod,这意味着这两个模式具有相同的体系结构,但没有相同的数据。

schema_dev充满了更多数据,而schema_prod仅填充了一些数据!

非常感谢 :)

当你将要传输的数据, 数据泵可能是你要找的东西:使用使用数据泵导出为“卸载”(出口)从SCHEMA_DEV数据,然后将数据导入-什么? 当然,数据泵IMPORT。

请注意,您必须创建一个目录(指向磁盘上目录的Oracle对象,通常是数据库服务器上的目录),并向执行该操作的用户授予特权。

需要数据时,可以使用CONTENT = DATA_ONLY参数。

这是Data Pump Export文档,所以-看一下(导入文档在下一页)。

另外,您可以使用原始的exp和imp实用程序 ,这些实用程序可以轻松地在自己的计算机上运行(即,您不需要像数据泵那样的目录 )。 您将在此处使用IGNORE = YES参数(因为导入将尝试创建表,但它们已经存在-指示它忽略CREATE TABLE错误并继续执行导入数据)。

原始的进出口文件在这里

由于仅数据传输就足够了,因此您还可以选择使用CTAS或使用链接服务器插入表来引用源表。

如果您是初次通过链接服务器插入数据获取源表,请考虑以下代码示例:

**Create link in target server:**
Create public link server link_name
connect to DB_USER_Source identified by password_db_user_source
using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = <<IP_HOST_SOURCE>>)(PORT = 1521))(CONNECT_DATA = SERVICE_NAME = <<<SID_NAME_SOURCE_MACHINE>>>)))';
or
Create public link server link_name
connect to DB_USER_Source identified by password_db_user_source
using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = <<IP_HOST_SOURCE>>)(PORT = 1521))(CONNECT_DATA = (SID = <<<SID_NAME_SOURCE_MACHINE>>>)))'

**Refer following query to load data from source to target, run the command in target machine:**
create table target_schema.table_name as select * from source_schema.table_name@link_name;
or
insert into target_schema.table_name select * from source_schema.table_name@link_name;

Also, you can generate above commands by following SQL query if you have large numebr of tables to transfer and run output commands in the target server:
select 'create table target_schema.' || table_name || ' as select * from source_schema.' || table_name || '@link_name;' from all_tables@link_name where owner='SOURCE_SCHEMA';
or
select 'insert into target_schema.' || table_name || ' select * from source_schema.' || table_name || '@link_name;' from all_tables@link_name where owner='SOURCE_SCHEMA';

请注意,上述方法有以下限制。 根据您的要求,以下限制没有任何问题。

  • 不允许在链接服务器上传输CLOB数据类型字段。

  • 约束被忽略

感谢您的所有建议,我使用此方法,即使出现4个错误,它也能很好地工作:

1- sqlplus:

select sid,serial# from v$session where username = 'SCHEMA_PROD';
alter system kill session ',';--this is for killing used sessions
drop user SCHEMA_prod cascade;

create user schema_prod identified by passwordXXXX
default tablespace lvsspace 
temporary tablespace temp 
quota unlimited on lvsspace 
quota unlimited on lvsidx;

grant connect, create procedure, create trigger, create table, create sequence, create type, create view to schema_prod;

=>退出SQLplus

2-(CTRL + C)在Widnows上

impdp system/dba schemas=shema_dev remap_schema=schema_dev:schema_prod directory=fileoutdir dumpfile=180111DEV.dmp
logfile=180111DEV.log transform=OID:n

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM