oracle : 数据库导入导出

问题描述:oracle升级问题

  • 厂子里oracle要从12c升级19c,使用客户端导出的时候,总会遇到很多涉及虚拟列不支持、触发器长度超出限制等问题。
  • 后来终于搞到资源池宿主机的公共只读账号信息,使用数据泵导出,问题得到解决,记录数据泵的流程。
  • 后续再补一篇客户端exp/imp导出遇到的详细问题,及解决方案。

数据导出-expdp步骤:

  1. 在服务端创建目录,作为预备放置dmp文件的目录,例:
       /backup/dmpfile
    
  2. 使用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;
    
  3. 导出数据及关键参数说明
    # 基础导出语句
    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数保持一致,否则会有资源争抢,不能提速
    
  4. 导入数据
    # 基础导入
    impdp daifu/daifu@orcl dumpfile=daifu.dmp directory=dump_dir
    # 按条件,与上面导出参数一样
    
    # 追加数据
    table_exists_action