我尝试将表从一个数据库复制到另一个数据库,但是当我尝试复制包含超过10k行的表时,它会阻塞。所以我把工作分成两份工作。在某个日期之前的一个副本数据和在此日期之后的另一个通过这种方式,我可以复制所有内容,但我认为这不是最佳方式。你能给我一些建议吗?
答案 0 :(得分:1)
我很久以前制作的Oracle
Batabase文档可以帮助您:
导出数据:
步骤1:创建可以访问的目录对象。目录对象只是指向物理目录的指针,创建它实际上并不在数据库服务器的文件系统上创建物理目录。
CREATE OR REPLACE DIRECTORY TEST_DIR AS '/U01/APP/ORACLE/ORADATA/ ';
GRANT READ,WRITE ON DIRECTORY TEST_DIR TO SCHEMA_NAME
注意:使用SYSDBA创建目录对象。
第2步:
expdp SCHEMA_NAME/PASSWORD@SID TABLES=Table_Name CONTENT=DATA_ONLY
VERSION=11.2 DIRECTORY=TEST_DIR DUMPFILE=NAGENDRA.DMP LOGFILE=NAGENDRA_LOG.LOG
注意:如果要在同一版本上导入和导出,则可以跳过version
参数。如果要创建表创建整个表,请删除content
参数。
导入数据:
步骤1:创建可以访问的目录对象。目录对象只是指向物理目录的指针,创建它实际上并不在数据库服务器的文件系统上创建物理目录。
CREATE OR REPLACE DIRECTORY TEST_DIR AS '/U01/APP/ORACLE/ORADATA/ ';
GRANT READ,WRITE ON DIRECTORY TEST_DIR TO SCHEMA_NAME
注意:使用SYSDBA创建目录对象。
步骤2:使用FTP将转储文件复制到目录。 (如果转储存在于不同的服务器上) 注意:使用FTP else文件的二进制传输模式可能会损坏。
步骤3:授予Schema权限以及转储文件。
GRANT IMP_FULL_DATABASE TO SCHEMA_NAME ;
注意:使用SYSDBA。
CHMOD 777 DUMP_FILE_NAME
步骤4:使用导入命令(IMPDP)
impdp SCHEMA_NAME/PASSWORD@SID DIRECTORY=TEST_DIR DUMPFILE=NAGENDRA.DMP
LOGFILE=IMP_NAGENDRA_LOG.LOG FULL=Y ;