ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle10g数据库导入、导出(exp/imp、expdp/impdp)

oracle10g数据库导入、导出(exp/imp、expdp/impdp)

原创 Linux操作系统 作者:tianjusanren 时间:2011-03-15 12:34:43 0 删除 编辑
1、oracle 10g 数据导入、导出

exp
imp
expdp
建目录与赋权:

 

  SQL>create directory dump_dir as '/u01/dmdir';

 

  SQL>grant readwrite on directory to test;

 

  SQL>select * from dba_directories;——查看目录


实例:

  1、通过DBLINK的方式:表空间不一样

 

  impdp logfile=DUP_MCMDB.LOG network_link=to_crm_7 schemas=MCMDB REMAP_TABLESPACE=table_space11:table_space12,table_space21:table_space22

 

  2、通过DBLINK的方式:方案(schemas)不一样

 

  impdp logfile=DUP_MCMDB.LOG network_link=to_crm_7 schemas=MCMDB remap_schema=MCMDB:MCMDB1

 

  前言:

 

  Oracle Database10g引入了最新的数据泵(Data Dump)技术,使DBA或开发人员可以将数据库元数据(对象定义)和数据快速移动到另一个oracle数据库中。

 

  数据泵导出导入(EXPDPIMPDP)的作用

 

  1,实现逻辑备份和逻辑恢复。

 

  2,在数据库用户之间移动对象。

 

  3,在数据库之间移动对象

 

  4,实现表空间搬移。

 

  数据泵导出导入与传统导出导入的区别:在10g之前,传统的导出和导入分别使用EXP工具和IMP工具,从10g开始,不仅保留了原有的EXPIMP工具,还提供了数据泵导出导入工具EXPDPIMPDP.使用EXPDPIMPDP时应该注意的事项;EXPIMP是客户段工具程序,它们既可以在可以客户端使用,也可以在服务端使用。

 

  EXPDPIMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用IMP只适用于EXP导出文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。

 

  数据泵导出包括导出表,导出方案,导出表空间,导出数据库4种方式。

 

  建目录与赋权:

 

  SQL>create directory dump_dir as '/u01/dmdir';

 

  SQL>grant readwrite on directory to test;

 

  SQL>select * from dba_directories;——查看目录

 

  EXPDP命令行选项

 

  1. ATTACH

 

  该选项用于在客户会话与已存在导出作用之间建立关联。语法如下

 

  ATTACH=[schema_name.]job_name

 

  Schema_name用于指定方案名,job_name用于指定导出作业名。注意,如果使用ATTACH选项,在命令行除了连接字符串和ATTACH选项外,不能指定任何其他选项,示例如下:Expdp scott/tiger ATTACH=scott.export_job

 

  2. CONTENT

 

  该选项用于指定要导出的内容。默认值为ALL

 

  CONTENT={ALL | DATA_ONLY | METADATA_ONLY}

 

  当设置CONTENTALL时,将导出对象定义及其所有数据。为DATA_ONLY时,只导出对象数据,为METADATA_ONLY时,只导出对象定义

 

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

 

  CONTENT=METADATA_ONLY

 

  3. DIRECTORY

 

  指定转储文件和日志文件所在的目录

 

  DIRECTORY=directory_object

 

  Directory_object用于指定目录对象名称。需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录

 

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

 

  建立目录:CREATE DIRECTORY dump as 'ddump';

 

  查询创建了那些子目录:SELECT * FROM dba_directories;

 

  4. DUMPFILE

 

  用于指定转储文件的名称,默认名称为expdat.dmp

 

  DUMPFILE=[directory_object]file_name [,…。]

 

  Directory_object用于指定目录对象名,file_name用于指定转储文件名。需要注意,如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象

 

  Expdp scott/tiger DIRECTORY=dump1 DUMPFILE=dump2a.dmp

 

  5. ESTIMATE

 

  指定估算被导出表所占用磁盘空间分方法。默认值是BLOCKS

 

  EXTIMATE={BLOCKS | STATISTICS}

 

  设置为BLOCKS时,oracle会按照目标对象所占用的数据块个数乘以数据块尺寸估算对象占用的空间,设置为STATISTICS时,根据最近统计值估算对象占用空间

 

  Expdp scott/tiger TABLES=emp ESTIMATE=STATISTICS

 

  DIRECTORY=dump DUMPFILE=a.dump

 

  6. EXTIMATE_ONLY

 

  指定是否只估算导出作业所占用的磁盘空间,默认值为N

 

  EXTIMATE_ONLY={Y | N}

 

  设置为Y时,导出作用只估算对象所占用的磁盘空间,而不会执行导出作业,为N时,不仅估算对象所占用的磁盘空间,还会执行导出操作。

 

  Expdp scott/tiger ESTIMATE_ONLY=y NOLOGFILE=y

 

  7. EXCLUDE

 

  该选项用于指定执行操作时释放要排除对象类型或相关对象EXCLUDE=object_type[name_clause] [,…。] Object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象。EXCLUDEINCLUDE不能同时使用

 

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

 

  8. FILESIZE

 

  指定导出文件的最大尺寸,默认为0(表示文件尺寸没有限制)

 

  9. FLASHBACK_SCN

 

  指定导出特定SCN时刻的表数据

 

  FLASHBACK_SCN=scn_value

 

  Scn_value用于标识SCN值。FLASHBACK_SCNFLASHBACK_TIME不能同时使用

 

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

 

  FLASHBACK_SCN=358523

 

10. FLASHBACK_TIME

 

  指定导出特定时间点的表数据

 

  FLASHBACK_TIME="TO_TIMESTAMP(time_value)"

 

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

 

  "TO_TIMESTAMP('25-08-2004 143500''DD-MM-YYYY HH24MISS')"

 

  11. FULL

 

  指定数据库模式导出,默认为N

 

  FULL={Y | N}

 

  为Y时,标识执行数据库导出。

 

  12. HELP

 

  指定是否显示EXPDP命令行选项的帮助信息,默认为N当设置为Y时,会显示导出选项的帮助信息。

 

  Expdp help=y

 

  13. INCLUDE

 

  指定导出时要包含的对象类型及相关对象

 

  INCLUDE = object_type[name_clause] [,…]

 

  14. JOB_NAME

 

  指定要导出作用的名称,默认为SYS_XXX

 

  JOB_NAME=jobname_string

 

  15. LOGFILE

 

  指定导出日志文件文件的名称,默认名称为export.log

 

  LOGFILE=[directory_object]file_name

 

  Directory_object用于指定目录对象名称,file_name用于指定导出日志文件名。如果不指定directory_object.导出作用会自动使用DIRECTORY的相应选项值。

 

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

 

  16. NETWORK_LINK

 

  指定数据库链名,如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该选项。

 

  17. NOLOGFILE

 

  该选项用于指定禁止生成导出日志文件,默认值为N.

 

  18. PARALLEL

 

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

 

  19. PARFILE

 

  指定导出参数文件的名称

 

  PARFILE=[directory_path] file_name

 

  20. QUERY

 

  用于指定过滤导出数据的where条件

 

  QUERY=[schema.] [table_name] query_clause

 

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

 

  Expdp scott/tiger directory=dump dumpfiel=a.dmp

 

  Tables=emp query=WHERE deptno=20

 

  21. SCHEMAS

 

  该方案用于指定执行方案模式导出,默认为当前用户方案。

 

  22. STATUS

 

  指定显示导出作用进程的详细状态,默认值为0

 

  23. TABLES

 

  指定表模式导出

 

  TABLES=[schema_name.]table_name[partition_name][,…]

 

  Schema_name用于指定方案名,table_name用于指定导出的表名,partition_name用于指定要导出的分区名。

 

  24. TABLESPACES

 

  指定要导出表空间列表

 

  25. TRANSPORT_FULL_CHECK

 

  该选项用于指定被搬移表空间和未搬移表空间关联关系的检查方式,默认为N.

 

  当设置为Y时,导出作用会检查表空间直接的完整关联关系,如果表空间所在表空间或其索引所在的表空间只有一个表空间被搬移,将显示错误信息。当设置为N时,导出作用只检查单端依赖,如果搬移索引所在表空间,但未搬移表所在表空间,将显示出错信息,如果搬移表所在表空间,未搬移索引所在表空间,则不会显示错误信息。

 

  26. TRANSPORT_TABLESPACES

 

  指定执行表空间模式导出

 

  27. VERSION指定被导出对象的数据库版本,默认值为COMPATIBLE.

 

  VERSION={COMPATIBLE | LATEST | version_string}

 

  为COMPATIBLE时,会根据初始化参数COMPATIBLE生成对象元数据;LATEST时,会根据数据库的实际版本生成对象元数据。version_string用于指定数据库版本字符串。

 

调用EXPDP

 

  使用EXPDP工具时,其转储文件只能被存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录。因此,使用EXPDP工具时,必须首先建立DIRECTORY对象。并且需要为数据库用户授予使用DIRECTORY对象权限。

 

  CREATE DIRECTORY dump_dir AS 'DDUMP';GRANT READWIRTE ON DIRECTORY dump_dir TO scott;

 

  1,导出表

 

  Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp TABLES=deptemp

 

  2,导出方案

 

  Expdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp SCHEMAS=systemscott

 

  3.导出表空间

 

  Expdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp TABLESPACES=user01user02

 

  4,导出数据库

 

  Expdp system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=Y

 

  使用IMPDP

 

  IMPDP命令行选项与EXPDP有很多相同的,不同的有:

 

  1REMAP_DATAFILE

 

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

 

  REMAP_DATAFIEL=source_datafietarget_datafile

 

  2REMAP_SCHEMA

 

  该选项用于将源方案的所有对象装载到目标方案中。

 

  REMAP_SCHEMA=source_schematarget_schema

 

  3REMAP_TABLESPACE

 

  将源表空间的所有对象导入到目标表空间中

 

  REMAP_TABLESPACE=source_tablespacetargettablespace

 

  4.REUSE_DATAFILES

 

  该选项指定建立表空间时是否覆盖已存在的数据文件。默认为N

 

  REUSE_DATAFIELS={Y | N}

 

  5.SKIP_UNUSABLE_INDEXES

 

  指定导入是是否跳过不可使用的索引,默认为N

 

  6SQLFILE

 

  指定将导入要指定的索引DDL操作写入到SQL脚本中

 

  SQLFILE=[directory_object]file_name

 

  Impdp scott/tiger DIRECTORY=dump DUMPFILE=tab.dmp SQLFILE=a.sql

 

  7.STREAMS_CONFIGURATION

 

  指定是否导入流元数据(Stream Matadata),默认值为Y.

 

  8TABLE_EXISTS_ACTION

 

  该选项用于指定当表已经存在时导入作业要执行的操作,默认为SKIP TABBLE_EXISTS_ACTION={SKIP | APPEND | TRUNCATE | FRPLACE }当设置该选项为SKIP时,导入作业会跳过已存在表处理下一个对象;当设置为APPEND时,会追加数据,为TRUNCATE时,导入作业会截断表,然后为其追加新数据;当设置为REPLACE时,导入作业会删除已存在表,重建表病追加数据,注意,TRUNCATE选项不适用与簇表和NETWORK_LINK选项

 

  9.TRANSFORM

 

  该选项用于指定是否修改建立对象的DDL语句

 

  TRANSFORM=transform_namevalue[object_type]

 

  Transform_name用于指定转换名,其中SEGMENT_ATTRIBUTES用于标识段属性(物理属性,存储属性,表空间,日志等信息)STORAGE用于标识段存储属性,VALUE用于指定是否包含段属性或段存储属性,object_type用于指定对象类型。

 

  Impdp scott/tiger directory=dump dumpfile=tab.dmp

 

  Transform=segment_attributesntable

 

  10.TRANSPORT_DATAFILES

 

  该选项用于指定搬移空间时要被导入到目标数据库的数据文件

 

  TRANSPORT_DATAFILE=datafile_name

 

  Datafile_name用于指定被复制到目标数据库的数据文件

 

  Impdp system/manager DIRECTORY=dump DUMPFILE=tts.dmp

 

  TRANSPORT_DATAFILES=/user01/data/tbs1.f

 

  调用IMPDP

 

  1导入表

 

  Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=tab.dmp

 

  TABLES=dept,emp

 

  Impdp system/manage DIRECTORY=dump_dir DUMPFILE=tab.dmp

 

  TABLES=scott.dept,scott.emp REMAP_SCHEMA=SCOTT:SYSTEM

 

  第一种方法表示将DEPTEMP表导入到SCOTT方案中,第二种方法表示将DEPTEMP表导入的SYSTEM方案中。

 

  注意,如果要将表导入到其他方案中,必须指定REMAP SCHEMA选项。

 

  2,导入方案

 

  Impdp scott/tiger DIRECTORY=dump_dir DUMPFILE=schema.dmp

 

  SCHEMAS=scott

 

  Impdp system/manager DIRECTORY=dump_dir DUMPFILE=schema.dmp

 

  SCHEMAS=scott REMAP_SCHEMA=scott:system

 

  3,导入表空间

 

  Impdp system/manager DIRECTORY=dump_dir DUMPFILE=tablespace.dmp

 

  TABLESPACES=user01

 

  4,导入数据库

 

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

 

  EXPDP/IMPDP的停止与重启动:

 

  EXPDPIMPDP的本质在于,通过API调用,把传统的EXP/IMP类交付式模式的操作,转变成数据库内部的job任务,从而实现了任务的可终止与重启动。

 

  c\expdp test/test@acf directory=dpdata dumpfile=full.dmp full=y job_name=expfull在执行过程中,可以拿下Ctrl+C组合键,退出当前交互模式,退出之后,导出操作不会停止,这不同于Oracle以前的EXP.以前的EXP,如果退出交互式模式,就会出错终止导出任务。

 

  在Oracle 10中,由于EXPDP是数据库内部定义的任务,已经与客户端无关。退出交互之后,会进入export的命令行模式,此时支持status等查看命令:

 

  Export> status

 

  如果想停止改任务,可以发出stop_job命令

 

  Export> stop_job

 

  如果有命令行提示

 

  是否确实要停止此作业([Y]/N)

 

  或Are you sure you wish to stop this job ([yes]/no)

 

  回答应是yes或者no

 

  接下来可以通过命令行再次连接到这个任务

 

  c\expdp test/test@acf attach=expfull

 

  通过start_job命令重新启动导出

 

  Export> start_job

 

  在plsql下查看任务名:

 

  SQL>select * from DBA_DATAPUMP_JOBS——查看job

 

  在plsq下查看对应session

 

  SQL>select sid, serial#

 

  2 from v$session s, dba_datapump_sessions d

 

  3 where s.saddr = d.saddr;

 

  下列命令在交互模式下有效。

 

  注:允许使用缩写命令说明(默认)

 

  ------------------------------------------------------------------------------

 

  CONTINUE_CLIENT返回到记录模式。如果处于空闲状态,将重新启动作业。

 

  EXIT_CLIENT退出客户机会话并使作业处于运行状态。

 

  HELP总结交互命令。

 

  KILL_JOB分离和删除作业。

 

  PARALLEL更改当前作业的活动worker的数目。

 

  PARALLEL=. START_JOB启动/恢复当前作业。

 

  START_JOB=SKIP_CURRENT在开始作业之前将跳过作业停止时执行的任意操作。

 

  STATUS在默认值(0)将显示可用时的新状态的情况下,要监视的频率(以秒计)作业状态。

 

  STATUS[=interval] STOP_JOB顺序关闭执行的作业并退出客户机。

 

  STOP_JOB=IMMEDIATE将立即关闭数据泵作业。

 


impdp
2、数据库启动模式

可以启动数据库实例到限制模式(restrict mode),这时只有管理员和具有restricted session权限的用户可以登录数据库。下面演示打开和关闭限制模式的方法:

启动数据库到限制模式

ora_test@oracle[/home/oracle]> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Mar 7 15:26:01 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

idle> startup restrict
ORACLE instance started.

Total System Global Area 209715200 bytes
Fixed Size 1218532 bytes
Variable Size 113248284 bytes
Database Buffers 88080384 bytes
Redo Buffers 7168000 bytes
Database mounted.
Database opened.

数据库已经启动到限制模式,我用scott用户登录数据库
首先检查scott用户,确认其没有restricted session权限

sys@CNHTM> select grantee,granted_role from dba_role_privs where grantee='SCOTT'
2 union
3 select grantee,privilege from dba_sys_privs where grantee='SCOTT'
4 ;

GRANTEE GRANTED_ROLE
------------------------------ ----------------------------------------
SCOTT CONNECT
SCOTT RESOURCE
SCOTT UNLIMITED TABLESPACE

登录数据库失败,因为其没有restricted session权限

idle> conn scott/tiger
ERROR:
ORA-01035: ORACLE only available to users with RESTRICTED SESSION privilege


Warning: You are no longer connected to ORACLE.

为用户scott授予restricted session权限,再次登录数据库,可以登录

idle> grant restricted session to scott;
SP2-0640: Not connected
idle> conn / as sysdba
Connected.
sys@CNHTM> grant restricted session to scott;

Grant succeeded.

sys@CNHTM> conn scott/tiger
Connected.

将数据库修改为正常模式(即退出限制模式)

scott@CNHTM> conn / as sysdba
Connected.
sys@CNHTM> alter system disable restricted session;

System altered.

由正常模式切换到限制模式的方法

sys@CNHTM> alter system enable restricted session;

System altered.

sys@CNHTM>

--end--


3、字符集问题


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20695384/viewspace-689494/,如需转载,请注明出处,否则将追究法律责任。

上一篇: linux静态路由
请登录后发表评论 登录
全部评论

注册时间:2011-02-12

  • 博文量
    17
  • 访问量
    24192