netnr/ oracle_expdp_impdp.sh 2020-10-14 09:56
Oracle 数据库导入导出
# 按用户导出
expdp system/oracle@orcl schemas=$user dumpfile=$dbname.dmp logfile=$dbname.log directory=DATA_PUMP_DIR
# 按表名导出
expdp system/oracle@orcl tables=($TABLE1,$TABLE2) dumpfile=$dbname.dmp logfile=$dbname.log directory=DATA_PUMP_DIR
# 按用户导入(表覆盖)
impdp system/oracle@orcl schemas=$user dumpfile=$dbname.dmp logfile=$dbname.log directory=DATA_PUMP_DIR table_exists_action=REPLACE
# 按用户导入(转换空间)
impdp system/oracle@orcl schemas=$user TRANSFORM=segment_attributes:n dumpfile=$dbname.dmp logfile=$dbname.log directory=DATA_PUMP_DIR table_exists_action=REPLACE

# 导入导出包权限设置
chown oracle -R /u01/app/oracle/admin/EE/dpdump/

# DIRECTORY 参数说明
-- 查看管理员目录
select * from dba_directories
-- 创建逻辑目录,还需手动创建目录,Oracle不关心目录是否存在,不存在会报错
create directory DP_DIR as 'C:\app\Administrator/admin/orcl/dpdump/'
# DUMPFILE 指定的 dmp 文件应放在 DIRECTORY 目录下
-- 删除逻辑目录
drop directory DP_DIR

# help
https://www.cnblogs.com/qlqwjy/p/8405164.html


# 按用户导出全部
exp system/oracle@orcl file=d:/$dbname.dmp full=y;
exp system/oracle@orcl file=d:/$dbname.dmp full=y rows=N; # 仅导出结构
# 按用户导出库
exp system/oracle@orcl file=d:/$dbname.dmp owner=$user;
# 按表名导出
exp system/oracle@orcl file=d:/$dbname.dmp tables=$TABLE1;
# 导入完整数据库
imp system/oracle@orcl file=d:/$dbname.dmp log=d:/$dbname.log full=y ignore=y
# 按用户导入库(覆盖)
imp system/oracle@orcl file=d:/$dbname.dmp log=d:/$dbname.log fromuser=$user ignore=y
# 按用户导入(转换用户)
imp system/oracle@orcl file=d:/$dbname.dmp log=d:/$dbname.log fromuser=$user touser=$newUser
# 按表导入
imp system/oracle@orcl file=d:/$dbname.dmp log=d:/$dbname.log fromuser=$user tables=($TABLE1,$TABLE2)

# full 导出整个数据库 rows=N 导出整个数据库结构
# owner tables 指定用户对象和表名
# file log 指定备份 dmp 名称和 log 名称,包括文件名和目录
# compress=N 不压缩