Oracle: How to efficiently copy a table from one schema to another on a different database and server

帅比萌擦擦* 提交于 2020-01-05 03:59:06

问题


I have a large table (3.5MM records) that I need to copy from one schema/database to another schema/database. I tried TOAD's copy data from table feature, but got errors and it never fully copied, in part because the connection keeps getting dropped. I'm trying the object copy feature of SQLDeveloper, and after 11 minutes, it's still copying. I tried the SQLPlus COPY statement but got a syntax error (help needed). I'm still open to extracting the data as INSERT statements that I can just run directly.

1) SQLPLUS Copy as follows:

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

The above gives me

SQL> start copy_user_count_table.sql
SP2-0758: FROM clause missing username

2) I tried TOAD The TOAD "Copy data to another schema" fails due to the connection getting dropped. I set the commit threshold first to 5000 then to 500.

3) I'm trying SQLDeveloper's copy function, but I think it's not going to finish anytime soon and it gives me no real progress indications. For all I know, it could be hung but that it just doesn't want to tell me.

4) I thought about creating a datalink, but I don't have the authority to create one, and it's in a corporate environment wherein the DBA's don't respond in under 3 days.

Todo: Should I write my own Java code to just do this one record at a time?? I shouldn't have to do this, but somehow it's easier to send a man to the moon than to copy data from one schema to another.


回答1:


You can use the copy command of sqlcl which is part of newer SQLdeveloper releases. The sqlcl is found in the Sqldeveloper\bin directory and is named sql.exe (Windows) or sql (Unix/Linux/Mac). The steps to follow are:

  1. Connect to Destination database with sqlcl
sql username/password@destindationdb
  1. Use the copy command
copy from username@sourcedatabase create newtablename using select * from sourcetable;


来源:https://stackoverflow.com/questions/57720819/oracle-how-to-efficiently-copy-a-table-from-one-schema-to-another-on-a-differen

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!