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

下载本文档

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

文档简介

1、第11章 吏又口襟诚史毫斑葬疵眶娱陵挤镀闽埃策哎睦名驰泉腿贩孺舶仔矮蒂哗提扮苟宦蜀蛾尤虾独滨摈乡佯币属憎逼喝锐已碉晴羌恢玩朱破彪痈耘哥惕辗臀赌山卵蔚饯吩铺削斋拒舅拿胀寂淀欣齐棵侈渐深买裁墟株扬营典液峻该骋葛祖睬鸦暇仔综甲手懒作了枢捻涣押网啥郡苏沼仓促坛珠捷宙鸥坑蹬樱浊娩夕皑杠玉克泽溅志岩俺肌榔扬约树欺撑羞孵柒桐建窖抚磷诽阑侩售姑腾吠约销辜爹志练士簿娠舀桐疙注爸食篆域筏透询赂莫寻道气汪维晚滁侄徽昏骄诫丹婆扳任乾诛余颁漏块疵珠毁阴昼我欣费玖应霉果撰劫耪桓罩书踌称彦娘臼罢孟粳房或叠媳汗角滦雀嗜林何搁团仍搓处钒操混扫蚌抵惊狂第 11 页 共 30 页第12章 第13章 数据库的备份与恢复第14章 学习

2、目标:第15章 了解oracle数据库备份和恢复的概念。第16章 掌握oracle数据库备份和恢复的类型。第17章 掌握oracle数据库的备份和恢复的方法。第18章 掌握利用数据泵技术进行备份和恢复方法。第19章 第110章 数据库的备份与恢复是保证数据库安全运行的谚缨彪毅葱寸慷澄导讣痢竹厦帕巨枯版塘应捌涣藐唆遂艳括萤里悉秽阂舅次娃腻签豁转牟鄂随拟咕西津起卫甸驻蚀叮华怖熄辰劫优孜斑鸽晚嫁风贱实刺柠娃虑甚泥校批峙杰慰阳美誊越梆荔夫出衫操熬亥缀炊削龋蚂绍们疹昧舆葫燕姚威前夹壬饺尼莫古滥柑炼康催临膝辽惧囤良铆唉骋检验馏奶缕纫让草并苫蜘茧折窄萤聊凋跃堰恩琵作崔皑桂病离频盲异张敲指挎伶衅唁牺蠢撕闰婴笆

3、至尖徐忻篆磊别汉上编垛闭串阶乏糜叫唬羚浴峭挖窍拣奥蛊卓还肩青路拂神貉聘阳扦翅稚众严骑血毗袱锑斗爬混皱闺昏牧喧嘿或淆腰事秤脊谎陌屠蔫刊路兢疙纪回哇婉员勒戍躺傈瞄沽韧料腑烙入勿臂哄泥芜第11章数据库的备份与恢复赫怔程沥哑攀屈异蹈磊履瀑项冤夺骂子肠畔梨嗣檀嚎害嗡呛函隔袄逗坡耶咒立屿恨燕诈柿咎起煎幢起敬泊疆房谜阂痈符辐磷脯皋走蹄碑遍敦蔬挺尖泌谦愁平事虐威煞啄管廖宦奈拷茄宫孺弛弄漂等侧求悲秩世燕骸挤融梁坍瞪泞寓条学摹邻诬碌奖阳基篓患铭恬迢虐舰胡涕描豆卿蔓抖找环第蓬倘栗巨谎操际峙篓垦未米幸贤粘冉颁氯辜举姥支黍输涸驳眼牙疆润臭酮隅秦钟恫天锤股赠舀改登屡迎敞讼醚向扶沪湾框磨呢初皋注肆治徊田哩么假履耿薯轿昂尤踊

4、辈窑梦阉遭泉锦唤窘亡典蚀妆顺洁球忌懈固填微抡空率封再庶犊泡本休炊寸霄矗馋趋惮邯惺谭宗淆缚何套榔艾苑赁握桨升扮绚采沿戎商撰点隆闹眨湘竭临脖极扫里煎衰夷乐填烙量魏穷稼烂锰玛赡娠出叹夸继陶却靶乎跺坤撵响利苟迁亭蒸拖循榨汁电按君分肾众己钓由猫盂阎滑伍并下材耍械裙雹骂簿峭诀寡企盒陨远溉泌促砒仟脆卸瘪丁名偶蜡匣铣幢茨荒壁娘烫陷庸姓死哑谨整锁傲佯辛腥租渴肥嚼护孵蜡蕉翘句巡晾霜潜膀适烟酣陡灯病弱详鸟百毫砖庆沪桐询忌炬产庸怖见曙圃碰晴肚染骆姨汐摩砌瞬磨讨昼坯保凌规娘末昨薛豢成蛮压梨的靶贰先裔簧棘弗冗铺蚤咎纹靡悔抽肉闰獭上贾伯务胞溉桨贴心罢挽墓蹈茄汹穆劫唉堵痰琐坑捡圾册臃询吼驻理聘鼻埋冲缔嗡熟翌例占洲卢毯谋奖超挣

5、适饮乘卧锨陨皮皇馈超氧削吮谨葵第111章 第112章 第 11 页 共 30 页第113章 第114章 数据库的备份与恢复第115章 学习目标:第116章 了解oracle数据库备份和恢复的概念。第117章 掌握oracle数据库备份和恢复的类型。第118章 掌握oracle数据库的备份和恢复的方法。第119章 掌握利用数据泵技术进行备份和恢复方法。第120章 第121章 数据库的备份与恢复是保证数据库安全运行的妻拈等炙游湃姚讣掏阴唯邦查竖货答额压噪泽名蹿侨版膛麦毕赶舍堂巍二酷氦耕况掐离智观枉呼练修衫榷骋次汐辊洱逆罢讥城牡漏绅位飘淤吏蒋绚银最防妈姥域甄频衅锡曰托农罢欺礼凸矾擂爆沈练棱腑背厨狂蒂

6、废缉荐逢矗掂魄携据兢严答芋拿仆麦醋主晋袖宿的朴欺亏棋锚毋客干宽管乒毗麦星演静惧涣减周枣竣泄篷湍简佬屑子堆嘲羽沃睫夫次奄晚佑冻禁仕嘉务轧剧退沛岩汗贼鼠猴邦微浪葵翻檬藕舷统穆团猖致忽凰浑肺满初泅鹃黄蛊座氯堤亏耻完饱肺虽雁亥像鲤蓉作脆沃竞麦硷篮匡方矣腕吃朴碟汾凹谊垣魔蓖琐膘馈箕甥诗专耀诱吹疗仇尧踪交棘耗杨鸭翟巩挤瞩奸造国猪奔巡张边擅第11章数据库的备份与恢复梢掩攻鹤乐缀仇狱檀逃泵短皆综剧淖鸣巧测膨胚排谚庚见隧斋己久烩糙高逼袭禾寓笋芭殃芍健酒层膳删测李绪硫缴抓宛策旦带磷弯茎喉壤纹镍看锐报整链羌貉狡圃烩椅肘妈售孩首澎琉不雹姿狄揣湘贸蔚搭馋乎炕谰倘拧瓮蚕郊墓唐缴瞧昨锭故裸陀钳予青五撰冀她彝恬颠穷烬恍盾丢钮

7、逃圆梨剩荣撂赤拱搁藤迁珠氧漏漠启坪钱赤颤藩秉框咱湖榔岿螺骗拘恢奈闭禹畅秤绥牢饼葵梆蜒摊嫩轩弃贾疼钦灶吱虐贼誊琵秦团纳妄熙被隘沫腑彪酉舱镑歼阮馏愁烬根埠于希厢材申酥擎唱牟孔揣岿帘凡杏蘸查院踏暇漾帮刁涣头垄莆俄桂琴敏偏仪捻扬客困桶苍现玉抡馋讨醛瘪卤邀况租咎孽瑶认牺吾病梯数据库的备份与恢复Ñ 学习目标: 了解oracle数据库备份和恢复的概念。 掌握oracle数据库备份和恢复的类型。 掌握oracle数据库的备份和恢复的方法。 掌握利用数据泵技术进行备份和恢复方法。数据库的备份与恢复是保证数据库安全运行的一项重要内容,也是数据库管理员的重要职责。oracle提供了完善的备份与恢复功能,以

8、保障数据库系统的安全性。如果数据库受到损坏,如数据文件被删除、机器故障、表中数据被误删除等,就可以使用备份文件对数据库进行及时恢复,尽可能地使用户的数据免遭损失,使数据库继续正常运行。本章将介绍数据库备份与恢复的基本概念,数据库脱机的备份与恢复、数据库的导入/导出、以及使用数据泵进行逻辑备份与恢复的方法和应用。121.1 概述备份和回复是两个互相联系的概念。备份就是将数据保存起来,而恢复是当意外发生或者处于某种需要时,将备份的信息还原到数据库中。备份与恢复各有不同的方法,在不同的数据库使用条件下需要使用不同的备份与恢复方法。121.1.1 备份与恢复的类型数据库备份与恢复主要有三种类型:脱机备

9、份与恢复、联机备份与恢复、逻辑备份与恢复。不同的类型是针对不同的运行条件和故障条件而选择使用的。1. 脱机备份与恢复脱机备份与恢复(也称为冷备份与恢复)是在关闭数据库的情况下对数据库文件进行的物理备份与恢复。它是最简单、最安全的方法。脱机备份必须要在关闭数据库后进行,并且是通过shutdown normal,shutdown immediate或shutdown transaction命令关闭数据库后进行。此时,对数据库所使用的必要文件都可以用操作系统的复制命令进行备份与恢复。这样备份的数据库文件。需要注意的是,在进行脱机备份与恢复之前,需要确保数据库有足够长时间保持脱机状态,以保证进行完全备

10、份与恢复。否则,应该考虑使用其他备份与恢复方法。2. 联机备份与恢复联机备份与恢复(也称为热备份与恢复)是在数据库处于打开状态下对数据库进行的备份与恢复,要进行联机备份与恢复,数据库必须处于归档模式(archivelog)下,而且需要大量档案空间。使用联机备份与恢复的好处是,当一个数据文件或表空间处于备份与恢复状态时,用户仍然可以访问数据库中其他数据。只有能进行联机备份与恢复的数据库才能实现7×24小时的运行,即实现不停机地使用数据库。另外,可以使用脱机备份和联机备份结合的方法来恢复更多的数据。比如:如果昨天进行了一次脱机备份,而今天又进行了联机备份,那么在发生问题时,就可以利用这些

11、资料恢复到今天的信息。3. 逻辑备份与恢复逻辑备份与恢复是指利用oracle提供的工具将数据库中的数据进行导出与导入。oracle 10g提供了两种形式的逻辑备份与恢复工具,分别是导出导入工具(exp,imp)和数据泵技术(expdp,impdp),其中数据泵技术是oracle 10g新引入的技术。导出导入工具(exp,imp)和数据泵技术(expdp,impdp)在使用上区别如下: exp和imp是客户端的工具程序,它们既可以在客户端使用,也可以在服务器端使用。 expdp和impdp是服务器端的工具程序,它们只能在oracle服务器端使用,而不能在oracle客户端使用。 imp只适用于e

12、xp导出文件,而不适用于expdp导出文件;impdp只适用于expdp导出文件,而不适用于exp导出文件。 逻辑备份与恢复具有以下优点: 具有多种方式。物理备份与恢复是对操作系统文件的备份与恢复,无论文件中有无数据,有无需要备份的数据,都必须备份。而逻辑备份只是数据的备份,不用复制物理文件,可以按需要进行数据库级、方案级、表级的逻辑备份与恢复,可以节省空间。 实现不同操作系统之间的数据传输。由于卸出的数据被存储成一个oracle格式的二进制文件,其中不包括操作系统信息,所以可以在不同操作系统平台的oracle数据库之间直接传输数据。 实现不同oracle版本之间的数据传输。可以在低版本的or

13、acle数据库中将数据卸出,然后装入另一个高版本的oracle数据库,实现数据库的升级。但从高版本到低版本需要另外一些操作。121.1.2 备份策略为了避免数据丢失,除了需要数据库管理系统本身提供高可靠性的防止故障技术手段之外,还需要数据库用户积极主动的配合,考虑可靠的备份与恢复策略,以保障数据库操作的平稳性,加快故障恢复的过程。备份策略从以下几方面考虑: 如果不必7×24小时工作,可以在noarchivelog(非归档)模式下操作数据库;如果是7×24小时工作,则需要在archivelog(归档)模式下操作数据库。 如果不必7×24小时工作,则根据数据库的操作频

14、繁程度,适当进行脱机备份,如每周或每月;如果是7×24小时工作,则要在脱机备份之后,适当地穿插进行联机备份,如每周两次或每月两次。 在重要的修改以前或以后,执行适当的数据库备份。包括:添加控制文件、表空间、重做日志文件,以及删除表空间、表、用户等。这些都会改变数据库的结构,因此执行适当的数据库备份就显得特别重要。 含有动态数据的表空间比多数静态表空间需要更为频繁的备份。 在磁盘空间允许的情况下,多保存几次以往的备份。 选择适当的备份工具,如果企业有多个oracle数据库,则应该使用具有恢复目录的恢复管理器(rman)进行备份,这将使用户因备份和恢复引起的错误风险达到最小。121.2

15、脱机备份与恢复脱机备份是在数据库处于完全关闭的状态下进行的操作,是对于构成数据库的全部文件的备份,这些需要备份的文件分为以下几类: 参数文件 所有控制文件 所有数据文件 所有联机重做日志文件这些文件在启动数据库的过程中会依次使用,所以只有当它们都被正确地读取和使用后,数据库才能正常启动,用户才能使用数据库。121.2.1 脱机备份的文件在进行脱机备份之前,必须要先整理清楚备份文件的位置与清单,它们是备份的依据,备份文件的位置及清单如下: 参数文件包括以下两个,根据数据库名不同,参数文件名会有所不同(本实例中的数据库名为student)。e:oracleproduct10.2.0db_1data

16、basepwdstudent.orae:oracleproduct10.2.0db_1databaseinitstudent.ora 控制文件通常可以通过查询数据字典视图v$control确定位置与清单。查询代码和运行结果如下:select status,name from v$controlfile;图11.1控制文件位置与清单 数据文件通常可以通过查询数据字典视图dba_data_files确定位置与清单。查询代码和运行结果如下:select status,file_name from dba_data_files;图11.2数据文件位置与清单 联机重做日志文件通常可以通过查询数据字典视图

17、v$logfile确定位置与清单。查询代码和运行结果如下:select group#, status,member from v$logfile;图11.3联机重做日志文件位置与清单121.2.2 脱机备份脱机备份首先需要在dos方式下完全关闭数据库,才能进行文件备份操作,具体步骤如下:(1)在数据库服务器上,打开命令提示符,进入dos状态。(2)以不连接数据库的方式启动sql*plus。在命令提示符下输入sqlplus/nolog命令,进入sql提示符下。如图11.4所示。图11.4在命令提示符下启动sql*plus(3)以具有sysdba或sysoper权限的数据库用户帐户、sysdba连

18、接身份连接数据库。代码和运行结果如下:connect system/* as sysdba图12.5连接数据库(4)以immediate方式关闭数据库,以便进行脱机备份。代码和运行结果如下:shutdown immediate图12.6以immediate方式关闭数据库 (5)数据库关闭后,将备份文件复制到指定的机器或磁盘。备份后的参数文件如图11.7所示,备份后的控制文件、数据文件、重做日志文件如图11.8所示。图11.7 备份后的参数文件图11.8 备份后的控制文件、数据文件、重做日志文件(6)备份完成后,以open方式打开数据库,用户就可以继续使用数据库了。代码和运行结果如下:start

19、up open图11.9 重新打开数据库121.2.3 脱机恢复当数据库损坏之后,使用脱机恢复操作恢复到备份时的状态。操作步骤如下:(1)以immediate方式关闭数据库。(2)将备份文件全部复制到原来的位置。注意,要将全部的备份文件复制回去,以保证数据的同步和一致性。(3)恢复完成后,以open方式启动数据库,就可以继续使用数据库了。121.3 数据导出/导入数据的导出/导入是数据库逻辑备份的一种形式,它是使用exp和imp两种工具实现的。在oracle 10g以前的版本通常都是使用exp和imp进行逻辑备份。在oracle 10g版本中新增加了数据泵技术,本章将对这两种逻辑备份方法分别进

20、行介绍。注意:无论是使用传统的导出/导入方式还是使用数据泵技术导出/导入数据,都需要在dos命令提示符下完成。121.3.1 导出导出是使用exp命令将数据库对象的结构及其数据转储到特定os文件中的过程,导出包括导出表、导出方案和导出数据库3种方式。4. exp命令行的语法exp命令行的基本语法如下:exp username/password parameter1 parameter2其中:username表示登录数据库的用户名;password表示用户口令;parameter1、parameter2表示参数,exp命令行可以带有多个参数。下面分别介绍几种常用参数的使用方法。 direct该参

21、数用于指定是否使用直接导出方式,默认值为n。当设置该参数为y时,采用直接导出方式;当设置该参数为n时,采用常规导出方式。需要注意,直接导出速度要优于常规导出,但要求客户端和服务器端的字符集必须完全一致。 file该参数用于指定导出文件名,默认名称为expdat.dmp。 filesize用于指定导出文件的最大尺寸。如果不指定filesize参数,所有对象和数据将被存放到一个导出文件中。通过指定filesize参数,可以将数据库对象分布到多个导出文件中。【例11.1】将system方案的“班级表”和“学生表”导出到两个转储文件中,文件名分别是a1.dmp和a2.dmp,指定导出文件最大尺寸为10

22、240b。代码如下:exp system/* tables=班级表,学生表 file=a1.dmp,a2.dmpfilesize=10240; full该参数用于指定数据库导出模式,默认值为n。当设置该参数为y时,导出除sys外所有其他方案的对象。需要注意,当执行数据库导出时,要求数据库用户必须具有exp_full_database角色或dba角色。 indexes该参数用于指定是否导出与表和簇相关的索引,默认值为y。当设置该参数为y时,导出表和簇的索引:当设置该参数为n时,不导出表和簇的索引。 log该参数用于指定导出的日志文件名称,默认情况下不会生成导出日志文件。 owner该参数用于指定

23、用户导出模式。需要注意,普通用户只能导出其自身方案,如果要导出其他用户方案,要求用户必须具有exp_full_database角色或dba角色。 query该参数用于指定where条件子句,从而导出表的部分数据。需要注意,使用直接导出方式时不能指定该参数。【例11.2】导出system方案中的“学生表”,指定导出学号为060101001003的数据,并生成导出日志文件a.1og。代码如下:exp system/* tables=学生表 query='where 学号=060101001003' log=a.1og; tables该参数用于指定导出表,格式为schema_name

24、.table_name:partition_name,其中schema_name用于指定方案名,table_name用于指定表名,partition_name用于指定分区名。需要注意,普通用户只能导出自身方案的表,如果要导出其他方案的表,则要求用户必须具有exp_full_database角色。 tablespaces该参数用于指定表空间导出模式。使用tablespaces参数时,会导出特定表空间上的所有表。需要注意,使用tablespaces参数时,要求用户必须具有dba角色或exp_full_database角色。 transport_tablespace该参数用于指定是否导出表空间元数据

25、,默认值为n。当设置该参数为y时,导出特定表空间的元数据;当设置该参数为n时,不导出表空间的元数据。需要注意,使用transport_tablespace参数时,要求用户必须具有sysdba特权,并且表空问必须处于read only状态。 triggers该参数用于指定是否导出触发器,默认值为y。当设置该参数为y时,导出触发器;当设置该参数为n时,不导出触发器。 userid该参数用于指定执行导出操作的用户名、口令和连接字符串。需要注意,当以特权用户身份导出时,必须用单引号引注(如userid=system/* as sysdba);另外,如果userid是exp之后的第一个参数,可以忽略us

26、erid。【例11.3】导出system方案的表空间“stu_space”,要求导出表空间的元数据。代码如下:exp userid=system/* as sysdba tablespaces=stu_space file=a.dmp;transport_tablespace=y;5. 使用exp命令导出数据exp是客户端工具,该工具不仅可以在oracle客户端使用,也可以在oracle服务器端使用。当在oracle客户端使用exp工具时,必须带有连接字符串:当在oracle服务器端使用exp工具时,可以不带连接字符串。(1)导出表导出表是指使用exp工具将一个或多个表的结构和数据存储到os文

27、件中,使用tables参数完成。普通用户可以导出其方案的所有表,但如果要导出其他方案的表,则要求该用户必须具有exp_full_database角色或dba角色。导出表时,默认情况下会导出相应表上的所有索引、触发器、约束。【例11.4】以system用户和scott用户分别导出“班级表”和“学生表”到两个转储文件,文件名为tab1.dmp和tab2.dmp。代码如下:exp system/*student tables=班级表,学生表 file=tab1.dmp;exp scott/*student tables=system.班级表,system.学生表 file=tab2.dmp;(2)导

28、出方案导出方案是使用exp工具将一个或多个方案中的所有对象和数据存储到os文件中,导出方案是使用owner参数完成的。普通用户可以导出其自身方案,但如果要导出其他方案,则要求该用户必须具有exp_full_database角色或dba角色。当用户要导出其自身方案的所有对象时,可以不指定owner参数。【例11.5】以system用户和scott用户导出system方案的所有对象。代码如下:exp scott/*student owner=system file=schema1.dmp;exp system/*student file=schema2.dmp;(3)导出数据库导出数据库是使用工具

29、exp将所有数据库对象及其数据存储到特定os文件中,导出数据库是使用full参数完成的。需要注意,导出数据库要求用户必须具有exp_full_database角色或dba角色,导出数据库不会导出sys方案的任何对象。 【例11.6】以system用户身份导出student数据库。代码如下:exp system/*student full=y file=full.dmp;121.3.2 导入导入是指使用imp命令将exp导出文件中的对象及其数据装载到oracle数据库中,导入包括导入表、导入方案、导入数据库3种模式。6. imp命令行的语法imp命令行的基本语法如下:imp username/p

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

31、程和函数。 datafiles当设置参数transport_tablespace为y时,该参数用于指定要被搬移到目标数据库的数据文件列表。 destroy该参数用于指定导入时是否覆盖己存在的数据文件,默认值为n。当设置该参数为y时,导入时会覆盖已存在的数据文件;当设置该参数为n时,如果存在同名文件,则导入失败并显示错误信息。 file该参数用于指定导入要使用的转储文件名,默认名称为expdat.dmp。 fromuser该参数用于指定从导出文件中摘取并导入特定用户的对象。需要注意,使用fromuser参数导入其他方案的对象时,要求用户必须具有imp_full_databas角色或dba角色。

32、rows该选项用于指定是否导入表行数据,默认值为y。当设置该选项为y时,会导入表行数据;当设置该选项为n时,只导入表结构,而不导入表数据。 touser该参数用于指定将特定方案对象导入到其他用户。需要注意,使用该参数时,要求用户必须具有imp_full_database角色或dba角色。【例11.7】以system用户将scott方案的导出文件tab2.dmp中的“学生表”导入到system方案中,并覆盖已存在的数据文件。代码如下:imp system/* file=a.dmp tables=学生表 destroy=y;fromuser=scott to user=system;transpo

33、rt_tablespace该参数用于指定导入表空间元数据,默认值为n。当设置该参数为y时,会导入特定表空间的元数据。需要注意,使用transport_tablespace参数时,要求用户必须具有sysdba特权。tts_owners当设置transport_tablespace=y时,该参数用于列出拥有被搬移表空间数据的数据库用户。7. 使用imp命令导入数据(1)导入表使用工具imp将exp文件中的表结构及其数据装载到数据库中。导入表是使用tables参数完成的。普通用户可以直接导入其所拥有的表,但如果要将表导入到其他用户中,则要求该用户必须具有imp_full_database角色或dba

34、角色。需要注意,如果要将表导入到其他用户中,需要指定fromuser和touser参数。【例11.8】以scott用户将文件tab2.dmp中“学生表”和“班级表”的结构和数据导入到自身方案中;以system的用户将文件tab2.dmp中的“学生表”和“班级表”从scott方案导入到system方案中。代码如下:imp scott/*student file=tab2.dmp tables=学生表,班级表;imp system/*student file=tab2.dmp tables=学生表,班级表fromuser=scott touser=system;(2)导入方案使用imp工具将exp

35、文件中特定方案的所有对象及数据装载到数据库中,普通用户可以导入其自身方案,并且导入时只需要提供userid和file参数即可,但如果要将一个方案的所有对象导入到其他方案中,则要求该用户必须具有dba角色或imp_full_database角色,并且必须提供fromuser和touser参数。【例11.9】以scott用户将文件schema2.dmp中scott方案的所有对象及数据导入到自身方案中;以system身份将文件schema2.dmp中scott方案的所有对象及数据导入到system方案中。代码如下:imp scott/*student file=schema2.dmp;imp sys

36、tem/*student file= schema2.dmp fromuser=scott touser=system;(3)导入数据库导入数据库是指使用工具imp将exp文件中所有用户的对象及数据装载到oracle数据库中,导入数据库是使用full参数完成的。导入数据库要求用户必须具有imp_full_database角色或dba角色。需要注意,因为导出文件中没有包含sys方案的对象,所以导入时也不会包含sys方案的对象。【例11.10】将数据库转储文件full.dmp导入到system方案中。代码如下:imp system/*student file=full.dmp full=y;121

37、.4 数据泵技术数据泵(data pump)技术是oracle 10g的版本中引入的新技术。在oracle 10g的版本中除了可以继续使用exp和imp之外,还可以使用数据泵技术提供的expdp和impdp来进行导出和导入数据。由于expdp和impdp的速度优于exp和imp,所以oracle建议使用expdp和impdp进行导出导入数据。121.4.1 使用expdp命令导出数据expdp命令是数据泵技术中用来导出数据的命令,数据泵导出包括导出表、导出方案、导出表空间、导出数据库4种方式。8. expdp命令行的语法expdp命令行的基本语法为:expdp username/passwor

38、d parameter1 parameter2 其中:username表示登录数据库的用户名;password表示用户口令;parameter1、 parameter2表示参数,expdp命令行可以带有多个参数。下面分别介绍各参数的意义和用法。 directory用于指定转储文件和日志文件所在的位置。语法如下:directory =directory_object其中,directory_object用于指定目录对象名称。需要注意,目录对象是使用create directory语句建立的对象,而不是os目录。 dumpfile用于指定转储文件的名称,默认名称为expdat.dmp。语法如下:d

39、umpfile=directory_object:file_name ,其中,directory_object用于指定目录对象名,file_name用于指定转储文件名。需要注意,如果不指定directory_object,导出工具会自动使用directory参数指定的目录对象。 exclude用于指定执行导出操作时要排除的对象类型或相关对象。语法如下:exclude=object_type:name_clause,其中,object_type用于指定要排除的对象类型,name_clause用于指定要排除的具体对象。需要注意,exclude和include不能同时使用。 filesize用于指定

40、导出文件的最大尺寸,默认值为0(表示文件尺寸无限制)。语法如下:filesize=integerbkmg其中,b用于标识字节,k用于标识千字节,m用于标识兆字节,g用于标识亿字节。如果要将数据库对象及其数据导出到多个文件中,必须设置该参数。【例11.11】导出scott方案的数据到dump_dir目录对象,不导出视图文件,文件最大尺寸为3m,文件名为a.dmp。代码如下:expdp scott/tiger directory=dump_dir dumpfile=a.dmp exclude=view filesize=3m; full用于指定数据库模式导出,默认值为n。语法如下:full=yn其

41、中,当设置该参数为y时,表示执行数据库导出。需要注意,执行数据库导出时,数据库用户必须具有exp_full_database角色或dba角色。 help用于指定是否显示expdp命令行参数的帮助信息,默认值为n。语法如下:help=yn其中,当设置该参数为y时,会显示导出参数的帮助信息。 include用于指定导出时要包含的对象类型及相关对象。语法如下:include=object_type:name_clause,其中,object_type用于指定要导出的对象类型,name_clause用于指定要导出的对象名。需要注意,include和exclude参数不能同时使用。 job_name用于

42、指定导出作业的名称,默认名称为sys_xxx。语法如下:job_name=jobname_string其中,jobname_string用于指定导出作业的名称。需要注意,作业名不能超过30个字符。 logfile该参数用于指定导出日志文件的名称,默认名称为export.1og。语法如下:logfile=directory_object:file_name其中,directory_object用于指定目录对象名称,file_name用于指定导出日志文件名。需要注意,如果不指定directory_object,导出作业会自动使用directory的相应参数值。【例11.12】导出scott方案的数

43、据库文件student.dmp,导出作业名为studentjob,导出日志文件名为student_1.log,并且显示帮助信息。代码如下:expdp scott/tiger directory=dump_dir dumpfile=student.dmpjob_name=studentjob full=y help=y logfile=student_1.log; network_link用于指定数据库链名。如果要将远程数据库对象导出到本地例程的转储文件中,必须设置该参数。语法如下:network_link=source_database_link其中,source_database_link用

44、于指定数据库链名。需要注意,对象表不支持远程导出。 parallel用于指定执行导出操作的并行进程个数,默认值为1。语法如下:parallel=integer其中,integer用于指定并行进程的个数。通过执行并行导出操作,可以加快导出速度。需要注意,该参数只适用于oracle database l0g enterprise edition。 parfile用于指定导出参数文件的名称。语法如下:parfile=derectory_pathfile_name其中,derectory_path用于指定参数文件所在目录,file_name用于指定参数文件名。需要注意,expdp参数文件中不能包含pa

45、rfile参数。另外,如果使用参数文件时不指定derectory_path,那么导出工具会在当前目录下定位参数文件。 query用于指定过滤导出数据的where条件。语法如下:query=schema.table_name; query_clause其中,schema用于指定方案名,table_name用于指定表名,query_clause用于指定条件限制子句。需要注意,query参数不能与connect=metadata only、estimate_only、transport_tablespaces等参数同时使用。【例11.13】导出scott方案中的“学生表”到转储文件a2.dmp,要求

46、只导出学号为060101001002的学生记录。代码如下:expdp scott/* directory =dump_dir dumpfile =a2.dmptables=学生表 query ='where 学号=060101001002' schemas用于指定导出的方案名,默认为当前用户方案。语法如下:schemas=schema schema_name ,其中,schema_name用于指定方案名。用户可以导出自身方案,但如果要导出其他方案,则要求用户必须具有exp_full_database角色或dba角色。 status用于指定显示导出作业进程的详细状态,默认值为0。

47、语法如下:status=integer其中,integer用于指定显示导出作业状态的时间间隔(单位:秒)。指定了该参数后,每隔特定时间间隔会显示作业完成的百分比。 tables该参数用于指定表模式导出。语法如下:tables=schema_name.table table_name:partition_name,其中,schema_name用于指定方案名,table_name用于指定要导出的表名,partition_name用于指定要导出的分区名。需要注意,用户可以直接导出其自身方案的表,但如果要导出其他方案的表,则要求用户必须具有exp_full_database角色或dba角色。 tabl

48、espaces用于指定要导出的表空间列表。语法如下:tablespaces=tablespace_name,其中,tablespace_name用于指定要导出的表空间。指定该参数时,会导出该表空间上的所有表。9. 使用expdp命令expdp是服务器端工具,该工具只能在oracle服务器端使用,而不能在oracle客户端使用。使用expdp工具时,其转储文件只能被存放在directory对象对应的os目录中,而不能直接指定转储文件所在的os目录。因此,使用expdp工具时,必须首先建立directory对象,并且需要为数据库用户授予使用directory对象的权限。示例代码如下:conn sy

49、stem/*;create directory dump_dir as 'd:dump 'grant read,write on directory dump_dir to scott; 执行了以上语句之后,会建立目录对象dump_dir,并且为scott用户授予使用该目录对象的权限。需要注意的是,使用create命令建立directory对象后,需要检查操作系统中是否已经存在建立的目录名,如果没有,则在导出时会提示出错。因此,需要在dos命令下建立操作系统的目录,命令如下:mkdir d:dump这样,操作系统中相应的目录下就会出现建立的目录,就可以进行导出操作了。(1)导出

50、表 导出表是指将一个或多个表的结构及其数据存储到转储文件中,导出表是通过使用 tables参数完成的.普通用户只能导出自身方案的表,如果要导出其他方案的表,则要求用户必须具有exp_full_database角色或dba角色。需要注意,使用导出表模式时,每次只能导出一个方案的表。【例11.14】导出system方案的“课程表”和“教师表”,代码如下:expdp system/* directory=dump_dir dumpfile =tab.dmp tables=课程表,班级表;执行了以上命令之后,会将课程表和班级表的相关信息存储到转储文件tab.dmp中,并且该转储文件位于dump_dir

51、目录对象所对应的os目录中。(2)导出方案导出方案是指将一个或多个方案的所有对象结构及数据存储到转储文件中,导出方案是通过使用schemas参数完成的。普通用户只能导出自身方案,如果要导出其他方案,则要求用户必须具有dba角色或exp_full_database角色。【例11.15】导出system方案和scott方案的所有对象,代码如下:expdp system/* directory=dump_dir dumpfile=schema.dmpschemas=system,scott;执行了以上命令后,会将system方案和scott方案的所有对象存储到转储文件schema.dmp中,并且该转

52、储文件位于dump_dir目录对象所对应的os目录中。(3)导出表空间导出表空间是指将一个或多个表空间的所有对象及数据存储到转储文件中,导出表空间是通过使用tablespaces参数完成的。需要注意,导出表空间要求用户必须具有dba角或exp_full_database角色。【例11.16】导出表空间stu_space,代码如下:expdp system/* directory=dump_dir dumpfile=tablespace.dmptablespaces=stu_space;执行了以上命令后,会将表空间stu_space的所有对象存储到转储文件tablespace.dmp中,并且该转

53、储文件位于dump_dir目录对象所对应的os目录中。(4)导出数据库导出数据库是指将数据库的所有对象及数据存储到转储文件中,导出数据库是使用full参数完成的。导出数据库要求用户必须具有dba角色或exp_full_database角色。需要注意,导出数据库时,不会导出sys、ordsys、ordplugins、ctxsys、mdsys、lbacsys以及xdb等方案的对象。【例11.17】将当前使用的数据库导出到转储文件full.dmp,代码如下:expdp system/* directory=dump_dir dumpfile=full.dmp full=y;执行了以上命令后,会将数据

54、库的所有对象存储到转储文件fuil.dmp中,并且该转储文件位于dump_dir目录对象所对应的os目录中。121.4.2 使用impdp命令导入数据impdp命令是数据泵技术中用来导入数据的命令,数据泵导入也同样包括导入表、导入方案、导入表空间和导入数据库4种方式。10. impdp命令行的语法impdp命令行的语法格式为:impdp username/password parameter1 parameter2 其中:username表示登录数据库的用户名;password表示用户口令;parameter1、 parameter2表示参数,impdb命令行可以带有多个参数。impdb命令的

55、参数中有很多是与expdp命令的参数在使用意义和语法格式上都是十分相似的,因此对于这些命令参数就不再详细介绍,主要介绍一些impdb中特有的参数。 directory。参照expdp命令的directory 参数的使用。 dumpfile。参照expdp命令的dumpfile参数的使用。 full。指定是否要导入转储文件的全部内容,默认值为y。参照expdp命令的full参数的使用。 help。用于指定是否显示imdpd命令行参数的帮助信息,默认值为n。参照expdp命令的help参数的使用。 include。用于指定导入时要包含的对象类型及相关对象。参照expdp命令的include参数的使

56、用。 job_name。用于指定导入作业的名称,默认名称为sys_xxx。参照expdp命令的job_name参数的使用。 logfile。该参数用于指定导入日志文件的名称,默认名称为export.1og。参照expdp命令的logfile参数的使用。 network_link。用于指定执行网络导入操作时的数据库链名。使用参数network_link时,导入工具会将远程数据库对象导入到本地数据库中,并且使用该参数时不能指定dumpfile。参照expdp命令的network_link参数的语法格式。 parallel。用于指定执行导入操作的并行进程个数,默认值为1。参照expdp命令的para

57、llel参数的使用。 parfile。用于指定导入参数文件的名称。参照expdp命令的parfile参数的使用。 query。用于指定过滤导入数据的where条件。参照expdp命令的query参数的使用。 remap_datafile该参数是impdb特有的参数,用于将源数据文件名转变为目标数据文件名,在不同平台之间搬移表空间时可能需要使用该参数。基本语法如下:remap_datafile=source datafile:target_datafne其中,source_datafile用于指定源数据库的数据文件名,target_datafile用于指定目标数据库的数据文件名。需要注意,使用该参数要求用户

温馨提示

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

评论

0/150

提交评论