第11章数据库的备份与恢复_第1页
第11章数据库的备份与恢复_第2页
第11章数据库的备份与恢复_第3页
第11章数据库的备份与恢复_第4页
第11章数据库的备份与恢复_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Ñ 学习目标: 了解Oracle数据库备份和恢复的概念。 掌握Oracle数据库备份和恢复的类型。 掌握Oracle数据库的备份和恢复的方法。 掌握利用数据泵技术进行备份和恢复方法。数据库的备份与恢复是保证数据库安全运行的一项重要内容,也是数据库管理员的重要职责。Oracle提供了完善的备份与恢复功能,以保障数据库系统的安全性。如果数据库受到损坏,如数据文件被删除、机器故障、表中数据被误删除等,就可以使用备份文件对数据库进行及时恢复,尽可能地使用户的数据免遭损失,使数据库继续正常运行。本章将介绍数据库备份与恢复的基本概念,数据库脱机的备份与恢复、数据库的导入/导出、以及使用数据泵进行

2、逻辑备份与恢复的方法和应用。Ñ 概述备份和回复是两个互相联系的概念。备份就是将数据保存起来,而恢复是当意外发生或者处于某种需要时,将备份的信息还原到数据库中。备份与恢复各有不同的方法,在不同的数据库使用条件下需要使用不同的备份与恢复方法。1.Ñ.1 备份与恢复的类型数据库备份与恢复主要有三种类型:脱机备份与恢复、联机备份与恢复、逻辑备份与恢复。不同的类型是针对不同的运行条件和故障条件而选择使用的。1. 脱机备份与恢复脱机备份与恢复(也称为冷备份与恢复)是在关闭数据库的情况下对数据库文件进行的物理备份与恢复。它是最简单、最安全的方法。脱机备份必须要在关闭数据库后进行,并且是通

3、过SHUTDOWN NORMAL,SHUTDOWN IMMEDIATE或SHUTDOWN TRANSACTION命令关闭数据库后进行。此时,对数据库所使用的必要文件都可以用操作系统的复制命令进行备份与恢复。这样备份的数据库文件。需要注意的是,在进行脱机备份与恢复之前,需要确保数据库有足够长时间保持脱机状态,以保证进行完全备份与恢复。否则,应该考虑使用其他备份与恢复方法。2. 联机备份与恢复联机备份与恢复(也称为热备份与恢复)是在数据库处于打开状态下对数据库进行的备份与恢复,要进行联机备份与恢复,数据库必须处于归档模式(ARCHIVELOG)下,而且需要大量档案空间。使用联机备份与恢复的好处是,

4、当一个数据文件或表空间处于备份与恢复状态时,用户仍然可以访问数据库中其他数据。只有能进行联机备份与恢复的数据库才能实现7×24小时的运行,即实现不停机地使用数据库。另外,可以使用脱机备份和联机备份结合的方法来恢复更多的数据。比如:如果昨天进行了一次脱机备份,而今天又进行了联机备份,那么在发生问题时,就可以利用这些资料恢复到今天的信息。3. 逻辑备份与恢复逻辑备份与恢复是指利用Oracle提供的工具将数据库中的数据进行导出与导入。Oracle 10g提供了两种形式的逻辑备份与恢复工具,分别是导出导入工具(EXP,IMP)和数据泵技术(EXPDP,IMPDP),其中数据泵技术是Oracl

5、e 10g新引入的技术。导出导入工具(EXP,IMP)和数据泵技术(EXPDP,IMPDP)在使用上区别如下: EXP和IMP是客户端的工具程序,它们既可以在客户端使用,也可以在服务器端使用。 EXPDP和IMPDP是服务器端的工具程序,它们只能在Oracle服务器端使用,而不能在Oracle客户端使用。 IMP只适用于EXP导出文件,而不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出文件,而不适用于EXP导出文件。 逻辑备份与恢复具有以下优点: 具有多种方式。物理备份与恢复是对操作系统文件的备份与恢复,无论文件中有无数据,有无需要备份的数据,都必须备份。而逻辑备份只是数据的备份,

6、不用复制物理文件,可以按需要进行数据库级、方案级、表级的逻辑备份与恢复,可以节省空间。 实现不同操作系统之间的数据传输。由于卸出的数据被存储成一个Oracle格式的二进制文件,其中不包括操作系统信息,所以可以在不同操作系统平台的Oracle数据库之间直接传输数据。 实现不同Oracle版本之间的数据传输。可以在低版本的Oracle数据库中将数据卸出,然后装入另一个高版本的Oracle数据库,实现数据库的升级。但从高版本到低版本需要另外一些操作。1.Ñ.2 备份策略为了避免数据丢失,除了需要数据库管理系统本身提供高可靠性的防止故障技术手段之外,还需要数据库用户积极主动的配合,考虑可靠的

7、备份与恢复策略,以保障数据库操作的平稳性,加快故障恢复的过程。备份策略从以下几方面考虑: 如果不必7×24小时工作,可以在NOARCHIVELOG(非归档)模式下操作数据库;如果是7×24小时工作,则需要在ARCHIVELOG(归档)模式下操作数据库。 如果不必7×24小时工作,则根据数据库的操作频繁程度,适当进行脱机备份,如每周或每月;如果是7×24小时工作,则要在脱机备份之后,适当地穿插进行联机备份,如每周两次或每月两次。 在重要的修改以前或以后,执行适当的数据库备份。包括:添加控制文件、表空间、重做日志文件,以及删除表空间、表、用户等。这些都会改变

8、数据库的结构,因此执行适当的数据库备份就显得特别重要。 含有动态数据的表空间比多数静态表空间需要更为频繁的备份。 在磁盘空间允许的情况下,多保存几次以往的备份。 选择适当的备份工具,如果企业有多个Oracle数据库,则应该使用具有恢复目录的恢复管理器(RMAN)进行备份,这将使用户因备份和恢复引起的错误风险达到最小。Ñ 脱机备份与恢复脱机备份是在数据库处于完全关闭的状态下进行的操作,是对于构成数据库的全部文件的备份,这些需要备份的文件分为以下几类: 参数文件 所有控制文件 所有数据文件 所有联机重做日志文件这些文件在启动数据库的过程中会依次使用,所以只有当它们都被正确地读取和使用后,

9、数据库才能正常启动,用户才能使用数据库。1.Ñ.1 脱机备份的文件在进行脱机备份之前,必须要先整理清楚备份文件的位置与清单,它们是备份的依据,备份文件的位置及清单如下: 参数文件包括以下两个,根据数据库名不同,参数文件名会有所不同(本实例中的数据库名为Student)。E:oracleproductdb_1DatabaseE:oracleproductdb_1Database 控制文件通常可以通过查询数据字典视图V$CONTROL确定位置与清单。查询代码和运行结果如下:SELECTSTATUS,NAMEFROMV$CONTROLFILE;图11.1控制文件位置与清单 数据文件通常可以

10、通过查询数据字典视图DBA_DATA_FILES确定位置与清单。查询代码和运行结果如下:SELECTSTATUS,FILE_NAMEFROMDBA_DATA_FILES;图11.2数据文件位置与清单 联机重做日志文件通常可以通过查询数据字典视图V$LOGFILE确定位置与清单。查询代码和运行结果如下:SELECTGROUP#, STATUS,MEMBERFROMV$LOGFILE;图11.3联机重做日志文件位置与清单1.Ñ.2 脱机备份脱机备份首先需要在DOS方式下完全关闭数据库,才能进行文件备份操作,具体步骤如下:(1)在数据库服务器上,打开命令提示符,进入DOS状态。(2)以不连

11、接数据库的方式启动SQL*PLUS。在命令提示符下输入SQLPLUS/NOLOG命令,进入SQL提示符下。如图11.4所示。图11.4在命令提示符下启动SQL*PLUS(3)以具有SYSDBA或SYSOPER权限的数据库用户帐户、SYSDBA连接身份连接数据库。代码和运行结果如下:CONNECTSYSTEM/*ASSYSDBA图12.5连接数据库(4)以IMMEDIATE方式关闭数据库,以便进行脱机备份。代码和运行结果如下:SHUTDOWNIMMEDIATE图12.6以IMMEDIATE方式关闭数据库(5)数据库关闭后,将备份文件复制到指定的机器或磁盘。备份后的参数文件如图11.7所示,备份后

12、的控制文件、数据文件、重做日志文件如图11.8所示。图11.7备份后的参数文件图11.8备份后的控制文件、数据文件、重做日志文件(6)备份完成后,以OPEN方式打开数据库,用户就可以继续使用数据库了。代码和运行结果如下:STARTUP OPEN图11.9重新打开数据库1.Ñ.3 脱机恢复当数据库损坏之后,使用脱机恢复操作恢复到备份时的状态。操作步骤如下:(1)以IMMEDIATE方式关闭数据库。(2)将备份文件全部复制到原来的位置。注意,要将全部的备份文件复制回去,以保证数据的同步和一致性。(3)恢复完成后,以OPEN方式启动数据库,就可以继续使用数据库了。Ñ 数据导出/导

13、入数据的导出/导入是数据库逻辑备份的一种形式,它是使用EXP和IMP两种工具实现的。在Oracle 10g以前的版本通常都是使用EXP和IMP进行逻辑备份。在Oracle 10g版本中新增加了数据泵技术,本章将对这两种逻辑备份方法分别进行介绍。注意:无论是使用传统的导出/导入方式还是使用数据泵技术导出/导入数据,都需要在DOS命令提示符下完成。1.Ñ.1 导出导出是使用EXP命令将数据库对象的结构及其数据转储到特定OS文件中的过程,导出包括导出表、导出方案和导出数据库3种方式。4. EXP命令行的语法EXP命令行的基本语法如下:EXPusername/password paramet

14、er1 parameter2其中:username表示登录数据库的用户名;password表示用户口令;parameter1、parameter2表示参数,EXP命令行可以带有多个参数。下面分别介绍几种常用参数的使用方法。 DIRECT该参数用于指定是否使用直接导出方式,默认值为N。当设置该参数为Y时,采用直接导出方式;当设置该参数为N时,采用常规导出方式。需要注意,直接导出速度要优于常规导出,但要求客户端和服务器端的字符集必须完全一致。 FILE该参数用于指定导出文件名,默认名称为。 FILESIZE用于指定导出文件的最大尺寸。如果不指定FILESIZE参数,所有对象和数据将被存放到一个导出

15、文件中。通过指定FILESIZE参数,可以将数据库对象分布到多个导出文件中。【例】将SYSTEM方案的“班级表”和“学生表”导出到两个转储文件中,文件名分别是和,指定导出文件最大尺寸为10240B。代码如下:EXPSYSTEM/*TABLES=班级表,学生表FILE,FILESIZE=10240; FULL该参数用于指定数据库导出模式,默认值为N。当设置该参数为Y时,导出除SYS外所有其他方案的对象。需要注意,当执行数据库导出时,要求数据库用户必须具有EXP_FULL_DATABASE角色或DBA角色。 INDEXES该参数用于指定是否导出与表和簇相关的索引,默认值为Y。当设置该参数为Y时,导

16、出表和簇的索引:当设置该参数为N时,不导出表和簇的索引。 LOG该参数用于指定导出的日志文件名称,默认情况下不会生成导出日志文件。 OWNER该参数用于指定用户导出模式。需要注意,普通用户只能导出其自身方案,如果要导出其他用户方案,要求用户必须具有EXP_FULL_DATABASE角色或DBA角色。 QUERY该参数用于指定WHERE条件子句,从而导出表的部分数据。需要注意,使用直接导出方式时不能指定该参数。【例】导出SYSTEM方案中的“学生表”,指定导出学号为060101001003的数据,并生成导出日志文件。代码如下:EXPSYSTEM/* TABLES=学生表QUERY='WH

17、ERE学号=060101001003'LOG; TABLES该参数用于指定导出表,格式为schema_name.table_name:partition_name,其中schema_name用于指定方案名,table_name用于指定表名,partition_name用于指定分区名。需要注意,普通用户只能导出自身方案的表,如果要导出其他方案的表,则要求用户必须具有EXP_FULL_DATABASE角色。 TABLESPACES该参数用于指定表空间导出模式。使用TABLESPACES参数时,会导出特定表空间上的所有表。需要注意,使用TABLESPACES参数时,要求用户必须具有DBA角色

18、或EXP_FULL_DATABASE角色。 TRANSPORT_TABLESPACE该参数用于指定是否导出表空间元数据,默认值为N。当设置该参数为Y时,导出特定表空间的元数据;当设置该参数为N时,不导出表空间的元数据。需要注意,使用TRANSPORT_TABLESPACE参数时,要求用户必须具有SYSDBA特权,并且表空问必须处于READ ONLY状态。 TRIGGERS该参数用于指定是否导出触发器,默认值为Y。当设置该参数为Y时,导出触发器;当设置该参数为N时,不导出触发器。 USERID该参数用于指定执行导出操作的用户名、口令和连接字符串。需要注意,当以特权用户身份导出时,必须用单引号引注

19、(如USERID=SYSTEM/*ASSYSDBA);另外,如果USERID是EXP之后的第一个参数,可以忽略USERID。【例】导出SYSTEM方案的表空间“Stu_space”,要求导出表空间的元数据。代码如下:EXPUSERID=SYSTEM/*ASSYSDBATABLESPACES=Stu_spaceFILE;TRANSPORT_TABLESPACE=y;5. 使用EXP命令导出数据EXP是客户端工具,该工具不仅可以在Oracle客户端使用,也可以在Oracle服务器端使用。当在Oracle客户端使用EXP工具时,必须带有连接字符串:当在Oracle服务器端使用EXP工具时,可以不带连

20、接字符串。(1)导出表导出表是指使用EXP工具将一个或多个表的结构和数据存储到OS文件中,使用TABLES参数完成。普通用户可以导出其方案的所有表,但如果要导出其他方案的表,则要求该用户必须具有EXP_FULL_DATABASE角色或DBA角色。导出表时,默认情况下会导出相应表上的所有索引、触发器、约束。【例】以SYSTEM用户和SCOTT用户分别导出“班级表”和“学生表”到两个转储文件,文件名为tab1.dmp和tab2.dmp。代码如下:EXPSYSTEM/*StudentTABLES=班级表,学生表FILE;EXPSCOTT/*StudentTABLES=SYSTEM.班级表,SYSTE

21、M.学生表FILE;(2)导出方案导出方案是使用EXP工具将一个或多个方案中的所有对象和数据存储到OS文件中,导出方案是使用OWNER参数完成的。普通用户可以导出其自身方案,但如果要导出其他方案,则要求该用户必须具有EXP_FULL_DATABASE角色或DBA角色。当用户要导出其自身方案的所有对象时,可以不指定OWNER参数。【例】以SYSTEM用户和SCOTT用户导出SYSTEM方案的所有对象。代码如下:EXPSCOTT/*Student owner=SYSTEMFILE=schema1.dmp;EXPSYSTEM/*StudentFILE=schema;(3)导出数据库导出数据库是使用工

22、具EXP将所有数据库对象及其数据存储到特定OS文件中,导出数据库是使用FULL参数完成的。需要注意,导出数据库要求用户必须具有EXP_FULL_DATABASE角色或DBA角色,导出数据库不会导出SYS方案的任何对象。【例】以SYSTEM用户身份导出Student数据库。代码如下:EXPSYSTEM/*StudentFULL=y FILE;1.Ñ.2 导入导入是指使用IMP命令将EXP导出文件中的对象及其数据装载到Oracle数据库中,导入包括导入表、导入方案、导入数据库3种模式。6. IMP命令行的语法IMP命令行的基本语法如下:IMP username/password para

23、meter1 parameter2其中:username表示登录数据库的用户名;password表示用户口令;parameter1、 parameter2表示参数,IMP命令行可以带有多个参数。下面分别介绍几种常用参数的使用方法。 COMMIT该参数用于指定每次数组插入完成之后是否提交数据,默认值为N。当设置该参数为Y时,每次数组插入完成后会提交数据;当设置该参数为N时,装载了表的所有数据后才会提交。 COMPILE该参数用于指定导入包、过程和函数时是否进行编译,默认值为Y。当设置该参数为Y时,会立即编译被导入的包、过程和函数;当设置该参数为N时,不会编译被导入的包、过程和函数。 DATAFI

24、LES当设置参数TRANSPORT_TABLESPACE为Y时,该参数用于指定要被搬移到目标数据库的数据文件列表。 DESTROY该参数用于指定导入时是否覆盖己存在的数据文件,默认值为N。当设置该参数为Y时,导入时会覆盖已存在的数据文件;当设置该参数为N时,如果存在同名文件,则导入失败并显示错误信息。 FILE该参数用于指定导入要使用的转储文件名,默认名称为EXP。 FROMUSER该参数用于指定从导出文件中摘取并导入特定用户的对象。需要注意,使用FROMUSER参数导入其他方案的对象时,要求用户必须具有IMP_FULL_DATABAS角色或DBA角色。 ROWS该选项用于指定是否导入表行数据

25、,默认值为Y。当设置该选项为Y时,会导入表行数据;当设置该选项为N时,只导入表结构,而不导入表数据。 TOUSER该参数用于指定将特定方案对象导入到其他用户。需要注意,使用该参数时,要求用户必须具有IMP_FULL_DATABASE角色或DBA角色。【例】以SYSTEM用户将SCOTT“学生表”导入到SYSTEM方案中,并覆盖已存在的数据文件。代码如下:IMPSYSTEM/*FILE=a.dmp TABLES=学生表 DESTROY=y;FROMUSER=SCOTTTO USER=SYSTEM;TRANSPORT_TABLESPACE该参数用于指定导入表空间元数据,默认值为N。当设置该参数为Y

26、时,会导入特定表空间的元数据。需要注意,使用TRANSPORT_TABLESPACE参数时,要求用户必须具有SYSDBA特权。TTS_OWNERS当设置TRANSPORT_TABLESPACE=Y时,该参数用于列出拥有被搬移表空间数据的数据库用户。7. 使用IMP命令导入数据(1)导入表使用工具IMP将EXP文件中的表结构及其数据装载到数据库中。导入表是使用TABLES参数完成的。普通用户可以直接导入其所拥有的表,但如果要将表导入到其他用户中,则要求该用户必须具有IMP_FULL_DATABASE角色或DBA角色。需要注意,如果要将表导入到其他用户中,需要指定FROMUSER和TOUSER参数

27、。【例11.8】以SCOTT用户将文件中“学生表”和“班级表”的结构和数据导入到自身方案中;以SYSTEM的用户将文件中的“学生表”和“班级表”从SCOTT方案导入到SYSTEM方案中。代码如下:IMPSCOTT/*Student FILE=tab2.dmp TABLES=学生表,班级表;IMPSYSTEM/*Student FILE=tab2.dmp TABLES=学生表,班级表FROMUSER=SCOTTTOUSER=SYSTEM;(2)导入方案使用IMP工具将EXP文件中特定方案的所有对象及数据装载到数据库中,普通用户可以导入其自身方案,并且导入时只需要提供USERID和FILE参数即可

28、,但如果要将一个方案的所有对象导入到其他方案中,则要求该用户必须具有DBA角色或IMP_FULL_DATABASE角色,并且必须提供FROMUSER和TOUSER参数。【例11.9】以SCOTT用户将文件schema中SCOTT方案的所有对象及数据导入到自身方案中;以SYSTEM身份将文件schema中SCOTT方案的所有对象及数据导入到SYSTEM方案中。代码如下:IMPSCOTT/*StudentFILE=schema2.dmp;IMPSYSTEM/*StudentFILE=schema2.dmp FROMUSER=SCOTTTOUSER=SYSTEM;(3)导入数据库导入数据库是指使用工

29、具IMP将EXP文件中所有用户的对象及数据装载到ORACLE数据库中,导入数据库是使用FULL参数完成的。导入数据库要求用户必须具有IMP_FULL_DATABASE角色或DBA角色。需要注意,因为导出文件中没有包含SYS方案的对象,所以导入时也不会包含SYS方案的对象。【例0】将数据库转储文件导入到SYSTEM方案中。代码如下:IMPSYSTEM/*StudentFILE=full.dmp FULL=y;Ñ 数据泵技术数据泵(Data Pump)技术是Oracle 10g的版本中引入的新技术。在Oracle 10g的版本中除了可以继续使用EXP和IMP之外,还可以使用数据泵技术提供

30、的EXPDP和IMPDP来进行导出和导入数据。由于EXPDP和IMPDP的速度优于EXP和IMP,所以ORACLE建议使用EXPDP和IMPDP进行导出导入数据。1.Ñ.1 使用EXPDP命令导出数据EXPDP命令是数据泵技术中用来导出数据的命令,数据泵导出包括导出表、导出方案、导出表空间、导出数据库4种方式。8. EXPDP命令行的语法EXPDP命令行的基本语法为:EXPDPusername/password parameter1 parameter2 其中:username表示登录数据库的用户名;password表示用户口令;parameter1、 parameter2表示参数,

31、EXPDP命令行可以带有多个参数。下面分别介绍各参数的意义和用法。 DIRECTORY用于指定转储文件和日志文件所在的位置。语法如下:DIRECTORY =directory_object其中,directory_object用于指定目录对象名称。需要注意,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是OS目录。 DUMPFILE用于指定转储文件的名称,默认名称为EXPdat.dmp。语法如下:DUMPFILE=directory_object:file_name ,其中,directory_object用于指定目录对象名,file_name用于指定转储文件名。需要注意,

32、如果不指定directory_object,导出工具会自动使用DIRECTORY参数指定的目录对象。 EXCLUDE用于指定执行导出操作时要排除的对象类型或相关对象。语法如下:EXCLUDE=object_type:name_clause,其中,object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象。需要注意,EXCLUDE和INCLUDE不能同时使用。 FILESIZE用于指定导出文件的最大尺寸,默认值为0(表示文件尺寸无限制)。语法如下:FILESIZE=INTEGERBKMG其中,B用于标识字节,K用于标识千字节,M用于标识兆字节,G用于标识亿字节

33、。如果要将数据库对象及其数据导出到多个文件中,必须设置该参数。【例1】导出SCOTT方案的数据到DUMP_DIR目录对象,不导出视图文件,文件最大尺寸为3M,文件名为。代码如下:EXPDPSCOTT/TIGERDIRECTORY=DUMP_DIRDUMPFILEEXCLUDE=VIEWFILESIZE=3M; FULL用于指定数据库模式导出,默认值为N。语法如下:FULL=yn其中,当设置该参数为Y时,表示执行数据库导出。需要注意,执行数据库导出时,数据库用户必须具有EXP_FULL_DATABASE角色或DBA角色。 HELP用于指定是否显示EXPDP命令行参数的帮助信息,默认值为N。语法如

34、下:HELP=yn其中,当设置该参数为Y时,会显示导出参数的帮助信息。 INCLUDE用于指定导出时要包含的对象类型及相关对象。语法如下:INCLUDE=object_type:name_clause,其中,object_type用于指定要导出的对象类型,name_clause用于指定要导出的对象名。需要注意,INCLUDE和EXCLUDE参数不能同时使用。 JOB_NAME用于指定导出作业的名称,默认名称为SYS_XXX。语法如下:JOB_NAME=jobname_string其中,jobname_string用于指定导出作业的名称。需要注意,作业名不能超过30个字符。 LOGFILE该参数

35、用于指定导出日志文件的名称,默认名称为EXPort.1og。语法如下:LOGFILE=DIRECTORY_object:file_name其中,DIRECTORY_object用于指定目录对象名称,file_name用于指定导出日志文件名。需要注意,如果不指定DIRECTORY_object,导出作业会自动使用DIRECTORY的相应参数值。【例2】导出SCOTT方案的数据库文件,导出作业名为studentjob,导出日志文件名为,并且显示帮助信息。代码如下:EXPDPSCOTT/TIGERDIRECTORY=DUMP_DIRDUMPFILEJOB_NAME=studentjob FULL=y

36、 HELP=y LOGFILE; NETWORK_LINK用于指定数据库链名。如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该参数。语法如下:NETWORK_LINK=source_database_link其中,source_database_link用于指定数据库链名。需要注意,对象表不支持远程导出。 PARALLEL用于指定执行导出操作的并行进程个数,默认值为1。语法如下:PARALLEL=INTEGER其中,INTEGER用于指定并行进程的个数。通过执行并行导出操作,可以加快导出速度。需要注意,该参数只适用于Oracle Database l0g Enterprise Ed

37、ition。 PARFILE用于指定导出参数文件的名称。语法如下:PARFILE=derectory_pathfile_name其中,derectory_path用于指定参数文件所在目录,file_name用于指定参数文件名。需要注意,EXPDP参数文件中不能包含PARFILE参数。另外,如果使用参数文件时不指定derectory_path,那么导出工具会在当前目录下定位参数文件。 QUERY用于指定过滤导出数据的WHERE条件。语法如下:QUERY=schema.table_name; query_clause其中,schema用于指定方案名,table_name用于指定表名,query_c

38、lause用于指定条件限制子句。需要注意,QUERY参数不能与CONNECT=METADATA ONLY、ESTIMATE_ONLY、TRANSPORT_TABLESPACES等参数同时使用。【例3】导出SCOTT方案中的“学生表”到转储文件a2.DMP,要求只导出学号为060101001002的学生记录。代码如下:EXPDPSCOTT/* DIRECTORY =DUMP_DIRDUMPFILETABLES=学生表QUERY ='WHERE学号=060101001002' SCHEMAS用于指定导出的方案名,默认为当前用户方案。语法如下:SCHEMAS=schema schem

39、a_name ,其中,schema_name用于指定方案名。用户可以导出自身方案,但如果要导出其他方案,则要求用户必须具有EXP_FULL_DATABASE角色或DBA角色。 STATUS用于指定显示导出作业进程的详细状态,默认值为0。语法如下:STATUS=INTEGER其中,INTEGER用于指定显示导出作业状态的时间间隔(单位:秒)。指定了该参数后,每隔特定时间间隔会显示作业完成的百分比。 TABLES该参数用于指定表模式导出。语法如下:TABLES=schema_name.tabletable_name:partition_name,其中,schema_name用于指定方案名,tabl

40、e_name用于指定要导出的表名,partition_name用于指定要导出的分区名。需要注意,用户可以直接导出其自身方案的表,但如果要导出其他方案的表,则要求用户必须具有EXP_FULL_DATABASE角色或DBA角色。 TABLESPACES用于指定要导出的表空间列表。语法如下:TABLESPACES=tablespace_name,其中,tablespace_name用于指定要导出的表空间。指定该参数时,会导出该表空间上的所有表。9. 使用EXPDP命令EXPDP是服务器端工具,该工具只能在Oracle服务器端使用,而不能在Oracle客户端使用。使用EXPDP工具时,其转储文件只能被

41、存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录。因此,使用EXPDP工具时,必须首先建立DIRECTORY对象,并且需要为数据库用户授予使用DIRECTORY对象的权限。示例代码如下:CONNSYSTEM/*;CREATEDIRECTORYDUMP_DIRAS'd:dump'GRANTREAD,WRITEONDIRECTORYDUMP_DIRTOSCOTT; 执行了以上语句之后,会建立目录对象DUMP_DIR,并且为SCOTT用户授予使用该目录对象的权限。需要注意的是,使用CREATE命令建立DIRECTORY对象后,需要检查操作系统中是否已

42、经存在建立的目录名,如果没有,则在导出时会提示出错。因此,需要在DOS命令下建立操作系统的目录,命令如下:MKDIR d:dump这样,操作系统中相应的目录下就会出现建立的目录,就可以进行导出操作了。(1)导出表 导出表是指将一个或多个表的结构及其数据存储到转储文件中,导出表是通过使用 TABLES参数完成的.普通用户只能导出自身方案的表,如果要导出其他方案的表,则要求用户必须具有EXP_FULL_DATABASE角色或DBA角色。需要注意,使用导出表模式时,每次只能导出一个方案的表。【例4】导出SYSTEM方案的“课程表”和“教师表”,代码如下:EXPDPSYSTEM/*DIRECTORY=

43、DUMP_DIRDUMPFILE =tab.dmp TABLES=课程表,班级表;执行了以上命令之后,会将课程表和班级表的相关信息存储到转储文件中,并且该转储文件位于DUMP_DIR目录对象所对应的OS目录中。(2)导出方案导出方案是指将一个或多个方案的所有对象结构及数据存储到转储文件中,导出方案是通过使用SCHEMAS参数完成的。普通用户只能导出自身方案,如果要导出其他方案,则要求用户必须具有DBA角色或EXP_FULL_DATABASE角色。【例5】导出SYSTEM方案和SCOTT方案的所有对象,代码如下:EXPDPSYSTEM/*DIRECTORY=DUMP_DIRDUMPFILE=SC

44、HEMAS=SYSTEM,SCOTT;执行了以上命令后,会将SYSTEM方案和SCOTT方案的所有对象存储到转储文件schema.DMP中,并且该转储文件位于DUMP_DIR目录对象所对应的OS目录中。(3)导出表空间导出表空间是指将一个或多个表空间的所有对象及数据存储到转储文件中,导出表空间是通过使用TABLESPACES参数完成的。需要注意,导出表空间要求用户必须具有DBA角或EXP_FULL_DATABASE角色。【例11.16】导出表空间Stu_space,代码如下:EXPDPSYSTEM/*DIRECTORY=DUMP_DIRDUMPFILE=tablespace.dmpTABLES

45、PACES=Stu_space;执行了以上命令后,会将表空间Stu_space的所有对象存储到转储文件tablespace.dmp中,并且该转储文件位于DUMP_DIR目录对象所对应的OS目录中。(4)导出数据库导出数据库是指将数据库的所有对象及数据存储到转储文件中,导出数据库是使用FULL参数完成的。导出数据库要求用户必须具有DBA角色或EXP_FULL_DATABASE角色。需要注意,导出数据库时,不会导出SYS、ORDSYS、ORDPLUGINS、CTXSYS、MDSYS、LBACSYS以及XDB等方案的对象。【例7】将当前使用的数据库导出到转储文件,代码如下:EXPDPSYSTEM/*

46、DIRECTORY=DUMP_DIRDUMPFILE=full.dmp FULL=y;执行了以上命令后,会将数据库的所有对象存储到转储文件中,并且该转储文件位于DUMP_DIR目录对象所对应的OS目录中。1.Ñ.2 使用IMPDP命令导入数据IMPDP命令是数据泵技术中用来导入数据的命令,数据泵导入也同样包括导入表、导入方案、导入表空间和导入数据库4种方式。10. IMPDP命令行的语法IMPDP命令行的语法格式为:IMPDPusername/password parameter1 parameter2 其中:username表示登录数据库的用户名;password表示用户口令;pa

47、rameter1、 parameter2表示参数,IMPDB命令行可以带有多个参数。IMPDB命令的参数中有很多是与EXPDP命令的参数在使用意义和语法格式上都是十分相似的,因此对于这些命令参数就不再详细介绍,主要介绍一些IMPDB中特有的参数。 DIRECTORY。参照EXPDP命令的DIRECTORY参数的使用。 DUMPFILE。参照EXPDP命令的DUMPFILE参数的使用。 FULL。指定是否要导入转储文件的全部内容,默认值为Y。参照EXPDP命令的FULL参数的使用。 HELP。用于指定是否显示IMDPD命令行参数的帮助信息,默认值为N。参照EXPDP命令的HELP参数的使用。 I

48、NCLUDE。用于指定导入时要包含的对象类型及相关对象。参照EXPDP命令的INCLUDE参数的使用。 JOB_NAME。用于指定导入作业的名称,默认名称为SYS_XXX。参照EXPDP命令的JOB_NAME参数的使用。 LOGFILE。该参数用于指定导入日志文件的名称,默认名称为EXP。参照EXPDP命令的LOGFILE参数的使用。 NETWORK_LINK。用于指定执行网络导入操作时的数据库链名。使用参数NETWORK_LINK时,导入工具会将远程数据库对象导入到本地数据库中,并且使用该参数时不能指定DUMPFILE。参照EXPDP命令的NETWORK_LINK参数的语法格式。 PARAL

49、LEL。用于指定执行导入操作的并行进程个数,默认值为1。参照EXPDP命令的PARALLEL参数的使用。 PARFILE。用于指定导入参数文件的名称。参照EXPDP命令的PARFILE参数的使用。 QUERY。用于指定过滤导入数据的WHERE条件。参照EXPDP命令的QUERY参数的使用。 REMAP_DATAFILE该参数是IMPDB特有的参数,用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要使用该参数。基本语法如下:REMAP_DATAFILE=source datafile:target_datafne其中,source_datafile用于指定源数据库的数据文

50、件名,target_datafile用于指定目标数据库的数据文件名。需要注意,使用该参数要求用户必须具有IMP_FULL_DATABASE角色或DBA角色。 REMAP_SCHEMA该参数是IMPDB特有的参数,用于将源方案的所有对象装载到目标方案中,语法如下:REMAP_SCHEMA=source_schema:target_schema其中,source_schema用于指定源方案名,target_schema用于指定目标方案名。需要注意,使用该参数要求用户必须具有IMP_FULL_DATABASE角色或DBA角色。 REMAP_TABLESPACE该参数是IMPDB特有的参数,用于将源表

51、空间的所有对象导入到目标表空间中。语法如下:REMAP_TABLESPACE=source_tablespace:target_tablespace其中,source_tablespace用于指定源表空间的名称,target_tablespace用于指定目标表空间的名称。需要注意,使用该参数要求用户必须具有IMP_FULL_DATABASE角色或DBA角色。 REUSE_DATAFILES该参数是IMPDB特有的参数,用于指定建立表空间时是否覆盖已存在的数据文件,默认值为N。语法如下:REUSE_DATAFILES=yn当设置该参数为Y时,执行CREATE TABLESPACE命令时会覆盖已存

52、在的数据文件;当设置该参数为N时,如果文件已经存在,则执行CREATE TABLESPACE命令时会显示错误信息。 TABLE EXISTS_ACTION该参数是IMPDB特有的参数,用于指定当表已经存在时导入作业要执行的操作,默认值为SKIP。语法如下:TABLE_EXISTS_ACTION=skipappendtruncatereplace当设置该参数为skip时,导入作业会跳过已存在表处理下一个对象:当设置该参数为appEND时,导入作业会为表追加数据;当设置该参数为truncate时,导入作业会截断表,然后为其追加新数据;当设置该参数为replace时,导入作业会删除已存在表,重新建表

53、并追加数据。需要注意,truncate参数不适用于簇表和NETWORK_LINK参数。 TRANSPORT_DATAFILES该参数是IMPDB特有的参数,用于指定搬移表空间时要被导入到目标数据库的数据文件,语法如下:TRANSPORT_DATAFILES=datafile_name其中,datafile_name用于指定被复制到目标数据库的数据文件。11. 使用IMPDB命令与EXPDP一样,IMDPD也是服务器端的工具,只能在Oracle服务器端使用,不能在客户端使用。同样,使用IMPDB工具时,其转储文件被存放在DIRECTORY对象所对应的OS目录中,而不能直接指定转储文件所在的OS目

54、录。(1)导入表导入表是指将存放在转储文件中的一个或多个表的结构及数据装载到数据库中,导入表是使用TABLES参数完成的,普通用户可以将表导入其自身方案,但如果以其他用户身份导入表,则要求该用户必须具有IMP_FULL_DATABASE角色或DBA角色。导入表时,既可以将表导入到源方案中,也可以将表导入到其他方案中。需要注意,如果要将表导入到其他方案,必须指定REMAP_SCHEMA参数。【例11.18】将“课程表”和“教师表”分别导入到其自身方案SYSTEM和方案SCOTT中,代码如下。IMPDBSYSTEM/*DIRECTORY=DUMP_DIRDUMPFILETABLES=课程表,教师表

55、;IMPDBSCOTT/*DIRECTORY=DUMP_DIRDUMPFILETABLES=SYSTEM.课程表,SYSTEM.教师表REMAP_SCHEMA=SYSTEM:SCOTT;(2)导入方案导入方案是将存放在转储文件中的一个或多个方案的所有对象装载到数据库中,导入方案是使用SCHEMAS参数完成的。普通用户可以将对象导入其自身方案,但如果以其他用户身份导入用户方案,则要求该用户必须具有IMP_FULL_DATABASE角色或DBA角色。导入方案时,既可以将方案所有对象导入到源方案中,也可以将方案所有对象导入到其他方案中。注意,如果要将方案对象导入到其他方案中,必须指定REMAP_SC

56、HEMA选项。【例11.19】将SYSTEM方案的所有对象分别导入到其自身方案SYSTEM和方案SCOTT。代码如下:IMPDBSYSTEM/*DIRECTORY=DUMP_DIRDUMPFILE=schema.dmp SCHEMAS=SYSTEM;IMPDBSCOTT/*DIRECTORY=DUMP_DIRDUMPFILE=schema.dmpSCHEMAS=SYSTEM REMAP_SCHEMA=SYSTEM:SCOTT;(3)导入表空间导入表空间是指将存放在转储文件中的一个或多个表空间的所有对象装载到数据库中,导入表空间是使用TABLESPACES参数完成的。【例11.20】将Stu_S

57、pace表空间的所有对象导入到数据库。代码如下:IMPDBSYSTEM/*DIRECTORY=DUMP_DIRDUMPFILE=tablespace.dmpTABLESPACES=Stu_space;(4)导入数据库导入数据库是指将存放在转储文件中的所有数据库对象及其相关数据装载到数据库中,导入数据库是使用FULL参数完成的。需要注意,如果导出转储文件时要求用户必须具有EXP_FULL_DATABASE角色或DBA角色,则导入数据库时要求用户必须具有IMP_FULL_DATABASE角色或DBA角色。【例1】将例11.18中使用EXPDP导出的数据库转储文件导入,代码如下:IMPDBSYSTEM/*DIRECTORY=DUMP_DIRDUMPFILE=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论