OneCMDB使用Hibernate作为数据访问层,默认是支持Oracle数据库的,只需要更改数据访问参数就可以了。
OneCMDB Core中有关数据访问的配置位于<WebAppRoot>/WEB-INF/classes/datasource.xml中,这里WebAppRoot是Web应用的根目录,默认是tomcat-5.5.17/webapps/ROOT,如果找不到搜索一下吧。
datasource.xml原来内容如下:
<bean id="dataSource"
class="org.onecmdb.core.internal.storage.DataSourceWrapper"
destroy-method="close" >
<property name="driverClassName" value="org.hsqldb.jdbcDriver" />
<property name="url" value="jdbc:hsqldb:hsql://localhost" />
<property name="username" value="sa" />
<property name="password" value="" />
<property name="initialSize" value="0" />
<property name="maxActive" value="8" />
<property name="minIdle" value="0" />
<property name="maxIdle" value="8" />
<property name="connectionProperties">
<props>
<prop key="shutdown">false</prop>
</props>
</property>
</bean>
<!-- Hibernate configuration taking the 'dataSoure' defintion -->
<!-- in account, specifically the dialect to use. -->
<!-- -->
<bean id="hibernateProperties" class="org.onecmdb.core.internal.storage.HibernateProperty">
<property name="properties">
<props>
<prop key="hibernate.dialect">org.onecmdb.core.internal.storage.hibernate.hsql.HypersonicSQL18Dialect</prop>
<prop key="show_sql">true</prop>
<prop key="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
</props>
</property>
</bean>
Oracle 10g和Oracle11g修改为下配置:
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url"
value="jdbc:oracle:thin:@localhost:1521:Demo" />
<property name="username" value="system" />
<property name="password" value="demotest" />
<property name="initialSize" value="0" />
<property name="maxActive" value="8" />
<property name="minIdle" value="0" />
<property name="maxIdle" value="8" />
<property name="connectionProperties">
<props>
<prop key="shutdown">false</prop>
</props>
</property>
</bean>
<bean id="hibernateProperties" class="org.onecmdb.core.internal.storage.HibernateProperty">
<property name="properties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop>
<prop key="show_sql">true</prop>
<prop key="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
<prop key="hibernate.hbm2ddl.auto">create-update</prop>
</props>
</property>
</bean>
Oracle9i使用以下配置:
<bean id="dataSource"
class="org.onecmdb.core.internal.storage.DataSourceWrapper"
destroy-method="close" >
<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:Demo" />
<property name="username" value="system" />
<property name="password" value="demotest" />
<property name="initialSize" value="0" />
<property name="maxActive" value="8" />
<property name="minIdle" value="0" />
<property name="maxIdle" value="8" />
<property name="connectionProperties">
<props>
<prop key="shutdown">false</prop>
</props>
</property>
</bean>
<!-- Hibernate configuration taking the 'dataSoure' defintion -->
<!-- in account, specifically the dialect to use. -->
<!-- -->
<bean id="hibernateProperties" class="org.onecmdb.core.internal.storage.HibernateProperty">
<property name="properties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
<prop key="show_sql">true</prop>
<prop key="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</prop>
<prop key="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</prop>
<prop key="hibernate.hbm2ddl.auto">create-update</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
</props>
</property>
</bean>
其中黑体加粗斜体部分为修改的内容,修改好之后重新启动tomcat,即可重新在数据库中建立数据库结构。再次修改hibernate.hbm2ddl.auto属性为update,重启tomcat即可正常使用oracle数据库。
完成之后使用执行ROOT\WEB-INF\classes目录下create-index.sql中的语句建立索引(根据报错情况修改sql语句)。
或者使用附件中的sql文件完成表结构建立(hibernate.hbm2ddl.auto属性设置为update)。附件:onecmdb4Oracle.sql