[TOC]
参考链接
Oracle数据库导入导出命令总结
sqlplus连接远程数据库
ORACLE的impdp和expdp命令
oracle expdp——红黑联盟
oracle之命令行导入导出数据库及sqlplus远程连接
oracle之命令行导入导出数据库
exp 和imp导入导出
导出命令 (exp)
exp [用户名]/[密码]@[主机ip]:[端口号]/[SID/service] file=d:\zhpt.dmp full=n
file是导出路径
full=n,表示是否导出主机数据库上全部用户,n表示否,y表示是
exp abc/abc@183.233.179.165:1521/orcl file=d:\zhpt.dmp full=y
导入数据库(imp)
# full 表示是否导出全部数据,一定要设置
# log 输出日志文件
# fromuser 从哪一个用户导入
# touser 导入到哪个用户
# ignore=y buffer=100000000; 修改缓冲区大小,有时sql语句过长,会造成缓冲区空间不足
imp username/pwd@orcl file=d:\zhpt.dmp log=C:\data\logname.log full=y
或者
imp username/pwd@orcl file=E:\20171108.dmp fromuser=username touser= username log=D:\webBackend\kingzheng\住房保障系统\fszfbz201711191635.log full=n
或者
imp username/pwd@orcl file=d:\zhpt.dmp log=C:\data\logname.log full=y ignore=y buffer=100000000;
创建数据泵使用expdp和impdp导入导出
需要先创建数据泵
数据泵,说白了就是指定一个目录给oracle,但是oracle不会帮你创建的,需要自己先实际地创建
# 查看所有数据泵地址
select * from dba_directories;
# 创建数据泵,数据泵地址即为你的导出导入地址文件地址
create directory myname as 'D:\temp\数据泵地址';
# 授予权限 sshe这个用户可读可写
grant read,write on directory dpdata1 to sshe;
sql>--可以使用以下语句查看目录操作权限
sql> SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;
注意: 数据泵地址以及文件dmp需要自己创建
导出数据(expdp)
这种数据泵效率非常高,但是使用这种数据泵导出的数据,需要用impdp导入
rem my_dir是数据泵名称
rem exclude table:"in(表名,列名2,……)"不导出某些表
expdp test/test@127.0.0.1:1521/orcl directory=my_dir dumpfile=my.dmp exclude=table:\"in \(\'DEPT\',\'EMP\'\)\" SCHEMAS=FSJSCX
impdp
跟expdp
的语法格式差不多
impdp test/test@orcl DIRECTORY=my_dir DUMPFILE=my.dmp SCHEMAS=test logfile=%logfile%
问题
这些对象由 FSZJZ 导出, 而不是当前用户
导出是哪个用户,导入时用户也要相同,需要自己再创建一个用户
20170927
我发现仍然可以导入,用户名不一样,也有可能忽略了前缀c##,c##是新版oracle数据库的要求
只有管理员用户,才可以导入
导入的用户,需要赋与管理员权限
ora-28759 无法打开文件
以下这两句可能在不同的操作系统,支持不同,不太清楚,我服务器,两个都是sever2008,但是只有一个报这个错误,这个报错确实跟用户连接有关系,最好是采用second
# first
expdp test/test@orcl directory=my_dir dumpfile=my.dmp exclude=table:\"in \(\'DEPT\',\'EMP\'\)\"
# second
expdp test/test@127.0.0.1:1521/orcl directory=my_dir dumpfile=my.dmp exclude=table:\"in \(\'DEPT\',\'EMP\'\)\"
sqlplus 远程连接
命令:sqlplus 用户名/密码@ip地址[:端口]/service_name [as sysdba]
示例:sqlplus sys/pwd@ip:1521/test as sysdba