首页 > 数据库 >Oracle数据导入,导出方式

Oracle数据导入,导出方式

时间:2024-01-16 11:26:14浏览次数:33  
标签:expdp 数据库 导出 dmp 导入 Oracle dbuser

什么是数据库导入导出?

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/[email protected]:1521/orcl file="G:\下载\temp.dmp" full=y
导出指定DATA_CL用户的表:exp system/[email protected]:1521/orcl file="G:\下载\temp.dmp" owner=(DATA_CL)

导入实例:imp system/[email protected]: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
    

标签:expdp,数据库,导出,dmp,导入,Oracle,dbuser
From: https://www.cnblogs.com/KeFeng/p/17967236

相关文章

  • [转帖]oracle导出千万级数据为csv格式
    当数据量小时(20万行内),plsqldev、sqlplus的spool都能比较方便进行csv导出,但是当数据量到百万千万级,这两个方法非常慢而且可能中途客户端就崩溃,需要使用其他方法。一、sqluldr2工具1.优缺点优点:高效;支持功能较多;用户只需有对应表查询权限;可以在从库执行缺点:目前已没有再维......
  • EVE-NG的环境导入IOL组件
    IOL或IOSOnLinux,也称为IOU或IOSOnUnix。IOL是一个模拟器,一般仅思科使用。IOL指为i386架构编译的Linux版本。IOU指为Sparc架构编译的Unix(Solaris)版本。由于IOL是内部IOS版本,因此IOL只能由Cisco授权客户使用。需要注意,这里的IOS区别于苹果IOS,是指互联操作系统是思科网络设备的操......
  • oracle如果想要在两个拼接字段中间加一些字符该怎么写
    如果想要在两个拼接字段的中间添加一些字符,可以使用字符串连接函数CONCAT或者字符串连接操作符||来实现。以下是两种写法的示例:使用CONCAT函数:SELECTCONCAT(字段1,'添加的字符',字段2)AS拼接结果FROM表名;在上述示例中,你需要将字段1和字段2替换为要拼接的实际字段......
  • 深入理解Oracle SGA和共享内存段
    在Oracle数据库中,SGA(SystemGlobalArea)是一个重要的内存区域,用于存储整个数据库实例共享的信息和数据。SGA由多个不同的区域组成,例如DatabaseBufferCache、SharedPool等。这些区域在操作系统中使用共享内存段来存储,而其中的一个关键参数是shmmax。SGA和共享内存段的关系SGA中的......
  • oracle的事务
    Oracle数据库中的事务具有四个基本特性,也称为ACID特性,包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。原子性:事务被视为不可分割的最小操作单位,事务中的所有操作要么全部提交成功,要么全部回滚失败,不会出现部分执行的情况。一致性:事务必须使数据库从......
  • Oracle怎样写一个sql,将一个不同的表结构的数据迁移到另一个表中,其中有字段需要有映射
    要将一个表的数据迁移到另一个表,并且需要进行字段映射和值转换,可以使用以下步骤:创建目标表:CREATETABLE目标表名(目标字段1数据类型,目标字段2数据类型,...);插入数据并进行字段映射和值转换:INSERTINTO目标表名(目标字段1,目标字段2,...)SELECTCASEWH......
  • Oracle 11gR2 中使用expdp导出数据
    一:导出前期准备:1.创建目录对象:CREATEDIRECTORYdump_dirAS‘c:\dump’;2.在操作系统上创建相应的目录。3.把目录的读写权限给用户:GRANTREAD,WRITEONDIRECTORYdump_dirTOscott;二:导出的模型1.导出表expdpscott/tigerDIRECTORY=dump_dirDUMPFILE=tab.dmplogf......
  • Aspose.Words使用word模板中的书签/域插入信息并导出
    首先我大概叙述一下我对这个东西的理解毕竟我也只是记录一下,确保下次自己在看的时候可以看懂,所以写的比较详细且傻瓜首先这个word文档不是凭空生成的,是你事先就把文档创建好的,里边的内容,格式都是实现创建好的只留下一些需要插入数据的地方,当然这些需要插入数据的地方也不是空着的......
  • 如何通过Navicat把MySQL远程数据库导入到本地数据库
    前提:先安装好MySQL、Navicat。1.打开Navicat,新建连接,连接名由自己取,我取的是localhost,如下填写好各项信息,测试连接,连接成功。那本地数据库就建好了。2.在localhost下新建目标数据库,写好数据库名3.点击Navicat的【工具】菜单,选择【数据传输】,细心选好源库和目标库,然后按提示一......
  • oracle清除日志
    近日发现oracle占用的空间很大,经查,发现是/u01/app/oracle/diag/rdbms/orcl/orcl/alert警告日志/u01/app/oracle/diag/rdbms/orcl/orcl/trace跟踪日志这两个目录日志文件太多。占用十几个G用adrci清除日志先确定目录SQL>selectvaluefromv$diag_infowherename='Dia......