oracle之命令行导入导出数据库及sqlplus远程连接

[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/[email protected]:1521/orcl file=d:\zhpt.dmp full=y
image.png

导入数据库(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/[email protected]: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 导出, 而不是当前用户

oracle之命令行导入导出数据库及sqlplus远程连接_第1张图片
image.png

导出是哪个用户,导入时用户也要相同,需要自己再创建一个用户


20170927
我发现仍然可以导入,用户名不一样,也有可能忽略了前缀c##,c##是新版oracle数据库的要求

image.png

只有管理员用户,才可以导入

image.png

导入的用户,需要赋与管理员权限

ora-28759 无法打开文件

以下这两句可能在不同的操作系统,支持不同,不太清楚,我服务器,两个都是sever2008,但是只有一个报这个错误,这个报错确实跟用户连接有关系,最好是采用second

# first
expdp test/test@orcl directory=my_dir dumpfile=my.dmp exclude=table:\"in \(\'DEPT\',\'EMP\'\)\"
# second
expdp test/[email protected]: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

你可能感兴趣的:(oracle之命令行导入导出数据库及sqlplus远程连接)