Oracle--导入导出

开发者博客www.developsearch.com

Oracle 11g

oracle11g的导入导出命令:
expdp ecology/ecology directory=databak,dumpfile=eco37.dmp,logfile=eco37.log
impdp ecology/ecology directory=databak,dumfile=eco.dmp

D:\>expdp ecology/ecology directory=databak,dumpfile=ecology_207_20130314.dmp,logfile=ecology_207_20130314.log

oracle11g的导入导出命令:
D:\>expdp glpj/glpj@GLPJ_10.120.131.221 directory=databak dumpfile=framework_oracle11_20130403.dmp logfile=framework_oracle11_20130403.log
导出目录 :/home/oracle/app/admin/glpj/dpdump/

F:\app\Administrator\admin\orcl\dpdump>impdp glpj/glpj@ORCL dumpfile=framework_oracle11_20130403.dmp

create directory databak as '/home/oracle/app/admin/glpj/dpdump/'; 
Grant read,write on directory databak to glpj;

--查看目录及权限
SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d
 WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;


/*第1步:创建临时表空间  */
create temporary tablespace ECOLOGYTEMP 
tempfile 'F:\app\Administrator\oradata\orcl\ECOLOGYTEMP.dbf' 
size 100m
autoextend on 
next 50m maxsize 200m
extent management local
 
/*第2步:创建数据表空间  */
create tablespace ECOLOGY
logging
datafile 'F:\app\Administrator\oradata\orcl\ECOLOGY.dbf'
size 200m
autoextend on
next 50m maxsize 300m
extent management local
 
/*第3步:创建用户并指定表空间  */
create user ecology identified by ecology
default tablespace ECOLOGY
temporary tablespace ECOLOGYTEMP
 
/*第4步:给用户授予权限  */
grant connect,resource,dba to ecology

  

 

          本地导出 :exp idealims_jx/passw0rd@orcl  owner=idealims_jx file=IdealIMS_JX_20110511.dmp

          本地导入:  imp userid=ecology/ecology@ECOLOGY_LOCAL full=y file=ecology_oracle_20121203.dmp

 

          远程导出 :exp ecology/ecology@ECOLOGY_10.225.11.207  owner=ecology file=ecology_oracle_20121203.dmp

          远程导入:  imp userid=idealims/[email protected] full=y file=IdealIMS_JX_20110511.dmp

 

    将10G导入11G

          F:\app\Administrator\admin\orcl\dpdump>imp userid=idealims/idealims@orcl full=y file=IdealIMS_JX_20110511.dmp

 

导出几张表 : 

I:\>exp idealims/idealims@orcl

tables=IMS_OT_BUSINESS_LOG,IMS_OT_SYSTEM_CONFIG file=d:\tables.dmp

如果导出的用户名不一样,去掉加上fromuser=

 

如果是两个不同版本的数据库导入导出,用命令expdp impdp

expdp idealimsbt/idealimsbt dumpfile=idealimsbt_20091119.dmp

默认的导出位置 : D:\oracle\product\10.2.0\admin\orcl\dpdump

impdp idealims/idealims@BT_10.5.245.173 fromuser=idealimsbt dumpfile=idealimsbt_20091119.dmp

impdp idealims/idealims@BT_10.5.245.173 dumpfile=idealimsbt_20091119.dmp

 

 

 

使用plsql导入导出数据库

1)导出数据库对象

在PL/SQL Developer的菜单Tools=>Export User Objects中出来一个对话框界面,然后框选要到处的Oracle 数据库对象,包括表,序列,存储过程,视图,函数等等,并指定导出的文件名称。

       如下操作:
      
 

2)导出表数据

导出表结构和其他对象后,我们下一步就是把数据库的表数据进行导 出,PL/SQL Developer工具支持导出数据到PL/SQL数据库脚本中,如下所示。这样导出的脚本,我们可以在PL /SQL Developer工具导入或者自己通过Sql plus 工具进行导入。

       
 

至此,我们就已经完成了三种脚本了,包括创建数据库空间和数据库脚本、创建Oracle数据库对象(表、存储过程、视图、序列等)、创建导入数据的脚本,这样三种合一,就是一个完整的数据库了。最后一步就是我们如何导入数据库对象和数据的问题了。

 

2)导入数据库对象及数据

导入数据库对象和数据的操作一样,都可以通过Import Tables操作实现,我们指定刚才上面两步创建的数据库脚本,执行即可再新的环境中创建数据库对象和数据库数据了

     如下所示:
      
 
     

 

      执行的数据界面如下所示:
    
 

     完成上面几个步骤,我们在新的数据库环境中,就具备了所有的东西了,顺利完成整个Oracle数据库对象及数据的迁移工作。

     以上值得注意的是,我们导出Oracle对象和数据的时候,默认还是原来Oracle数据库的表空间和数据库用户名称的,如果我们想要在新的数据库服务器中指定不同的表空间和数据库用户对象,

     那么我们就需要替换生成的sql脚本,并在第一步指定合理的表空间和数据库用户。

     如果是Linux平台下的数据库服务器,第一步操作也是差不多的,就是指定表空间的路径名稍微不同,其他操作并无差异。

 

本地导出 :exp idealims_jx/passw0rd@orcl  owner=idealims_jx file=IdealIMS_JX_20110511.dmp

本地导入:  imp userid=ecology/ecology@ECOLOGY_LOCAL full=y file=ecology_oracle_20121203.dmp

 

远程导出 :exp ecology/ecology@ECOLOGY_10.225.11.207  owner=ecology file=ecology_oracle_20121203.dmp

远程导入:  imp userid=idealims/[email protected] full=y file=IdealIMS_JX_20110511.dmp

 

exp ecology/ecology@ECOLOGY_10.225.11.207  owner=ecology file=ecology_oracle_20121203.dmp

imp userid=idealims/[email protected] full=y file=IdealIMS_JX_20110511.dmp

 

10G导入11G

F:\app\Administrator\admin\orcl\dpdump>imp userid=idealims/idealims@orcl full=y file=IdealIMS_JX_20110511.dmp

 

导出几张表 : 

I:\>exp idealims/idealims@orcl

tables=IMS_OT_BUSINESS_LOG,IMS_OT_SYSTEM_CONFIG file=d:\tables.dmp

如果导出的用户名不一样,去掉加上fromuser=

 

如果是两个不同版本的数据库导入导出,用命令expdp 和impdp

expdp idealimsbt/idealimsbt dumpfile=idealimsbt_20091119.dmp

默认的导出位置 : D:\oracle\product\10.2.0\admin\orcl\dpdump

impdp idealims/idealims@BT_10.5.245.173 fromuser=idealimsbt dumpfile=idealimsbt_20091119.dmp

impdp idealims/idealims@BT_10.5.245.173 dumpfile=idealimsbt_20091119.dmp

 

一、创建逻辑目录,该命令不会在操作系统创建真正的目录,最好以system等管理员创建。

        create directory dpdata as '/opt';

 

二、查看管理理员目录(同时查看操作系统是否存在,因为Oracle并不关心该目录是否存在,如果不存在,则出错)

        select * from dba_directories;

 

三、给scott用户赋予在指定目录的操作权限,最好以system等管理员赋予。

        grant read,write on directory dpdata1 to scott;

 

--查看目录及权限

SELECT privilege, directory_name, DIRECTORY_PATH FROM user_tab_privs t, all_directories d

 WHERE t.table_name(+) = d.directory_name ORDER BY 2, 1;

 

 

四、导出数据

1)按用户导

        expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;

2)并行进程parallel

        expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3

3)按表名导

        expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;

4)按查询条件导

        expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';

5)按表空间导

        expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;

6)导整个数据库

        expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;

 

 

五、还原数据

1)导到指定用户下

        impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;

2)改变表的owner

        impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;

3)导入表空间

        impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;

4)导入数据库

        impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;

5)追加数据

        impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION

 

 

六、参数说明-----导入impdp

1、TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }

当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表病追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项;

2、REMAP_SCHEMA

该选项用于将源方案的所有对象装载到目标方案中:REMAP_SCHEMA=source_schema:target_schema

3、REMAP_TABLESPACE

将源表空间的所有对象导入到目标表空间中:REMAP_TABLESPACE=source_tablespace:target:tablespace

4、REMAP_DATAFILE

该选项用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要该选项.

REMAP_DATAFIEL=source_datafie:target_datafile

 

七、参数说明-----导出expdp

1、CONTENT:该选项用于指定要导出的内容.默认值为ALL

CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

当设置CONTENT为ALL ,将导出对象定义及其所有数据.DATA_ONLY,只导出对象数据,METADATA_ONLY,只导出对象定义

2、DIRECTORY:指定转储文件和日志文件所在的目录:DIRECTORY=directory_object

3、EXCLUDE:该选项用于指定执行操作时释放要排除对象类型或相关对象

        EXCLUDE=object_type[:name_clause] [,….]

        Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象.EXCLUDEINCLUDE不能同时使用

        Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dup EXCLUDE=VIEW

4、INCLUDE:导出时包含指定的类型

        (:INCLUDE=TABLE_DATA,

             INCLUDE=TABLE:"LIKE 'TAB%'"

             INCLUDE=TABLE:”NOT LIKE ‘TAB%’”…)

             EXCLUDE:导出时排除的数据类型(:EXCLUDE=TABLE:EMP)

5、FILESIZE:指定导出文件的最大尺寸,默认为0,(表示文件尺寸没有限制)(单位为bytes).

6、JOB_NAME:此次导出进程使用的名称,方便跟踪查询(可选)

7、FLASHBACK_SCN:指定导出特定SCN时刻的表数据

        FLASHBACK_SCN=scn_valueScn_value用于标识SCN.FLASHBACK_SCNFLASHBACK_TIME不能同时使用

        Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp

        FLASHBACK_SCN=358523

8、FLASHBACK_TIME:指定导出特定时间点的表数据:FLASHBACK_TIME=“TO_TIMESTAMP(time_value)”

        Expdp scott/tiger DIRECTORY=dump DUMPFILE=a.dmp FLASHBACK_TIME=“TO_TIMESTAMP(’25-08-2004 14:35:00’,’DD-MM-YYYY HH24:MI:SS’)”

9、TABLESPACE:指定一个表空间导出.

10、QUERY=[schema.] [table_name:] query_clause

        Schema用于指定方案名,table_name用于指定表名,query_clause用于指定条件限制子句.QUERY选项不能与CONNECT=METADATA_ONLY,EXTIMATE_ONLY,TRANSPORT_TABLESPACES等选项同时使用.

        Expdp scott/tiger directory=dump dumpfiel=a.dmp Tables=emp query=’WHERE deptno=20’

 

11、PARALLEL:并行操作:指定执行导出操作的并行进程个数,默认值为1

您可以通过PARALLEL 参数为导出使用一个以上的线程来显著地加速作业。每个线程创建一个单独的转储文件,因此参数dumpfile 应当拥有和并行度一样多的项目。您可以指定通配符作为文件名,而不是显式地输入各个文件名,例如:

expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export

注意:dumpfile 参数拥有一个通配符%U,它指示文件将按需要创建,格式将为expCASES_nn.dmp,其中nn 01 开始,然后按需要向上增加。

在并行模式下,状态屏幕将显示四个工作进程。(在默认模式下,只有一个进程是可见的)所有的工作进程同步取出数据,并在状态屏幕上显示它们的进度。

分离访问数据文件和转储目录文件系统的输入/输出通道是很重要的。否则,与维护Data Pump 作业相关的开销可能超过并行线程的效益,并因此而降低性能。并行方式只有在表的数量多于并行值并且表很大时才是有效的。

 

开发者博客www.developsearch.com

 

          本地导出 :exp idealims_jx/passw0rd@orcl  owner=idealims_jx file=IdealIMS_JX_20110511.dmp

          本地导入:  imp userid=ecology/ecology@ECOLOGY_LOCAL full=y file=ecology_oracle_20121203.dmp

 

          远程导出 :exp ecology/ecology@ECOLOGY_10.225.11.207  owner=ecology file=ecology_oracle_20121203.dmp

          远程导入:  imp userid=idealims/[email protected] full=y file=IdealIMS_JX_20110511.dmp

 

    将10G导入11G

          F:\app\Administrator\admin\orcl\dpdump>imp userid=idealims/idealims@orcl full=y file=IdealIMS_JX_20110511.dmp

 

导出几张表 : 

I:\>exp idealims/idealims@orcl

tables=IMS_OT_BUSINESS_LOG,IMS_OT_SYSTEM_CONFIG file=d:\tables.dmp

如果导出的用户名不一样,去掉加上fromuser=

 

如果是两个不同版本的数据库导入导出,用命令expdp impdp

expdp idealimsbt/idealimsbt dumpfile=idealimsbt_20091119.dmp

默认的导出位置 : D:\oracle\product\10.2.0\admin\orcl\dpdump

impdp idealims/idealims@BT_10.5.245.173 fromuser=idealimsbt dumpfile=idealimsbt_20091119.dmp

impdp idealims/idealims@BT_10.5.245.173 dumpfile=idealimsbt_20091119.dmp

 

 

 

使用plsql导入导出数据库

1)导出数据库对象

在PL/SQL Developer的菜单Tools=>Export User Objects中出来一个对话框界面,然后框选要到处的Oracle 数据库对象,包括表,序列,存储过程,视图,函数等等,并指定导出的文件名称。

       如下操作:
      
 

2)导出表数据

导出表结构和其他对象后,我们下一步就是把数据库的表数据进行导 出,PL/SQL Developer工具支持导出数据到PL/SQL数据库脚本中,如下所示。这样导出的脚本,我们可以在PL /SQL Developer工具导入或者自己通过Sql plus 工具进行导入。

       
 

至此,我们就已经完成了三种脚本了,包括创建数据库空间和数据库脚本、创建Oracle数据库对象(表、存储过程、视图、序列等)、创建导入数据的脚本,这样三种合一,就是一个完整的数据库了。最后一步就是我们如何导入数据库对象和数据的问题了。

 

2)导入数据库对象及数据

导入数据库对象和数据的操作一样,都可以通过Import Tables操作实现,我们指定刚才上面两步创建的数据库脚本,执行即可再新的环境中创建数据库对象和数据库数据了

     如下所示:
      
 
     

 

      执行的数据界面如下所示:
    
 

     完成上面几个步骤,我们在新的数据库环境中,就具备了所有的东西了,顺利完成整个Oracle数据库对象及数据的迁移工作。

     以上值得注意的是,我们导出Oracle对象和数据的时候,默认还是原来Oracle数据库的表空间和数据库用户名称的,如果我们想要在新的数据库服务器中指定不同的表空间和数据库用户对象,

     那么我们就需要替换生成的sql脚本,并在第一步指定合理的表空间和数据库用户。

     如果是Linux平台下的数据库服务器,第一步操作也是差不多的,就是指定表空间的路径名稍微不同,其他操作并无差异。

 

猜你喜欢

转载自keepwork.iteye.com/blog/1994089