Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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_Sqlplus - Fatal编程技术网

Oracle:如何在不同的数据库和服务器上高效地将表从一个模式复制到另一个模式

Oracle:如何在不同的数据库和服务器上高效地将表从一个模式复制到另一个模式,oracle,sqlplus,Oracle,Sqlplus,我有一个大表(3.5MM记录),需要从一个模式/数据库复制到另一个模式/数据库。我尝试了TOAD的“从表复制数据”功能,但出现了错误,它从未完全复制,部分原因是连接不断断开。我正在尝试SQLDeveloper的对象复制功能,11分钟后,它仍在复制。我尝试了SQLPlus COPY语句,但出现语法错误(需要帮助)。我仍然可以将数据提取为INSERT语句,直接运行 1) SQLPLUS复制如下: copy from report_new/mypassword@(DESCRIPTION= (ADDR

我有一个大表(3.5MM记录),需要从一个模式/数据库复制到另一个模式/数据库。我尝试了TOAD的“从表复制数据”功能,但出现了错误,它从未完全复制,部分原因是连接不断断开。我正在尝试SQLDeveloper的对象复制功能,11分钟后,它仍在复制。我尝试了SQLPlus COPY语句,但出现语法错误(需要帮助)。我仍然可以将数据提取为INSERT语句,直接运行

1) SQLPLUS复制如下:

copy from  report_new/mypassword@(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=10.15.15.20)(PORT=1541))(CONNECT_DATA=(SERVICE_NAME=STAGE))) to report/mypassword@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.18.22.25)(PORT=1550))(CONNECT_DATA=(SERVICE_NAME=DEV))) CREATE USER_USAGE_COUNT USING SELECT * FROM _USER_USAGE_COUNT
以上给我的

SQL> start copy_user_count_table.sql
SP2-0758: FROM clause missing username
2) 我试过蟾蜍 TOAD“将数据复制到另一个架构”失败,因为连接已断开 下降。我首先将提交阈值设置为5000,然后设置为500

3) 我正在尝试SQLDeveloper的复制功能,但我认为它不会很快完成,也不会给我任何实际的进度指示。据我所知,它可以挂起来,但它只是不想告诉我

4) 我曾想过创建一个数据链,但我没有创建数据链的权限,而且它是在一个DBA在3天内没有响应的公司环境中创建的


Todo:我是否应该编写自己的Java代码,一次只做一条记录??我不应该这样做,但不知何故,将一个人送上月球比将数据从一个模式复制到另一个模式更容易。

您可以使用
sqlcl
的copy命令,这是较新的SQLdeveloper版本的一部分。
sqlcl
位于
Sqldeveloper\bin
目录中,名为sql.exe(Windows)或sql(Unix/Linux/Mac)。以下步骤是:

  • 使用sqlcl连接到目标数据库
  • sql用户名/password@destindationdb
    
  • 使用“复制”命令
  • 从username@sourcedatabase使用sourcetable中的select*创建newtablename;
    
    我认为数据泵导出和导入是正确的方法。这些实用程序旨在移动数据。请尝试EZ Connect语法:从报告复制\u新建/mypassword@10.15.15.20:1541/要报告的阶段/mypassword@10.18.22.25:1550/DEV使用SELECT*FROM用户使用率创建用户使用率计数_COUNT@btpys您能告诉我上面的复制命令有什么问题吗?您能告诉我上面的复制命令有什么问题吗复制我上面的命令?@Woodsman我想问题是连接中的tns synax。我已经在sqlplus
    (DESCRIPTION)中使用带有tns语法的connectstring尝试了您的示例=(ADDRESS_LIST=
    并获得相同的错误
    SP2-0758:FROM子句缺少username
    。使用EZ connect语法
    user/password@host:port/Servicename
    它在sqlplus中正确运行。谢谢。太晚了,我看不出这个ez(更合理的)语法和TNS语法之间的区别。我的错误。