作为一个DBA,你肯定有大量的软件、脚本和应用程序来帮助你完成日常的操作,其中一些可能是你自己编写的,另外一些可能是提供了大量的对你帮助非常大的特性的商业解决方案。
然而,也有由社区创建的工具符合要求,幸运的是,围绕数据库(特别是)的开源社区,在过去几年中确实爆发性增长,在OTN上有一个页面专门详细地介绍了他们涉足的所有项目,和许多社区项目,而且,在SourceForge上搜索时返回52页结果,明确提到Oracle的就有超过500个项目。
有太多的需要筛选了,因此我们将用两篇文章给大家呈现一些比较大的项目。
库和语言接口
如果你正从事软件开发,并处于选择语言和开发平台的阶段,首先你需要知道的事情是支持什么类型的数据库接口,幸运的是,有太多的选择。
DBD::Oracle()
如果你正在编写perl脚本做监控程序或使用mod_perl做web开发,没有比dbd::Oracle,用于Oracle的DBI驱动,更合适的了,他提供了所有重要的特性并让你摆脱OCI的复杂性,连接、解析、执行和提取你的核心内容。
mod_perl()
当你在perl上工作时,你会明确想要取得这个Apache模块,比将你的代码作为一个CGI运行更好,mod_perl使perl解析程序进入Apache内存空间,加速执行,缓存代码和提供持久性。
Apache::OWA()
为pl/sql开发者提供的与mod_perl并行成为伟大的Apache模块,难怪Apache进入熔合中间层?这就是一个暗示。
cx_Oracle()
如果你更喜欢用python编程,你在这里也可以找到合适的。
如果你计划用c++开发一个应用程序,这里有许多打包好的库给你提供OCI功能,从下面为你选择一个。
tinyOcci()
ORA++ OCI库 ()
OCIPlus ()
oci-wrappers ()
最近几年Oracle对php越来越重视,甚至在OTN上还专门开辟了一个php开发中心:,因此在php中对Oracle提供了大量的支持。
OCIPHPSess()
这个库帮助你为Oracle建立可缩放的php代码,通过提供给你共享会话功能实现。
跟踪+分析工具
etprof()
10046是Oracle的扩展跟踪程序,对于诊断和跟踪活动会话精确定位问题非常有用,etprof可以用于扫描、描绘和格式化这些输出文件以让可读性更佳。
Orate()
这个库提供了添加日志消息到你的pl/sql代码相容的方法以便于后面进行代码跟踪,与你在c代码中添加printf非常类似,在你代码中合适的位置可以添加“进入X过程”的消息,以便于后面对问题进行调试。
Hotsos Oracle Instrumentation Library()
Hotsos常常用于跟踪数据定位并隔离数据库中的瓶颈,使用它们附带的开创性的方法,安装这个库到目标数据库以定义,测量和利用SQL跟踪数据。
开发工具
GTKO()
有相当多的工具用于开发,但是我只想说一下值得看的工具,这个工具包括执行计划,语法高亮显示,语句跟踪以及方案浏览。它基于GTK,因此在大多数Linux发行版上都能使用,而且它的更新也比较频繁,因此它的开发还是处于活动状态的。
SchemaDiff()
作为一个顾问,我曾经访问过不少网站,并复审了许多应用曾程序,以及基础的数据库方案,经常有用重复的方案进行不同的登陆,没有人能确定最开始创建的是做什么用的,你不得不小心,在一个生产系统上不要轻易中断任何正在运作的服务,这个SchemaDiff工具可以放在适当的位置,它查看两个Oracle数据库方案并告诉你有哪些列、数据类型是不同的,的确是一款便利的工具,因此最近没有进行更新,因此不能很好地支持10g,对于需要购买的人就要小心点,你需要进行复审,并进行适当修改。
围绕数据库(特别是Oracle)的开源社区,在过去几年中确实爆发性增长,本文将涉及到在Oracle管理,安全,基准和监视开源工具的讨论。
管理工具
JoraStat()
这个工具可以帮助你预测数据库需要的改变,如果你在你的数据库中绘制了趋势图,你就可以抢先一步对其做好规划,使用java作为前端,使用过程将其集成到数据库中,在sourceforge上的项目页面还是活动的,因此你可以十分正式地查看其修改和更新内容,它仍然处于beta阶段。
EasyStandby for Oracle()
上个月我在Database Journal上写了一篇关于在Oracle标准版上手工创建一个standby数据库的文章,正常情况下需要Oracle企业版,它包括了DataGuard,它才是完整的Oracle standby解决方案,但是价格因素也需要考虑,企业版每处理器的价格是标准版的10倍,尽管不能从Oracle获得支持,足够的测试,但这个工具被证明对你的织是有用的和有帮助的,检查一下代码,在你的沙盒开发环境中测试几个月,如果它符合你的需求,那么你就走运了。
Jdul/dude()
任何曾经加载过数据到Oracle数据库的人都可能需要卸载数据,或转储到一个流文件,这个工具将一定符合你的需要,使你的工作更简单,尽管Oracle没有提供专门为sql*loader提供一款工具进行数据装入,但它也不是太困难,Tom Kyte在Ask Tom网站上提供了大量的解决方案()。
Oracle Database Dashboard()
这个工具是另外一款监视系统,但它是专门为Oracle准备的,你可以监视查询和会话,检查系统参数等,它相当简单,作为一款开源工具,你可以自定义你的核心内容。
Noguska Oracle到 MySQL数据转换器()
这是一款让你惊奇的工具,人们经常在数据库之间进行数据移动,从MySQL到Oracle或从Oracle到MySQL,这个工具帮助你完成这些转移任务,在MySQL中创建一个对应的表,列和数据类型与Oracle表一致,然后,使用php脚本输入数据库认证息。
Easy Data Extract()
这个工具我将其视为实验性质的范畴,一点背景:Oracle数据文件对于操作系统是规则的,例如,如果你用十六进制编辑器打开它们,就会看到数据位,一些与你表类似的数据分散在文件各处,不过这些文件的格式是有专利的,并被精密地保护,如头格式、块等都是没有公开的,但是对于一个经验丰富的反向工程师来说能弄清楚它的细节,正是因为以上原因,我要告诫在生产环境中使用这个工具的人要小心谨慎,除了Oracle数据文件格式在不同版本直接经常发生变化之外,如果不是小的发布,所有原理都不会支持,积极的一面是用于提取数据,因此你不要写这些数据文件否则会更危险,但是尽管如此你提取的数据仍然在格式上有变化。
LobShooter - ()
在Oracle中,如果你拥有大对象,如库文件、图像或非常大的文本,并且你想将它们在数据库中,你使用LOB或大对象数据类型,BLOB是二进制数据,CLOB是字符数据,它们是有差异的,因此你可以搜索文本,而二进制数据不能很容易地搜索,这个工具填补了这个空白,使得你更容易将数据移入或移出Oracle数据库。
Oracle-Admin - ()
如果你曾经想退出命令行,使用一个基于web的工具来管理你的Oracle数据库,OEM可能你会考虑的,它来自Oracle,支持得很好,而且有你想要的所有特性,但是它很笨重,消耗了大量的系统资源,Oracle-Admin是一款基于社区开发的工具,也提供了web接口,你可以向它添加,编写一些代码并进行提交,或许将来它就变成项目的一部分了。
安全工具
Oracle密码仓库 ()
这个工具允许你将你的密码保存在某个位置而不是在你的备份中和其他管理脚本中,可以防止你在命令行上传递它们,而且保存在一个地方有助于你需要改变它们时可以更容易。
Oracle密码检查器(http://www.red-database-security.com/software/checkpwd.html)
密码破译不是黑客的专利,它们应该成为每个管理员工具库的重要一员,这个工具可以运行在许多平台上。
Oracle审核工具 ()
它是一款基于java的工具,能在和windows客户端上工作,提供了密码猜测器,查询工具,监听器检查等功能。
Pete Finnigan的网站()
想要连接更多关于Oracle安全的信息,我强烈建议你去pete的网站看看,这儿包括更多的工具如密码破译器,文件系统和操作系统扫描器,监听器配置测试器等,同时,这里还提供了常常更新的商业解决方案。
基准测试
Hammerora ()
大多数Oracle数据库工具的名字都很无趣、不令人激动,但是这款工具的名字绝对让你眼前一亮,如果你想在你的数据库上做载入测试,这个工具提供了大量的选项,TPC-C和TPC-H测试,多用户测试,web载入测试等。
Simora ()
Oaktable网络的创立成员之一James Morle给我们带来了一款工具,从跟踪数据为你的数据库应用程序基准测试创建模拟。
监视工具
incanto ()
Apache ANT是一个基于java的建立工具,它替换了如Make以及它的子孙,incanto为访问Oracle工具如sqlplus和导入/导出工具提供ANT任务。
Ad Oracle Manager – ()
AD是与活动目录齐名的另外一个工具,活动目录是微软对LDAP或轻量级目录访问无耻的重命名,这个工具允许你使用活动目录管理用你数据库中的户,表,视图。
小结
希望这次Oracle有关的开源应用程序之旅能让你食欲大开,在sourceforge上有让人难以置信数量的工具和活动的项目来对Oracle提供各种支持,我鼓励每个人都去sourceforge.net上搜索你自己感兴趣的工具,同时也请关注Oracle-L邮件列表,这里有大量的代码片段,以及SQL解决方案,尽管它们还不是一个项目,基于社区和社区驱动的技术的确是开源的精髓。