zoukankan      html  css  js  c++  java
  • 导入导出总结备忘录

    导出

    1,创建导出用户并赋予权限

    create user username identified by password;

     //resource和connect权限,就能导出本用户下的数据,如果有exp_full_database权限,能导出整个数据库的数据;

    grant resource,connect,exp_full_database to username;

    2,创建oracle文件夹并赋予权限

    create or replace directory directoryname as '/usr/ora_expdp_file';

      查看可用文件夹

    select * from all_directories;

       //查看创建的目录须要的操作系统权限。

      赋予某用户对某文件夹的读写权限

    grant read, write on directory directoryname to username;

    3,导出  

     用用户expdp_id以6并发并压缩(compression=all)的方式将tables、日志名称为emr_wh_2017.10.17.log,导出文件名称为emr_wh_2017.10.17_%U.dmp 的方式导出到文件夹DUMP_HIS

    expdp "/ AS SYSDBA" directory=DATA dumpfile=JKHIS_CHHIS_%U_${DATE_SUF}.dmp logfile=fullusers_${DATE_SUF}.log schemas=JKHIS,CHHIS parallel=4 cluster=N compression=all

    impdp 

    总结:为防止bug或者Oracle的产品变更。原库与最终库版本最好保持一直,排除'SYS','SYSMAN','WMSYS','OUTLN','APEX','SH'用户(SH用户用于演示,可选),windows系统注意转义符。

    误区1:

    impdp需要手动创建表空间,创建用户,导入用户数据。

    impdp可选项(expdp同理)

    USERID=test/test                  --导出所使用的用户,本地用户
    DIRECTORY=dmpfile            --导出的逻辑目录,一定要在oracle中创建完成的,并且给用户授权读写权限
    DUMPFILE=xx.dmp               --导出的数据文件的名称,如果想在指定的位置的话可以写成dumpfile=/home/oracle/userxx.dmp
                          -- 使用并行时候需要使用变量命名,如%U
    LOGFILE=xx.log                --日志文件,如果不写这个参数的话默认名称就是export.log,可以在本地的文件夹中找到
    SCHEMAS=userxx            --使用dblink导出的用户不是本地的用户,需要加上schema来确定导出的用户,类似于exp中的owner,但还有一定的区别
    EXCLUDE=TABLE:"IN('T1','T2','T3')"         --exclude 可以指定不导出的东西,table,index等,后面加上不想导出的表名
                          --也可以过滤角色、视图、序列
                                                                     --EXCLUDE=SEQUENCE,VIEW,TABLE:"IN ('EMP','DEPT')" 过滤所有的SEQUENCE,VIEW以及表对象EMP,DEPT
    INCLUDE=TABLE:"IN('T1','T2','T3')"         --与EXCLUDE同理,
    NETWORK_LINK=db_local        --这个参数是使用的dblink来远程导出,需要指定dblink的名称

    常见过滤选项

    EXCLUDE=SEQUENCE,VIEW                          --过滤所有的SEQUENCE,VIEW
    EXCLUDE=TABLE:"IN ('EMP','DEPT')"               --过滤表对象EMP,DEPT
    EXCLUDE=SEQUENCE,VIEW,TABLE:"IN ('EMP','DEPT')" --过滤所有的SEQUENCE,VIEW以及表对象EMP,DEPT
    EXCLUDE=INDEX:"= 'INDX_NAME'"                   --过滤指定的索引对象INDX_NAME
    INCLUDE=PROCEDURE:"LIKE 'PROC_U%'"              --包含以PROC_U开头的所有存储过程(_ 符号代表任意单个字符)
    INCLUDE=TABLE:"> 'E' "                          --包含大于字符E的所有表对象

    其它常用操作符 NOT IN, NOT LIKE, <, != 等等
     

    impdp impdpuser/******** DIRECTORY=dump DUMPFILE='fulldb_01_20191106_0100.dmp','fulldb_02_20191106_0100.dmp' logfile=impdp_data_2019_11_10_02.log parallel=2 exclude=schema:"in ('SYS','SYSMAN','WMSYS','OUTLN')" 
     


    报错1:

    ORA-39083: 对象类型 TABLESPACE 创建失败, 出现错误:
    ORA-02236: 文件名无效
    失败的 sql 为:
    CREATE UNDO TABLESPACE "UNDOTBS1" DATAFILE SIZE 26214400 AUTOEXTEND ON NEXT 5242880 MAXSIZE 32767M BLOCKSIZE 8192 EXTENT MANAGEMENT LOCAL AUTOALLOCATE
    ORA-39083: 对象类型 TABLESPACE 创建失败, 出现错误:
    ORA-02236: 文件名无效
    错误原因:
     由于导入之前我查看了原库,手动创建了数据文件。此错误可以忽视。
     原库为RAC,使用ASM管理文件系统。创建数据文件并不需要指定文件位置,如果不手动创建,自动创建有可能失败。
     


    错误2:

    impdpuser/******** DIRECTORY=dump DUMPFILE='fulldb_01_20191106_0100.dmp','fulldb_02_20191106_0100.dmp' logfile=impdp_data_2019_11_10_02.log parallel=2 exclude=schema:"in ('SYS','SYSMAN','WMSYS','OUTLN')"

    LRM-00116: syntax error at ')"
    错误原因:
     导入库为windows系统,需要添加转义符
     
    修改
    impdpuser/******** DIRECTORY=dump DUMPFILE='fulldb_01_20191106_0100.dmp','fulldb_02_20191106_0100.dmp' logfile=impdp_data_2019_11_10_02.log parallel=2 exclude=schema:"in ('SYS','SYSMAN','WMSYS','OUTLN')"
     


    错误3

    处理对象类型 DATABASE_EXPORT/SCHEMA/JOB
    ORA-39083: 对象类型 JOB 创建失败, 出现错误:
    ORA-12718: 操作要求以 SYS 身份连接
    失败的 sql 为:
     BEGIN SYS.DBMS_IJOB.SUBMIT( JOB=> 4001, LUSER=> 'SYS', PUSER=> 'APEX_030200', CUSER=> 'APEX_030200', NEXT_DATE=> TO_DATE('2019-11-06 05:44:38', 'YYYY-MM-DD:HH24:MI:SS'), INTERVAL=> 'sysdate + 8/24', BROKEN=>  FALSE, WHAT=> 'wwv_flow_cache.purge_sessions(p_purge_sess_older_then_hrs => 24);', NLSENV=> 'NLS_LANGUAGE=''AMERICAN'' NLS_TERRITORY=''AMERICA'' NLS_CURRENCY=''$'' NLS_ISO_CURRENCY=''AMERICA'' NLS_NUMERIC_C
    ORA-39083: 对象类型 JOB 创建失败, 出现错误:
    ORA-12718: 操作要求以 SYS 身份连接
    失败的 sql 为:
     BEGIN SYS.DBMS_IJOB.SUBMIT( JOB=> 4002, LUSER=> 'SYS', PUSER=> 'APEX_030200', CUSER=> 'APEX_030200', NEXT_DATE=> TO_DATE('2019-11-06 01:15:39', 'YYYY-MM-DD:HH24:MI:SS'), INTERVAL=> 'sysdate + 10/1440', BROKEN=>  FALSE, WHAT=> 'wwv_flow_mail.push_queue(wwv_flow_platform.get_preference(''SMTP_HOST_ADDRESS''),wwv_flow_platform.get_preference(''SMTP_HOST_PORT''));', NLSENV=> 'NLS_LANGUAGE=''AMERICAN'' NLS_TERRITORY=


    失败为系统库,建议导入时候也排除’APEX角色/SH用户(oracle自带模板)’ exclude=schema:"in ('SYS','SYSMAN','WMSYS','OUTLN')"


    本次导入命令为
    impdp impdpuser/******** DIRECTORY=dump DUMPFILE='fulldb_01_20191106_0100.dmp','fulldb_02_20191106_0100.dmp' logfile=impdp_data_2019_11_10_02.log parallel=2 exclude=schema:"in ('SYS','SYSMAN','WMSYS','OUTLN','APEX','SH')"




     

  • 相关阅读:
    后端Golang+前端React架构开发案例
    Vim技巧大全
    Draggable Modal dialog in Bootstrap
    Github.com的镜像站
    kettle之excel上传数据库
    自定义函数之分割函数
    jmeter 压测 ActiveMq 消息队列
    SQL---查找+删除重复记录
    异常值检测(Outlier Detection)
    使用u盘在pc上安装centos7(安装停留在dracut:/#的处理)
  • 原文地址:https://www.cnblogs.com/ggykx/p/11856404.html
Copyright © 2011-2022 走看看