导出导入Oracle的全部方法

版本信息

本文档使用的Oracle版本为11.2.0.1.0 - 64bit
本文档使用的Linux系统版本为CentOS Linux release 7.6.1810 (Core)

Oracle的导入导出的方法一般分为以下几种
1:传统方式——exp(导出)和(imp)导入:
2:数据泵方式——expdp导出和(impdp)导入;
二者优缺点描述:
1.exp/imp:
优点:代码书写简单易懂,从本地即可直接导入,不用在服务器中操作,降低难度,减少服务器上的操作也就保证了服务器上数据文件的安全性。
缺点:这种导入导出的速度相对较慢,合适数据库数据较少的时候。如果文件超过几个G,一般性能的电脑,至少需要4~5个小时左右。
2.expdp/impdp:
优点:导入导出速度相对较快,几个G的数据文件一般在1~2小时左右。
缺点:代码相对不易理解,要想实现导入导出的操作,必须在服务器上创建逻辑目录(不是真正的目录)。我们都知道数据库服务器的重要性,所以在上面的操作必须慎重。所以这种方式一般需要由专业的程序人员来完成.

特别强调:
目标数据库:数据即将导入的数据库(一般是项目上正式数据库);
源数据库:数据导出的数据库(一般是项目上的测试数据库);
1.目标数据库要与源数据库有着名称相同的表空间。
2.目标数据在进行导入时,用户名尽量相同(这样保证用户的权限级别相同)。
3.目标数据库每次在进行数据导入前,应做好数据备份,以防数据丢失。
4.使用数据泵时,一定要现在服务器端建立可用的逻辑目录,并检查是否可用。
5.弄清是导入导出到相同版本还是不同版本(oracle10g版本与oracle11g版本)。
6.目标数据导入前,弄清楚是数据覆盖(替换),还是仅插入新数据或替换部分数据表。
7.确定目标数据库磁盘空间是否足够容纳新数据,是否需要扩充表空间。
8.导入导出时注意字符集是否相同,一般Oracle数据库的字符集只有一个,并且固定,一般不改变。
10.确定操作者的账号权限。

具体的导入导出方法:

1、传统方法:
通用命令:
exp(imp) username/password@SERVICENAME:1521 file="e:\temp.dmp" full = y;
数据库导出举例:
exp test/123456@127.0.0.1:1521 file="/home/oracle/test.dmp" full = y;
exp:导出命令,导出时必写。
imp:导入命令,导入时必写,每次操作,二者只能选择一个执行。
username:导出数据的用户名,必写;
password:导出数据的密码,必写;
@:地址符号,必写;
SERVICENAME:Oracle的服务名,必写;
1521:端口号,1521是默认的可以不写,非默认要写;
file="/home/oracle/test.dmp": 文件存放路径地址,必写;
full=y :表示全库导出。可以不写,则默认为no,则只导出用户下的对象;
方法细分:
1.完全导入导出:
exp(imp)  username/password@SERVICENAME:1521 file="/home/oracle/test.dmp" full = y;
2.部分用户表table导入导出:
exp(imp)  username/password@SERVICENAME:1521 file="/home/oracle/test.dmp" tabels=(table1,table2,table3,...);
3.表空间tablespaces导入导出:
一个数据库实例可以有N个表空间(tablespace),一个表空间下可以有N张表(table)。
exp(imp)  username/password@SERVICENAME:1521 file="/home/oracle/test.dmp" tablespaces=(tablespace1,tablespace2,tablespace3,...);
4.用户名username对象导入导出:
exp(imp)  username/password@SERVICENAME:1521 file="/home/oracle/test.dmp owner(username1,username2,username3);
2、数据泵方法:
创建directory:
expdp(impdp) username/password@SERVICENAME:1521 schemas=username dumpfile=file1.dmp logfile=file1.log directory=testdata1 remap_schema=test:test;
数据库导出举例:
expdp test/123456@127.0.0.1:1521 schemas=test dumpfile=test.dmp logfile=test.log directory=testdata1;
exp:导出命令,导出时必写。
imp:导入命令,导入时必写,每次操作,二者只能选择一个执行。
username:导出数据的用户名,必写;
password:导出数据的密码,必写;
@:地址符号,必写;
SERVICENAME:Oracle的服务名,必写;
1521:端口号,1521是默认的可以不写,非默认要写;
schemas:导出操作的用户名;
dumpfile:导出的文件;
logfile:导出的日志文件,可以不写;
directory:创建的文件夹名称;
remap_schema=源数据库用户名:目标数据库用户名,二者不同时必写,相同可以省略;
1.查看表空间:
select * from dba_tablespaces;
2.查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)。
select * from dba_directories;
3.创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。
create directory testdata1 as '/test/dump';
4.给test用户赋予在指定目录的操作权限,最好以system等管理员赋予。
test 是用户名(123456是用户密码)
grant read,write on directory testdata1 to test;
5.导出数据
1)按用户导
expdp test/123456@orcl schemas=test dumpfile=expdp.dmp directory=testdata1;
2)并行进程parallel
expdp test/123456@orcl directory=testdata1 dumpfile=test3.dmp parallel=40 job_name=test3
3)按表名导
expdp test/123456@orcl tables=emp,dept dumpfile=expdp.dmp directory=testdata1;
4)按查询条件导
expdp test/123456@orcl directory=testdata1 dumpfile=expdp.dmp tables=emp query='WHERE deptno=20';
5)按表空间导
expdp system/manager directory=testdata1 dumpfile=tablespace.dmp tablespaces=temp,example;
6)导整个数据库
expdp system/manager directory=testdata1 dumpfile=full.dmp FULL=y;
6.还原数据
1)导入到指定用户下
impdp test/123456 directory=testdata1 dumpfile=expdp.dmp schemas=test;
2)改变表的owner
impdp system/manager directory=testdata1 dumpfile=expdp.dmp tables=test.dept remap_schema =test:system;
3)导入表空间
impdp system/manager directory=testdata1 dumpfile=tablespace.dmp tablespaces=example;
4)导入数据库
impdb system/manager directory=dump_dir dumpfile=full.dmp FULL=y;
5)追加数据
impdp system/manager directory=testdata1 dumpfile=expdp.dmp schemas=system table_exists_action;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值