一、exp 备份还原
1、备份
exp tomma/123456@orcl file=/tmp/oracledata/$(date +%Y%m%d).dmp
2、还原
imp scott/scott123@orcl file=/tmp/oracledata/20200312.dmp
二、expdp 备份
Oracle10g提出的数据泵技术,在以下几个方面优于exp/imp命令:
1、数据泵工具运行于服务器端,相比客户端的exp/imp其性能更好,并能实现exp/imp的全部功能。
2、通过使用exclude,include,content等参数,数据泵可以为数据及数据对象提供更细微级别的选择性。
3、通过设定数据库版本号,数据泵可以兼容老版本的数据库系统。
4、并行执行。
5、通过estimate_only参数,数据泵可以预估导出作业所需的磁盘空间。
6、支持分布式环境中通过数据库连接实现导入\导出。
7、支持导入时重新映射功能(即将对象导入到新的目标数据文件、架构及表空间等)。
8、支持元数据压缩及数据采样。
1、创建 directory 目录
create directory dumpfile as '/tmp/oracledata/';
# 查看目录
select * from dba_directories;
2、授权目录读写权限给用户
grant read,write on directory dumpfile to tomma;
3、创建备份的目录
mkdir -p /tmp/oracledata/
chown -R oracle:oinstall /tmp/oracledata/
4、备份
# 用普通用户 tomma 导出 自己的数据库
# 普通用户授权目录读写权限
expdp tomma/123456 directory=dumpfile dumpfile=test_$(date +%Y%m%d).dmp logfile=test_$(date +%Y%m%d).log
# 用管理员账号导出 用户 tomma 的数据库
# 管理员账号不用授权目录读写权限
expdp system/oracle schemas=tomma
directory=dumpfile dumpfile=test_$(date +%Y%m%d).dmp logfile=test_$(date +%Y%m%d).log
5、导入
# 在imp中导入不同用户使用fromuser,touser进行说明
# 但在impdp中,则需要使用remap_schema
# 目录还要授权给导入的用户
grant read,write on directory dumpfile to mshxuyi;
impdp mshxuyi/123456 directory=dumpfile dumpfile=test_20200312.dmp
logfile=test_20200312.log remap_schema=tomma:mshxuyi
# 如果是导出数据的用户与登入用户不同
# 还要加入 schemas=tomma
impdp system/oracle schemas=tomma directory=dumpfile
dumpfile=test_20200313.dmp logfile=test_20200313.log remap_schema=tomma:mshxuyi
三、oracle 创建 dblink 备份远程数据库
由于expdp只能在服务端进行本地备份写入,受限比较大,这个时候可以考虑用 expdp 的 network_link 方式进行远程导出或直接导入,下面是这个方案的详细介绍:
1、本地库创建dblink指向远程库
# 授权
grant create database link to tomma;
# 语法
create database link link_name connect to user identified by passwd using 'ip:port/SERVICE_NAME';
# 参数
link_name 自定义链接
user 指远程数据库的用户名
passwd 指远程数据库的密码
ip:port/SERVICE_NAME 远程 IP/端口号/服务名
# 范例
create database link link_ecs connect to tomma identified by "123456" using '192.168.2.16:1521/ecs';
# 查看链接
select * from dba_db_links;
# 删除链接
drop database link name;
2、创建 directory 目录
create directory dumpfile as '/oracledata/dumpfile/';
3、导出
expdp system/oracle network_link=link_ecs schemas=tomma directory=dumpfile dumpfile=ecs_$(date +%Y%m%d)
# 参数
system/oracle # 指本地的用户名和密码
network_link # 前面创建的自定义链接名
schemas=tomma # 导出的tomma的所有数据
# 注意
# 远程服务器的用户要先授权
SQL> grant exp_full_database to tomma;