Oracle数据库间的数据复制 - SQLPlus中的COPY命令

Copy命令可以实现不同Oracle数据库间的数据的复制,也是可以实现同一数据库的数据复制,其性能表现和导入/导出相同。

根据9i文档,说Copy命令未来会不支持,但实际上Oracle 11g仍然支持Copy命令,只是未写入11g的文档里,未来12C不知道还支不支持。

Copy也有明显的缺点,Copy只支持五种数据类型,Char,Date,Long,Number,Varchar2,8i之后Oracle数据库新增的数据类型都不支持。

使用方法:

1.首先确保TNS里记录了源Instance和目标Instance的连接信息;

2.运行SQL * Plus(无需连接具体的Instance)

sqlplus /nolog

3.运行Copy命令

Copy命令的语法:

COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)]
USING query

where database has the following syntax:

username[/password]@connect_identifier

Copies data from a query to a table in a local or remote database. COPY
supports the following datatypes:

CHAR

DATE

LONG

NUMBER

VARCHAR2

Example:

  1. copy from user1/[email protected]_instance to user2/[email protected]_instance create emp2 using select * from emp;

上边的命令会从source_instance中把emp数据拷贝到dest_instance中的emp2表。

数据库内的复制,也可以使用Copy命令,Example:

  1. copy from scott/[email protected] to scott/[email protected] create emp2 using select * from emp;

这就有点类似于CREATE TABLE empx AS (SELECT * FROM emp);
根据Tom的说法,Copy 的效率可能会比CREATE TABLE ... AS ...(数据库间的复制也可以使用Create table...as,通过database Link)差,因为Copy是把数据从一个Instance拷贝到sqlplus,再从sqlplus插入另外一个Instance。

而CREATE TABLE ... AS ...是把一个数据库的数据直接插入到第二个数据库,所以效率会高一些。

Copy 命令的四种模式

* replace子句指定了被创建的表名。如果目标表已存在,则删除并用包含复制数据的表替代。若不存在,则创建目标表。
* 使用create子句可避免覆盖已存在的表。若目标表已存在,则copy报告一个错误;若不存在,则创建目标表。
* insert插入数据到已存在的表。将查询到的行插入到目标表,如果目标表不存在,copy返回错误。当使用insert时,using子句必须为目标表的每个列选择对应的列。
* append是将查询到的行插入到目标表。如果不存在,则创建目标表并插入。

其他说明

如果copy命令比较长,可以在分行时每行末尾必须有续行符(-),最后一行不加。

    1. copy from scott/[email protected] -
    2. to scott/[email protected]
    3. create empy-
    4. using select * from emp-
    5. where rownum = 1
时间: 2024-10-11 04:14:11

Oracle数据库间的数据复制 - SQLPlus中的COPY命令的相关文章

【翻译自mos文章】oracle数据库的最大数据容量限制和表空间的最大数据容量限制

oracle数据库的最大数据容量限制和表空间的最大数据容量限制 参考原文: What Is The Maximum Tablespace Size And Database Limit For An Oracle Database ? (Doc ID 1372905.1) 适用于: Oracle Database - Enterprise Edition - Version 10.1.0.2 to 11.2.0.3 [Release 10.1 to 11.2] Oracle Database -

JAVA读取Oracle数据库BLOB字段数据文件并保存到本地文件

******JAVA读取Oracle数据库BLOB字段数据文件并保存到本地文件****** package com.bo.test; import java.io.FileOutputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import

ORacle数据库导入导出数据

一.导出1.导出整个数据库通用命令:exp 数据库用户名/数据库密码@数据库别名 file=E:\目录\文件名.dmp举例:exp gwyxgldb /gwyxgldb @192.168.0.31  file=d:\gwyxgldb.dmp 2.导出部分表通用命令exp 数据库用户名/数据库密码@数据库别名 GRANTS=Y TABES=(要导出的表1, 要导出的表2,...) file=E:\目录\文件名.dmp exp gwyxgldb /gwyxgldb @192.168.0.31 gra

c#用log4Net将日志写入到Oracle数据库,并写入到文件中

原文:c#用log4Net将日志写入到Oracle数据库,并写入到文件中 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/weixin_37913923/article/details/79072898 1.从官网下载log4net包,安装到项目中: 2.配置文件log4net.config/app.config <?xml version="1.0" encoding=&

操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误

操作Oracle数据库,插入数据时显示:ORA-00984列在此处不允许错误,如下图所示: 出现的原因是由于,在插入字符或字符串型字段时.如果插入的数据是纯数字,则不会有错误:如果出现字符,则会报ORA-00984列在此处不允许异常. 可以创建TestUser表,如下: create table TestUser ( usercode char(5), username varchar2(20) ) 以下例子请注意第一个字段usercode的值 1.正常例子:usercode为纯数字.可以正常插

MYSQL数据库间同步数据

http://blog.csdn.net/swandy45/article/details/6982421 环境要求: Windows 操作系统 需要Mysql 3.23.15以后的版本. 假设数据库A为主机,数据库B为从机(A向B提供同步服务,即B中的数据来自A) A机器:IP=10.10.151.166 B机器:IP=10.10.151.156 下面看单向同步的配置步骤: 1         在机器A中建立一个新的数据库,sql语句: [sql] view plain copy CREATE

Oracle数据库开发SQL基础之操作表中数据

一.添加数据 INSERT语句 INSERT INTO table_name(字段的名字,字段的名字)VALUES(VALUE1,VALUE2) 1.向表中所有字段添加值 INSERT INTO userinfo VALUES (1,'xxx','123','[email protected]',sysdate) 2.向表中制定的字段添加值 INSERT INTO userinfo(id,username,userpwd) VALUES(2,'yyy','123') create table u

oracle数据库cmd导出数据和导入数据

一:前言 每次我自己来导出oracle数据的数据进行备份的时候都是要看一遍记载的语句,还别说自己敲多了,也熟练了,但是还是不是很放心,所以就记载下来吧. 二:内容 (1).最简单,最直接的导入方式(这种导入需要用户具有dba权限) imp user/password file="H:/db_table.dmp" full=y (2).导出数据库的方式 A:最简单最直接的方式 exp user/password @192.168.22.22/orcl file=F:/db_table.d

Oracle数据库表空间 数据文件 用户 以及表创建的SQL代码

--create the tablespace CREATE SMALLFILE TABLESPACE "TABLE_CONTAINER" --创建表空间 DATAFILE 'E:\ORACLE\ORADATA\ORCL\table_01.DBF' --建立数据文件,数据文件的文件位置 SIZE 100M --数据文件的初始大小 AUTOEXTEND ON NEXT 100M --数据文件增量大小 MAXSIZE UNLIMITED --数据文件大小无限制 LOGGING EXTENT