Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 如何将数据从一个数据库/表复制到另一个数据库/表_Oracle_Oracle11g - Fatal编程技术网

Oracle 如何将数据从一个数据库/表复制到另一个数据库/表

Oracle 如何将数据从一个数据库/表复制到另一个数据库/表,oracle,oracle11g,Oracle,Oracle11g,我使用位于的文档编写了以下查询:将一些数据从生产服务器上的数据库/表复制到Sandbox服务器上的数据库/表 使用从username1/passwd1@复制到username2/passwd2@INSERT TABLE_C* 从表C中选择*,其中列A=4884 然而,我经常遇到连接失败的错误。查询有什么问题吗?在典型的Oracle环境中,您已经设置了TNS名称。这是一个为给定SID或服务名称的Oracle实例查找连接参数的服务。在最简单的形式中,TNS names是一个名为tnsnames.or

我使用位于的文档编写了以下查询:将一些数据从生产服务器上的数据库/表复制到Sandbox服务器上的数据库/表

使用从username1/passwd1@复制到username2/passwd2@INSERT TABLE_C* 从表C中选择*,其中列A=4884


然而,我经常遇到连接失败的错误。查询有什么问题吗?

在典型的Oracle环境中,您已经设置了TNS名称。这是一个为给定SID或服务名称的Oracle实例查找连接参数的服务。在最简单的形式中,TNS names是一个名为tnsnames.ora的文件,由环境变量TNS_ADMIN定位,该变量指向文件所在的目录

给定SIDs PROD和SANDBOX,然后可以从SQLPLUS命令行实用程序复制表:

COPY FROM username1/passwd1@PROD to username2/passwd2@SANDBOX
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);
请注意,此复制命令仅支持一组有限的Oracle数据类型:char、date、long、varchar2、number

如果没有设置TNS名称,则需要知道主机名或IP地址、端口号和服务名称。然后,语法变为:

COPY FROM username1/passwd1@//192.168.3.17:1521/PROD_SERVICE to username2/passwd2@//192.168.4.17:1521/SANDBOX_SERVICE
    INSERT TABLE_C (*) USING (SELECT * FROM TABLE_C WHERE COL_A = 4884);
要确定SID和/或服务名称,最好查看数据库服务器本身上的TNSNAMES.ORA文件。如果您能够登录到数据库,则可以使用以下查询来确定SID和服务名称,但不要问我哪个是哪个:

select name from v$database;

select * from global_name;

select instance_number, instance_name, host_name from v$instance;

复制gpl_项目/gpl_project@gpldatar至gpl_项目/gpl_project@gplrdp. 使用从BGROUPMASTER中选择*替换BGROUPMASTER。

以下是我使用的解决方案。我在远程数据库中创建了一个链接,然后使用INSERT命令填充数据

CREATE DATABASE LINK database_link_name 
CONNECT TO my_user_name IDENTIFIED BY my_password
USING 'tns_name';

INSERT INTO my_table SELECT * FROM my_remote_table@database_link_name;
如果想在工作结束后去掉数据库链接。使用以下命令:

DROP DATABASE LINK database_link_name;
有关有用信息,请参阅此链接:

目标表是否已经存在?生产IP是否代表IP地址?如果是,那还不够。您需要设置TNS名称并使用SID或服务名称,或者使用包含SID或服务名称的简易连接名称。@Codo:是。生产IP代表生产服务器的实际IP地址。您能告诉我在包含服务名称后查询是如何变化的吗。我在文档中找不到语法这个问题怎么脱离主题了?请在这里定义非主题。