oracle : 数据库导入导出
问题描述:oracle升级问题
- 厂子里oracle要从12c升级19c,使用客户端导出的时候,总会遇到很多涉及虚拟列不支持、触发器长度超出限制等问题。
- 后来终于搞到资源池宿主机的公共只读账号信息,使用数据泵导出,问题得到解决,记录数据泵的流程。
- 后续再补一篇客户端exp/imp导出遇到的详细问题,及解决方案。
数据导出-expdp步骤:
- 在服务端创建目录,作为预备放置dmp文件的目录,例:
/backup/dmpfile
- 使用dba账户创建逻辑目录,关联该实际路径。
# 创建目录 create directory dump_dir as '/backup/dmpfile'; # 检查目录 select * form dbs_directories; # 使用dba账户,给需要导出的应用用户赋dmp directory的权限 grant reat,write on directory dump_dir to user_daifu;
- 导出数据及关键参数说明
# 基础导出语句 expdp daifu/daifu@orcl dumpfile=daifu.dmp directory=dump_dir # 按用户导出 schemas=daifu; # 按照表导出 tables=users,works,...; # 按照查询条件 tables=user query='where username=daifu'; # 按表空间导出 tablespaces=daifu_tablespace,temp; # 整库导出 full=y; # parallel参数,与cpu数保持一致,否则会有资源争抢,不能提速
- 导入数据
# 基础导入 impdp daifu/daifu@orcl dumpfile=daifu.dmp directory=dump_dir # 按条件,与上面导出参数一样 # 追加数据 table_exists_action