Oracle数据库 备份/还原 方式

什么是数据库导入导出?

Oracle数据库的导入/导出,就是我们通常所说的Oracle数据的还原/备份。

  • 数据库导入:把.dmp 格式文件从本地导入到数据库服务器中。

  • 数据库导出:把数据库服务器中的数据,导出到本地生成.dmp格式文件。


Oracle数据导入导出方式与优缺点

  1. 传统方式:exp(导出)和imp(导入)。
  2. 数据泵方式:expdp(导出)和impdp(导入)。
  3. 第三方工具:略

优缺点描述

  1. exp/imp

    • 优点:简单易懂,从本地即可直接导入,不用在服务器中操作,降低难度,减少服务器上的操作也就保证了服务器上数据文件的安全性。
    • 缺点:这种导入导出的速度相对较慢,合适数据库数据较少的时候。如果文件超过几个G,大众性能的电脑,至少需要4~5个小时左右。
  2. expdp/impdp

    • 优点:导入导出速度相对较快,几个G的数据文件一般在1~2小时左右。
    • 缺点:代码相对不易理解,要想实现导入导出的操作,必须在服务器上创建逻辑目录(不是真正的目录)。我们都知道数据库服务器的重要性,所以在上面的操作必须慎重。
  3. 第三方工具

    • 优点:封装了导入导出命令,无需每次都手动输入命令。方便快捷,提高效率。
    • 缺点:长时间应用会对其产生依赖,降低对代码执行原理的理解。

特别强调

目标数据库:数据即将导入的数据库。
源数据库:数据导出的数据库。

  1. 确定操作者的账号权限。
  2. 目标数据库要与源数据库有着名称相同的表空间。
  3. 目标数据库每次在进行数据导入前,应做好数据备份,以防数据丢失。
  4. 确定目标数据库磁盘空间是否足够容纳新数据,是否需要扩充表空间。
  5. 目标数据导入前,弄清楚是数据覆盖,还是仅插入新数据或替换部分数据表。
  6. 弄清是导入导出到相同版本还是不同版本(oracle10g版本与oracle11g版本)。
  7. 导入导出时注意字符集是否相同,一般Oracle数据库的字符集只有一个,并且固定,一般不改变。
  8. 使用数据泵时,一定要现在服务器端建立可用的逻辑目录,并检查是否可用。
  9. 导出格式介绍
    • Dmp格式:.dmp是二进制文件,可跨平台,还能包含权限,效率好。
    • Sql格式:.sql格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,会报错。

实操导入导出

注意

  • EXP和IMP是客户段工具程序,它们既可以在可以客户端使用,也可以在服务端使用.

  • EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用

传统方式

模板:exp(imp)  用户名\密码@地址:端口 file="导出文件的存放地址\文件名.dmp"

导出全部实例:exp system/1234@127.0.0.1:1521/orcl file="G:\下载\temp.dmp" full=y
导出指定DATA_CL用户的表:exp system/1234@127.0.0.1:1521/orcl file="G:\下载\temp.dmp" owner=(DATA_CL)

导入实例:imp system/1234@127.0.0.1:1521/orcl file="G:\下载\temp.dmp" full=y

exp常用命令参数

  • full :是否全库导出或导入。默认为no,只导出用户下的对象。
  • buffer:数据缓冲区的大小,设置可以提高exp的速度。
  • owner:导出指定用户的表。
  • file:输出的文件。
  • tables:导出指定表名的表。
  • compress:是否压缩导出的文件。
  • query:选定导出表子集的子句。

数据泵方式

步骤

  1. 远程登录数据库所在服务器(DBA权限用户)

    sqlplus system
    
  2. 目录路径

    • 创建目录路径

      create directory data_path as 'G:\下载'; 
      

      注意

      • data_path为路径名称,可自定义。
      • 路径是导出的dmp文件存放的路径必须存在。
      • 上面命令只是指定了导出文件存放的路径,但是这个路径需要自己手动创建。
      • Linux需要修改这个路径隶属用户组,修改权限。
    • 查询用户创建目录

      select * from dba_directories;
      
    • 删除创建的目录

      drop directory data_path;
      

      注意:如果需要更换目录需要先删除在创建,不需要更换不用删除

  3. 创建用户并赋权限

    #创建dbuser用户
    create user dbuser identified by 1234;
    #赋予dbuser用户dba权限
    grant dba to dbuser;
    
  4. 修改权限

    • 为oracle用户授予访问数据目录的权限。

      Grant read,write on directory data_path to dbuser;
      

      注意:dbuser为Oracle用户名

    • 为oracle用户授予导入导出操作授权。

      grant exp_full_database,imp_full_database to dbuser;
      
  5. 退出

    exit;
    
  6. 导出dmp文件

    导出模板:
    	expdp 用户名/密码@sid schemas=用户名 directory=目录名 dumpfile=导出数据库文件(可自定义) logfile=日志文件文件名(可自定义)
    
    导出案例:expdp dbuser/1234@orcl schemas=dbuser dumpfile=expdp.dmp directory=data_path logfile=expdp.log
    

    问题:ORA-39213:元数据处理不可用

    解决方法:

    登录数据库:sqlplus system
    执行:execute dbms_metadata_util.load_stylesheets;
    
  7. 数据导入

    把需要导入的dmp文件上传到主机的(G:\下载)目录下

    导入模板:用户名/密码@sid REMAP_SCHEMA=源用户名:目标用户名 table_exists_action = replace directory=目录名 dumpfile=导出数据库文件(可自定义) logfile=日志文件文件名(可自定义)
    
    导入案例:impdp dbuser/1234@orcl REMAP_SCHEMA = dbuser:dbuser table_exists_action = replace directory=data_path dumpfile=expdp.dmp logfile=expdp.log
    
posted @ 2024-01-16 11:13  克峰同学  阅读(620)  评论(0编辑  收藏  举报