Schema Crawler性能下降

时间:2014-04-08 04:42:59

标签: java jdbc schemacrawler

我正在使用SchemaCrawler 8.17 for Oracle和MSSQL。代码用Java实现。 我有以下问题:

  1. 为Oracle数据库花费太多时间。
  2. 无法找到架构 对于MSSQL数据库。
  3. 我尝试使用INFORMATION SCHEMA VIEWS来提高性能,但我怀疑SchemaCrawler无法使用INFORMATION SCHEMA VIEWS for Oracle。以下是代码段:

    DataSource dataSource = new DatabaseConnectionOptions("oracle.jdbc.driver.OracleDriver",
                  "jdbc:oracle:thin:@xx.xx.xx.xx:orcl");
    
      Connection connection = dataSource.getConnection("xxx", "xxx");
    
    
      Config config = getSchemaCrawlerConfig(RDBMSType.ORACLE);
     SchemaCrawlerOptions options = new SchemaCrawlerOptions(config);
    //  SchemaCrawlerOptions options = new SchemaCrawlerOptions(config);
    
    
    
      SchemaInfoLevel schemaInfoLevel = new SchemaInfoLevel();  
      schemaInfoLevel.setTag("Custom Info Level");          
      schemaInfoLevel.setRetrieveTables(true);
      schemaInfoLevel.setRetrieveTableColumns(true);
      schemaInfoLevel.setRetrieveForeignKeys(true);
      schemaInfoLevel.setRetrieveColumnDataTypes(true);
    
        options.setSchemaInfoLevel(schemaInfoLevel);
      options.setProcedureInclusionRule(new InclusionRule(InclusionRule.NONE,
                                                        InclusionRule.ALL));
      options.setSchemaInclusionRule(new InclusionRule("XXX",InclusionRule.NONE));
    

    为了创建配置,我使用下面的代码片段:

    Properties prop = new Properties();
              FileInputStream fs = new FileInputStream(new File("D:\\schemacrawler-oracle.config.properties"));
              //InputStream in = ApiExample.class.getResourceAsStream("D:\\schemacrawler-oracle.config.properties");
    
    
          try {
              prop.load(fs);
              fs.close();
          } catch (IOException e) { 
            // TODO Auto-generated catch block
              e.printStackTrace();
          }
    
    
          Config config = new Config(prop);
    

    如何验证SchemaCrawler是否正在使用INFORMATION SCHEMA VIEWS?

1 个答案:

答案 0 :(得分:0)

Neo,

Oracle不支持信息架构视图。话虽这么说,SchemaCrawler确实使用了Oracle系统表。您需要下载并使用Oracle的SchemaCrawler发行版。如果使用正确的SchemaCrawlerOptions集限制扫描的模式,则可以节省大量时间来爬网数据库。这也适用于Microsoft SQL Server - 请使用Microsoft SQL Server的SchemaCrawler分发。如果您有任何具体问题,请直接与我联系。最好使用最新的SchemaCrawler版本10.08.04。

Sualeh Fatehi,SchemaCrawler