在oracle中的不同服务器之间移动数据

时间:2011-07-05 17:42:37

标签: oracle plsql data-migration

我是Oracle新手,我正在努力将特定数据从一台服务器上的数据库移动到另一台服务器上的数据库。

这两个数据库具有相同的模式,但我想拉出其键引用的特定列,并将数据移动到其他服务器中。我正试图弄清楚对此最好的攻击计划是什么。

一种允许命令行的方法,我可以输入我想要移动的数据的键。是否有可能用PLSQL脚本完成?

感谢。

1 个答案:

答案 0 :(得分:8)

假设您可以在两个数据库之间创建网络连接,最简单的选择是在它们之间创建数据库链接,即

CREATE DATABASE LINK to_b
  CONNECT TO username_on_b
  IDENTIFIED BY password
  USING 'tns_alias_for_b'

然后,您可以使用该数据库链接查询数据库B中的数据,即

INSERT INTO table_name( list_of_columns )
  SELECT list_of_columns
    FROM table_name@to_b
   WHERE primary_key_value = <<some value>>;

这可以是直接的SQL语句,PL / SQL过程的一部分,也可以是SQL * Plus脚本的一部分。 PL / SQL过程

CREATE OR REPLACE PROCEDURE move_row_from_b( 
  p_key_value IN table_name.primary_key%type 
)
AS
BEGIN
  INSERT INTO table_name( list_of_columns )
    SELECT list_of_columns
      FROM table_name@to_b
     WHERE primary_key_value = p_key_value;
END move_row_from_b;

可以通过EXEC从SQL * Plus或通过匿名PL / SQL块

调用
SQL> exec move_row_from_b( 23 );

BEGIN
  move_row_from_b( 23 );
END;

或者您可以编写SQL * Plus脚本

variable key_value number;
accept key_value prompt 'Enter key: '
INSERT INTO table_name( list_of_columns )
  SELECT list_of_columns
    FROM table_name@to_b
   WHERE primary_key_value = :key_value;