分享
 
 
 

轻松取得Oracle结构描述句法

王朝oracle·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

Oracle专家必须频繁地从Oracle里提取出表格或者索引的定义,并将它们移植到不同的系统里。从字典里提取出用于Oracle结构描述对象(例如,表格、索引、存储过程、触发器、顺序等等)的数据定义语言(Data Definition Language,DDL),在你将系统移植到新的平台上,以及当你想要在tablespace里预先创建对象的时候很有用。

一般来说,在Oracle的移植里,结构描述和DDL都是在目标数据库里创建的,然后使用Oracle里带有IGNORE=Y参数的imp工具将数据列导入到新的数据库里。IGNORE=Y这个参数会告诉Oracle要使新的DDL定义,而不是使用导入数据文件里的DDL.

在Oracle9i之前,获取表格和索引的DDL是一个既费时又麻烦的过程。你可以运行带有ROWS=NO参数的导出工具――exp,但是其输出却由于每一行的引用字符串以及不佳的格式而很难重复使用。其他唯一的选择就是编写复杂的字典脚本(dictionary script),但是这些脚本可能无法对诸如IOT和嵌套表格这样的复杂对象使用。

但是在Oracle9i里,你可以使用一个叫做dbms_metadata的新的工具包,它能够轻易地直接显示数据字典里的DDL和存储过程。使用这个强大的工具,你就可以提取出独立的对象或者整个Oracle的结构描述。最好的消息是,它很容易使用。你只用简单地执行dbms_metadata.get_ddl,并指定对象名,Oracle就会提取出马上能够使用的DDL.

要提取出整个表格以及用于EMP表格的索引,就要执行dbms_metadata. get_ddl,从DUAL里进行选择,再提供所有必需的参数,如Listing A所示。

其输出如Listing B所示。唯一却失的东西就是每个陈述式之后的结束分号(;)。为了说明问题,我将演示如何使用INDEX自变量将主要关键字作为表格DDL的一部分提取出来,或者单独提取出来。

要注意,你已经完成了表格和索引的定义,包括存储参数(例如,pctfree、pctused、freelists和freelist groups),以及tablespace存储和缓冲池指令(buffer pool directive)。

对于大范围的迁移,你可以修改dbms_metadata句法来提取出整个结构描述。正如你可以在Listing C里看到的,选择dbms_metadata. get_ddl并指定USER_TABLES和USER_INDEXES就能够轻易实现这一点。这个句法会提取出用于整个结构描述(在本例里,就是scott结构描述)的完整表格和索引定义。

dbms_metadata工具也可以被用来提取保存在Oracle程序包里的源代码、PL/SQL和Java.使用dbms_metadata,存储过程或者函数也能够被轻易地提取出来。

在Listing D的例子里,我提取出了所有同fred结构描述相关联的过程。

dbms_metadata工具对于提取过程码尤其有用,因为原来所有的格式都被保留下来了。Listing E是dbms_metadata为存储过程所做出的输出。

dbms_metadata所存在的问题

同所有Oracle的新工具一样,dbms_metadata也有一些缺点。当你有一些带有外来关键字引用完整性(例如Oracle的references限制)的表格时,按照重新加载到另一个数据库里的正确顺序而使用dbms_metadata来提取表格DDL是非常好的。如果你没有按照外来关键字引用完整性的正确顺序来提取表格,那么就会有一个表格被添加,它会参照另一个还没有被添加表格的表格。进行这项更改将会涉及一个WHERE子句的加入,这个子句会查询dba_constraints和dba_cons_columns,以确定正确的表格顺序。

尽管有这些看得到的缺点,但是dbms_metadata工具在从Oracle里提取DDL和过程代码上不失为一个理想的工具。Oracle未来的发行版会让dbms_metadata更加强大,对此我深信不疑。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有