我想获取我所有表的所有表定义。而且我想要快速完成(它是我正在运行的脚本的一部分)。
我正在使用Oracle 11g,并且我有700个表。在普通的JDBC代码中,它需要4分钟并执行以下操作:
我正在使用Oracle 11g,并且我有700个表。在普通的JDBC代码中,它需要4分钟并执行以下操作:
s = con.statement("select DBMS_METADATA.GET_DDL(object_type,object_name) from user_objects where object_type = 'TABLE');
s.execute();
rs = s.getResultSet();
while(rs.next()){
rs.getString(1);
}
所以我想优化这段代码,并达到大约20秒的速度。
我已经通过创建14个线程,每个线程打开一个连接到数据库并读取部分信息,使用rownum上的mod来达到了40-50秒的时间。
但这还不够。
我正在考虑以下方向:
http://docs.oracle.com/cd/B10501_01/java.920/a96654/connpoca.htm#1063660 - 连接缓存。是否可以通过使用connectionCaching来替换我的14个连接来加快速度?
是否可能将此函数访问的表保留在KEEP缓存区域中?
是否有任何方法索引这里的一些信息?
任何其他建议都将不胜感激。
谢谢