Oracle --- 数据的导入与导出

一、Oracle数据库的导入与导出

当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库。该处理称为数据库恢复,而要进行数据库的恢复必须要有数据库的备份工作。

 

 

二、采用exp/imp命令

数据库的导出(exp):

 

  • 将数据库orcl整库导出

 

 

exp scott/tiger@orcl file=d:\back_orcl.dmp full=y

 

  • 将数据库中system用户与sys用户的表导出

 

 

exp system/******@orcl file=d:\back_orcl_by_owner.dmp owner=(system,sys)

 

  • 将数据库中的表导出
exp scott/tiger@orcl file=d:\back_orcl_tables.dmp tables=(table1,table2)
  • 将数据库中的表table1中的字段telephone以“158”开头的数据导出
exp scott/tiger@orcl 
file=d:\back_orcl_table1_telephone.dmp
tables=table1 
query=\"where telephone like '158%' \"

 

 

 

 

 

 

 

数据库的导入(imp):

 

  • 将数据库orcl整库导入

 

 

imp scott/tiger@orcl file=d:\back_orcl.dmp full=y

 

  • 将数据库中system用户与sys用户的表导入
imp system/******@orcl file=d:\back_orcl_by_owner.dmp fromuser=(system,sys)
  • 将数据库中的表导入
imp scott/tiger@orcl file=d:\back_orcl_tables.dmp tables=(table1,table2)

 

 

 

 

 

注意:

1、如果导出时未指定file,那么在执行命令后会在当前目录下生成一个叫EXPDAT.DMP文件,此文件为备份文件。

2、exp imp导出导入数据方式的好处是只要你本地安装了Oracle客户端,你就可以将服务器中的数据导出到你本地计算机。同样也可以将dmp文件从你本地导入到服务器数据库中。但是这种方式在Oracle11g版本中会出现一个问题:不能导出空表。Oracle11g新增了一个参数deferred_segment_creation,含义是段延迟创建,默认是true。当你新建了一张表,并且没用向其中插入数据时,这个表不会立即分配segment。

 

解决办法:

  1、设置deferred_segment_creation参数为false后,无论是空表,还是非空表,都分配segment。在sqlplus中,执行如下命令:

  SQL>alter system set deferred_segment_creation=false;

  查看:

  SQL>show parameter deferred_segment_creation;

  该值设置后,只对后面新增的表起作用,对之前建立的空表不起作用,并且注意要重启数据库让参数生效。

  

      2、使用 ALLOCATE EXTEN

  使用 ALLOCATE EXTEN可以为数据库对象分配Extent,语法如下:

  alter table table_name allocate extent

  构建对空表分配空间的SQL命令:

  

  SQL>select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0

  批量生成要修改的语句。

  然后执行这些修改语句,对所有空表分配空间。

  此时用exp命令,可将包括空表在内的所有表导出。

 

 

 

 

三、用PL/SQL Develpoer工具完成导入导出

1. 导出格式介绍

 

 ① Dmp格式:.dmp是二进制文件,可跨平台,还能包含权限,效率好, 
 ② Sql格式:.sql格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种,适合小数据量导入导出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,会报错 
 ③ Pde格式:.pde格式的文件,.pde为PL/SQL Developer自有的文件格式,只能用PL/SQL Developer工具导入导出,不能用文本编辑器查看。 
 备注:虽然dmp格式为最优选,但是不容易实现,原因有俩点:首先此格式需要安装oracle完整版,因为导出时需要选择对应exp.exe与imp.exe,而且导出是安装的版本要与要导出数据的数据库版本一致,同理导入时也要对应,否则会出现版本不一致的问题(查阅资料中介绍的,个人没有证实);其次此格式的导出经常会遇到导出过程一闪而过,但是导出不成功的情况,原因未知(可以查阅环境变量配置ORACLE_HOME配置正确,个人尝试多次,仍有问题,最后无奈选取导出为pde格式)。

 

2、导出方法

登录plsql工具,所使用用户为源数据库有导出权限(exp_full_database,dba等)的用户。 

 ①导出建表语句(包括存储结构) 
 导出步骤tools ->export user object,选择要导出的对象,导出.sql文件,如下图: 
Oracle --- 数据的导入与导出_第1张图片
  等待导出完成

 ②导出数据文件 
  导出步骤tools ->export tables,选择要导出的表及导出的格式进行导出。 
  导出为dmp格式,如下图: 
  
Oracle --- 数据的导入与导出_第2张图片
  
  导出为sql格式,如下图: 
  
Oracle --- 数据的导入与导出_第3张图片
  
  导出为pde格式,如下图: 
  
Oracle --- 数据的导入与导出_第4张图片
 备注:采用第三方工具导出导入整个数据库的话,耗时较长,一定要有足够的时间来操作(数据量大的话需要好几个小时)

3、导入方法

登录plsql工具,使用之前准备工作所创建的用户。 
 步骤类似导出方法 
 ①导入建表语句 
  导入步骤tools->import tables->SQL Inserts 导入.sql文件 
 ②导入数据 
   tools->import talbes,然后再根据导出的数据格式选择导入dmp文件,或者sql文件,或者pde文件。 
  备注:导入之前最好把以前的表删除,当然导入另外数据库除外。 
     另外导入时当发现进度条一直卡在一个点,而且导出的文件不再增大时,甚至是提示程序未响应,千万不要以为程序卡死了,这个导入导出就是比较缓慢,只要没有提示报错,或者导入完成就不要停止程序。 

 

 

 

 

你可能感兴趣的:(------,Oracle,数据库)