正如在第1和第2部分中提到那样,有几个相对容易的改善性能的步骤你可以采取,这些步骤其中一个涉及到使用自动化工具“指导”你编写SQL语句,有许多生产性能分析或性能调整工具的厂家,在接下来的文章中,我们将对它们中的一个进行考察。
Quest Software
许多DBA和开发者使用一个名叫Toad的工具,它出自Quest Software公司,按照Quest Software网站上说法,Toad用户社区大约有500,000数量的用户,Toad的一个特色就是它有能力优化SQL查询,换句话说,Oralce公司还没有占领调整顾问类型工具的市场。
关于顾问工具你有多种选择,理解它们是做什么的,如果你没有工作在生产或开发环境中你使用它们做什么?可能仅仅是喜欢,即使你处于一个开发环境,但你可能也没有使用到非常大的数据,本文的焦点集中在如何产生大量的数据,我们将介绍Quest Software的另一个产品:DataFactory for Oracle。
DataFactory
DataFactory的用途是为多种数据库平台快速创建有意义的测试数据,包括Oracle、DB2、Sybase以及ODBC兼容的数据库,正常情况下,每服务器零售价为595美元,在Quest Software的网站有一个可免费使用30天的版本可下载。
要获得这个软件(目前是5.5.0版本),你必须用真实的电子邮件地址注册,hotmail和gmail会被拒绝的,一旦你注册成功了,你将收到一封包含密钥的邮件,这个密钥用于解锁应用程序,开始30天的试用。
安装过程是相当简单的,如果你运行了微软的AntiSpyware,你可能会收到一个或多个错误,禁用掉实时保护后重新安装。
创建辅助对象
了解应用程序较好的方法是使用它的辅助对象,一般的过程有:
1、创建一个项目
2、在方案中创建表
3、运行脚本载入数据
不幸的是,在禁用了系统名参考的约束上获取刷新最好的方法是使用内置的辅助对象,使用一个反复的处理方法,可以禁用掉所有约束直到载入脚本运行不出现错误为止,然而,当Quest运行时修复了这个bug时,我可以标识和禁用这个约束。
启动DataFactory后,你可以选择启动自学教材,关于如何载入自学教材对象的指令(也就是所有的帮助)都在HTML文件中。
帮助系统中的指令规定了使用哪些表,但那是不准确的,下一步我会提到要用到哪些表(总共15个,都是以DF_前缀开头的)。
要创建辅助对象,安装下列步骤做:
1、选择工具(Tools)创建辅助对象(Create Tutorial Objects),显示辅助对象创建向导。
2、从选择连接方法的下拉列表中选择合适的数据库类型。
3、点击下一步(Next)。
4、输入连接参数。
5、点击下一步(Next),显示完成页面。
6、点击完成(Finish),DataFactory辅助表就创建好了。
在创建表之前,你应该在数据库中先创建一个单独的方案对象,使用Oracle 10g,我创建了一个quest用户对象/方案(授予它connect和resource权限即可)。
点击Tools Create Tutorial Objects
辅助设置向导显示它自己的版本和oracle的logo
在完成页显示一列表名
DataFactory告诉你创建成功了
在左边框架中显示了项目文件夹
在主菜单上点击运行按钮(Run),立即报出ORA-02291错误,这是违反了完整性约束的错误提示(某些表上还不止一次),因为在一个外键关联的列上载入的数据没有同时往主表插入对应的数据,几乎所有的约束命名都采取SYS_Cxxxxxx命名结构,意味着它们不是明确的名字。
为了解决完整性约束问题,你可以禁用掉约束(只要你知道要修改哪个表),下面的查询和ALTER TABLE命令显示识别并禁用有问题的约束:
SQL> select owner, constraint_name, table_name, column_name 2 from all_cons_columns 3 where constraint_name like ‘%9814%’; OWNER CONSTRAINT_NAME TABLE_NAME COLUMN_NAME —– —————————— ——————– ———— QUEST SYS_C009814 DF_ORDERS CUSTID SQL> alter table df_orders 2 disable constraint sys_c009814; Table altered. |
结果(Results)窗口显示你的脚本完全成功执行了,意味着你可以看看究竟创建了些什么。
不是一次分析一个表,使用内置的DBMS_STATS(它是Oracle推荐的分析工具包),如果你使用的是Oracle 10g,你应该添加一个WHERE dropped=’NO’条件阻止在显示查询结果时显示被删掉的表。
SQL> execute dbms_stats.gather_schema_stats(‘QUEST’); PL/SQL procedure successfully completed. SQL> select table_name, num_rows 2 from user_tables 3 where dropped=’NO’; TABLE_NAME NUM_ROWS ——————– ———- DF_TITLES 100 DF_MOVIE_CUSTOMER 1100 DF_MOVIE_EMPLOYEE 900 DF_DUMMY 1100 DF_AUTHORS_TITLES 1100 DF_MOVIE_RENTAL 700 DF_PRODUCTS 100 DF_MOVIE_TAPE 400 DF_CUSTOMERS 1100 DF_AUTHORS 1100 DF_MOVIE_DISTRICT 1100 DF_ORDERS 101 DF_MOVIE_MOVIE 900 DF_ORDERDETAILS 200 DF_MOVIE_STORE 500 15 rows selected. |
返回项目或列表,在列表中选择一个表,将会显示它的列和列的数据类型,你可能需要在结果(Results)和子段(Children)之间使用固定按钮功能。
使用DF_MOVIE_CUSTOMER作为一个例子,如何查看它的数据?随机字符串选项刚好准确地用于这里。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
翻译
相关推荐
-
甲骨文自治数据库亮相 带来云计算新希望
早前甲骨文还不在云计算公司之列,而现在该公司正在迅速弥补其失去的时间。甲骨文的云计算核心是甲骨文自治数据库(O […]
-
2017年12月数据库流行度排行榜 定格岁末排名瞬间
数据库知识网站DB-engines最近更新的2017年12月份数据库流行度排名情况是否能提供更多的看点呢?TechTarget数据库网站将与您分享12月份的榜单排名情况,让我们拭目以待。
-
2017年11月数据库流行度排行榜 半数以上数据库积分减少
数据库知识网站DB-engines更新了2016年11月份的数据库流行度排行榜。TechTarget数据库网站将与您一同关注11月份的榜单排名情况。
-
控制合约 不再畏惧Oracle
许多公司都与Oracle有无限制授权协议,他们害怕离开这个协议,所以就证明他们在使用Oracle的软件,即使因为需求单独购买部分授权许可也可能总体是省钱的。