broadcast.jar
broadcast.jar 包含了组成项目本身的类:
BroadcastDriver. BroadcastDriver 包含了用于这一应用程序的主要方法。 创建 HSSFWorkbook() 对象,该对象用于容纳所有的工作表。 然后创建 XMLConfigVO 对象,该对象用于从 config.xml 中读取连接和 SQL 查询。 使用该对象中包含的信息,应用程序将迭代每个 OracleConnectionVO 并设置 JDBC 驱动,JDBC 数据库 URL,数据库名称,数据库密码,SQL 查询和工作表的名称(形式为 <server name>-<Oracle SID>)。 填充有数据的工作表将加入工作表。 当所有连接迭代完成后,工作表将写入到文件系统中。
OracleConnectionVO. OracleConnectionVO 中保存了 JDBC 驱动、JDBC 数据库 URL、数据库名称、数据库密码和 SQL 查询的值。
XMLConfigVO. XMLConfigVO 创建 DocumentBuilderFactory 以分析 config.xml 文档。 XPath 查询用于检索包含所需值的 NodeList:
NodeList nodelist = org.apache.xpath.XPathAPI.selectNodeList(doc, xpath);
当找到正确的节点后,您可以调用 getNodeValue() 来取回它的值。POISheetGenerator. 该类的 populateSheet 方法完成大部分的工作。 经过初始设置后,列标题将以粗体显示。数据库连接已经打开,查询将执行。
检索了元数据,我们需要元数据来确定将要迭代的列的数量。 元数据还包含了一些列的名称,这些名称将作为正在处理的工作表中的列名。 接下来将迭代结果集。 本例中的对各种数据的处理都是很初级的。 对于第个返回的对象,程序将试图以数字(特别是 Java 长字符)填充单元格。 如果出现 NumberFormatException 错误(因为该值不能转化为数字),将调用 toString,用于该返回对象。 toString 功能是在 Object 对象中定义的, Object 是 Java 体系的最底层,所以不管返回的是什么对象,都可以保证该方法的有效性。 但是,如果按照返回值对于对象的意义性和相关性来分析,那 toString 返回的实际值将是极其多样的。
潜在应用
下面提代了一些查询示例,可将它们加入 config.xml 文件中,以返回一些 DBA 或应用开发人员想在数据库间进行比较的数据。
V$DATABASE 表包含了数据库的一般信息,当您在比较数据库配置或解决备份和恢复的问题时,可能需要这些信息。 尽管不同版本的数据库的字段数和类型不同,以下的查询都可以顺利执行,并将显示合乎所指的表的结果:
SELECT * FROM v$database
如果一个 DBA 想记录一些数据库的版本信息,那么很可能要用到表 V$VERSION 的数据。 在这种情况下,可能要使用下下查询:
SELECT 'Name: '||name "Database Information" FROM v$database
UNION ALL
SELECT 'DBID: '||dbid FROM v$database
UNION ALL
SELECT * FROM v$version
在备份和恢复操作中,要关注的文件是主要有控制文件、重做日志文件和数据库数据文件本身。 你可以使用以下查询检索这些文件的位置:
SELECT * FROM
(
SELECT ' ' "Tablespace" ,Name "File Name" FROM V$CONTROLFILE
union
SELECT ' ', Member FROM V$LOGFILE
union
SELECT Tablespace_Name, File_Name FROM DBA_DATA_FILES
UNION
SELECT ' ' ,'****AS OF: ' ||to_char(sysdate, 'MM/DD/YYYY HH24:MI:SS')||'****' FROM dual
)
ORDER BY 1
Oracle Recovery Manager (RMAN) 一般用于管理备份和恢复操作。 当要检查备份活动,或相要实现备份活动的标准化时,你可能要用到数据库中存储的 RMAN 相关信息。 与 RMAN 备份相关的请求有:
SELECT * FROM V$BACKUP_SET
或
SELECT * FROM V$RMAN_CONFIGURATION
Oracle Applications DBA 在管理他们的环境时,可能会遇到一系列的问题。 DBA 如果管理的实例很多,那他们可能希望比较已经应用的补丁:
SELECT * FROM APPLSYS.AD_APPLIED_PATCHES ORDER BY PATCH_NAME
这些只是几种可能出现的情况。 任意的查询,只要没有句法错误,而且在数据库有其对应的对象,那么它就是可以执行的,返回的结果也可以显示在电子表格中。 这里提供示例对技术人员来说较有吸引力。 您也可以构想一些业务用途,比如访问特定应用的数据库对象和查询。
结论
Java 社区中提供了大量的资源,利用它们可以快速的创建程序(得益于众多历经验证的 API)。 利用 Oracle 的 JDBC 驱动,您可以使用 Java 编程语言方便的来访问数据库。而利用 Jakarta 编程人员创建的 POI,您可以直接创建带多表格式化和其他特性的 Excel 电子表格。 除了探讨这些技术外,文中所介绍的这个软件还能自动执行一些日常活动,可适当减轻 DBA 的工作负担。
