• oracle数据库导入导出


    oracle数据库导入导出时注意点:

    • 目标数据库要与源数据库有着名称相同的表空间。
    • 目标数据在进行导入时,用户名尽量相同(这样保证用户的权限级别相同)。
    • 目标数据库每次在进行数据导入前,应做好数据备份,以防数据丢失。
    • 使用数据泵时,一定要现在服务器端建立可用的逻辑目录,并检查是否可用。
    • 弄清是导入导出到相同版本还是不同版本(oracle10g版本与oracle11g版本)。
    • 目标数据导入前,弄清楚是数据覆盖(替换),还是仅插入新数据或替换部分数据表。
    • 确定目标数据库磁盘空间是否足够容纳新数据,是否需要扩充表空间。
    • 导入导出时注意字符集是否相同,一般Oracle数据库的字符集只有一个,并且固定,一般不改。
    • 确定操作者的账号权限,一般需要dba权限操作。

    oracle数据库导出格式介绍

    • Dmp格式:.dmp是二进制文件,可跨平台,还能包含权限,效率好;
    • Sql格式:.sql格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种,
      适合小数据量导入导出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,会报错;
    • Pde格式:.pde格式的文件,.pde为PL/SQL Developer自有的文件格式,只能用PL/SQL Developer工具
      导入导出,不能用文本编辑器查看;

    传统方式导出(exp)和导入(imp)

    命令格式:

    exp(imp) 用户名/密码@连接地址:端口/服务名 file=“路劲/文件名.dmp” full=y|tables(tablename1,tablename2...)|owner(username1,username2...)|tablespaces= (tablespace1,tablespace2...);
    
    exp:导出命令,导出时必写。
    imp:导入命令,导入时必写,每次操作,二者只能选择一个执行。
    username:导出数据的用户名,必写;
    password:导出数据的密码,必写;
    @:地址符号,必写;
    SERVICENAME:Oracle的服务名,必写;
    1521:端口号,1521是默认的可以不写,非默认要写;
    file=“文件名.dmp” : 文件存放路径地址,必写;
    full=y :表示全库导出,此时的账号需要dba权限。可以不写,则默认为no,则只导出用户下的对象,;
    tables:表示只导出哪张表
    owner:表示导出某些用户的对象
    tablespaces:表示导出某些表空间下
    full|tables|owner|tablespaces只能使用一种
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    本文中数据库字符集为AL32UTF8并以这个字符集举例说明,备份还原前一定要核查数据库字符集,字符集的不同会造成数据乱码。
    $ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    导出数据 注意结尾不要些;否则分号会变成文件后缀 即db.dmp;
    
    如果只想导入结构或者数据,可以使用参数CONTENT,默认值为ALL 
    CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
    当设置CONTENT为ALL 时,将导出对象定义及其所有数据.
    为DATA_ONLY时,只导出对象数据,
    为METADATA_ONLY时,只导出对象结构
    
    $ exp usr_xg/usr_xg2016@x.x.x.x:1521/orcl file=/tmp/db.dmp  log=/tmp/db.log
    只导出数据结构
    $ exp usr_xg/usr_xg2016@x.x.x.x:1521/orcl file=/tmp/db.dmp  log=/tmp/db.log CONTENT=METADATA_ONLY
    导入数据
    $ imp usr_xg/usr_xg2016@x.x.x.x:1521/orcl file=/tmp/db.dmp  log=/tmp/db.log
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    使用数据泵导出(expdp)和导入(impdp)

    数据泵与传统导入导出区别:

    • exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。

    • expdp和impdp是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。

    • expdp或impdp命令时,可暂不指出用户名/密码@实例名 as 身份,然后根据提示再输入,如:
      expdp schemas=scott dumpfile=expdp.dmp DIRECTORY=dir;

    • 数据泵包含了 exp/imp实用程序的功能:

      1.高效处理大量数据的功能, 可以高效导出和导入大量数据。
      2.交互式命令行使用程序,使用它可以先断开连接,然后恢复连接活动的数据泵作业。
      3.在不创建数据泵文件的情况下,从远程数据库导出大量数据,并将这些数据直接导入本地数据库。
      4.通过导入和导出工作,在运行时更改方案,表空间,数据文件和存储位置;
      5.精细过滤对象和数据;
      6.对目录对象应用受控安全模式(通过数据库);
      7.高级功能,如压缩和加密。

    使用方法:

    通过expdb命令备份必须要有DIRECTORY目录(转储文件和日志文件所在的目录),11G中默认会有这个目录。我们通过以下命令可以查询出转储文件和日志文件所在的位置:

    SQL> select * from dba_directories t where t.directory_name='DATA_PUMP_DIR';
    
    OWNER                          DIRECTORY_NAME                         DIRECTORY_PATH  
    ------------------------------ ------------------------------   ------------------------------
    SYS                            DATA_PUMP_DIR                         /opt/oracle/admin/orcl/dpdump/
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果您不想放在这个默认目录下你也可以手工创建转储文件和日志文件所存放的目录(不推荐自己建目录):

    SQL> create or replace directory dump as '/opt/sudytech/oracle/app/oracle/admin/sudy/dump/';
    
    用sys管理员给你的指定用户赋予在该目录的操作权限:
    SQL> grant read,write on directory DATA_PUMP_DIR to 用户名;
    
    • 1
    • 2
    • 3
    • 4

    命令格式:

    expdp(impdp) 用户名/密码@连接地址:端口/服务名 schemas=用户名 dumpfile=file1.dmp logfile=file1.log directory=testdata1 remap_schema=test:test;
    
    exp:导出命令,导出时必写。
    imp:导入命令,导入时必写,每次操作,二者只能选择一个执行。
    username:导出数据的用户名,必写;
    password:导出数据的密码,必写;
    @:地址符号,必写;
    SERVICENAME:Oracle的服务名,必写;
    1521:端口号,1521是默认的可以不写,非默认要写;
    schemas:导出操作的用户名;
    dumpfile:导出的文件;
    logfile:导出的日志文件,可以不写;
    directory: 如果手工创建了转储文件和日志文件,通过本命令指定导出位置
    remap_schema=源数据库用户名:目标数据库用户名,二者不同时必写,相同可以省略;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    本文中数据库字符集为AL32UTF8并以这个字符集举例说明,备份还原前一定要核查数据库字符集,字符集的不同会造成数据乱码。
    导出数据
    $ export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
    导出数据,12.1版本之前会导出大量的统计数据,这会在导入时占用大量的内存,所以导出或导入时可以使用EXCLUDE=STATISTICS
    $ expdp test8/sudy12344 schemas=test8 dumpfile=file1.dmp logfile=file1.log  directory=DATA_PUMP_DIR exclude=STATISTICS
    $ cd /opt/oracle/admin/orcl/dpdump/
    $ ls
    dp.log  file1.dmp  file1.log
    
    导出数据 注意结尾不要些;否则分号会变成文件后缀 即db.dmp;
    
    如果只想导入结构或者数据,可以使用参数CONTENT,默认值为ALL 
    CONTENT={ALL | DATA_ONLY | METADATA_ONLY}
    当设置CONTENT为ALL,将导出对象定义及其所有数据.
    为DATA_ONLY时,只导出对象数据,
    为METADATA_ONLY时,只导出对象结构
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    当使用超管账号备份整个数据库
    $ su - oracle
    $ sqlplus / as sydba;
    SQL> select * from dba_directories; 查看DIR_DUMP目录
    DIRECTORY_PATH
    --------------------------------------------------------------------------------
    SYS                            DIR_DUMP
    /u/logic_backup/zs/dump
    注意要加上转义符
    $ expdp \'sys/admin222@ip:1521/zs(服务名) as sysdba\' directory=DIR_DUMP  dumpfile=20230206.dmp logfile=20230206.log full=y
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    导入数据
    $ impdp test8/sudy12344 schemas=test8 dumpfile=file1.dmp logfile=file1.log  directory=DATA_PUMP_DIR
    当使用IMPDP完成数据库导入时,如遇到表已存在时,Oracle提供参数TABLE_EXISTS_ACTION
    TABLE_EXISTS_ACTION:
       SKIP:跳过这张表,继续下一个对象,默认值。
       REPLACE:先drop已存在的表,然后create并加载数据。
       APPEND:追加数据,但不会影响已存在的行,即2行变4行。
       TRUNCATE:删除已存在的行,然后加载所有的数据。
    $ impdp test8/sudy12344 schemas=test8 dumpfile=file1.dmp logfile=file1.log  directory=DATA_PUMP_DIR TABLE_EXISTS_ACTION=TRUNCATE|REPLACE|APPEND
    SKIP|TRUNCATE|REPLACE|APPEND只能出现一种
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    expdp/impdp不同用户,不同表空间的转换

    1、假设a用户的默认表空间是a,导出用户a所有数据:
    $ expdp a/密码 schemas=a directory=DATA_PUMP_DIR  dumpfile=data.dmp  logfile=data.log
    
    如果只拿到了dmp文件并不知道用户和表空间,可以使用以下命令获取
    $ impdp system/oracle  directory=data_pump_dir dumpfile=data.dmp show=y content=metadata_only
    此时当前目录下会产生一个data.sql文件,查看sql文件即可获取用户和用户的表空间
    
    2、创建表空间和用户并授权
    CREATE TABLESPACE b  DATAFILE   '/u01/app/oracle/oradata/b.dbf'  SIZE 1048M  AUTOEXTEND ON NEXT 100M EXTENT    MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
    
    create  user b identified  by 密码 default  tablespace b;
    授予目标用户所需的表空间(例如users)和权限。
    grant connect ,resource ,dba to b;
    
    3、导入a用户所有数据到b,并且转换表空间a为b:
    $ impdp b/密码 directory=DATA_PUMP_DIR dumpfile=data.dmp remap_schema=a:b remap_tablespace=a:b logfile=data.log
    
    remap_schema=a:b            将数据的schema从a转换为b
    remap_tablespace=a:b        将数据的tablespace 从a 转换为b
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    plsql工具导出

    导出dmp后缀文件

    导入数据

    导出sql后缀文件

    导入数据

    导出pde后缀文件

    导入数据
    在这里插入图片描述

  • 相关阅读:
    计算机网络常见问题
    NXP iMX8MM Cortex-M4 核心 GPT Capture 测试
    2022年数维杯国际大学生数学建模挑战赛开赛公告
    webpack的loader和插件plugin
    Ubuntu MySQL
    牛客题目——买卖股票的最好时机(一)、(二)、(三)、设计LRU缓存结构
    JavaScript前端精确配置设置与监听器使用
    [其他]IDEA中Maven项目配置国内源
    细说 List、顺序表、ArrayList类(附 add 源码解读)—— 数据结构
    uniapp项目实践总结(二十)URLScheme 协议知识总结
  • 原文地址:https://blog.csdn.net/m0_37642477/article/details/127679602