记一次cognos的启动错误

 今日在技术群看到有个人因为cognos启动错误求助:

具体错误信息如下:

======================================================================================================

Launching a JVM using 'Maximum memory in MB']
Successfully launched a test JVM with the memory setting of '768'. Note that this does not guarantee that the IBM Cognos service will start and run successfully.

To see which JVM options are based on this setting, view ibmcognos_location/bin/bootstrap_<OS>.xml and see your JVM documentation for an explanation of those options.

[Archive Local File System Root]
Since the value is empty, the feature is disabled. There is nothing to test.

[Validate mail server properties.]
[ ERROR ] The mail server cannot be reached.

[Archive Local File System Root]
Since the value is empty, the feature is disabled. There is nothing to test.

[Start Service]
04:35:15, 'LogService', 'StartService', 'Success'.
04:35:18, CAF-WRN-0010 CAF input validation enabled.
04:35:18, CAF-WRN-0021 CAF Third Party XSS checking disabled.
04:35:43, CM-SYS-2057 Creating content store tables (schema version 7.0019).
04:36:04, CM-CFG-5063 A Content Manager configuration error was detected while connecting to the content store. CM-CFG-5023 Content Manager is unable to initialize the content store by using the initialization file "/cognos/configuration/schemas/content/oracle/dbInitScript_oracle.sql". Review the configuration for the content store database in IBM Cognos Configuration to ensure that the settings are correct. Verify that the account used to access the content store is still valid by checking the status of the password and account permissions. Verify that the account that Content Manager uses has sufficient permissions to create, to connect to, and to initialize the file contents in the database. Cause: ORA-00955: name is already used by an existing object Stack trace: java.sql.SQLException: ORA-00955: name is already used by an existing object at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:189) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:242) at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:554) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1478) at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:888) at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2076) at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1986) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2697) at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1100) at com.cognos.cm.dbstore.CMPreparedStatementBase.execute(CMPreparedStatementBase.java:59) at com.cognos.cm.dbstore.StatementProxy.execute(StatementProxy.java:276) at com.cognos.cm.dbstore.CMDbStoreFactory.executeScript(CMDbStoreFactory.java:438) at com.cognos.cm.dbstore.CMDbStoreFactory.executeScript(CMDbStoreFactory.java:290) at com.cognos.cm.dbstore.CMDbStoreFactory.initDatabaseContentDependent(CMDbStoreFactory.java:1449) at com.cognos.cm.dbstore.CMDbStoreFactory.initContentDependent(CMDbStoreFactory.java:2129) at com.cognos.cm.dbstore.CMDbStore.initializeContentDependent(CMDbStore.java:4432) at com.cognos.cm.server.CMServlet.initializeContentStoreForActive(CMServlet.java:2192) at com.cognos.cm.server.CMServlet.init(CMServlet.java:1892) at com.cognos.cm.server.ContentManager.start(ContentManager.java:436) at com.cognos.cm.server.ContentManagerLifecycleHandler.start(ContentManagerLifecycleHandler.java:65) at com.cognos.pogo.services.DefaultHandlerService.start(DefaultHandlerService.java:88) at com.cognos.pogo.services.DispatcherServices.startInitialService(DispatcherServices.java:418) at com.cognos.pogo.services.DispatcherServices.startInititalServices(DispatcherServices.java:404) at com.cognos.pogo.transport.PogoServlet$PogoStartup.run(PogoServlet.java:803) at com.cognos.pogo.util.threads.SafeThread.safeRun(SafeThread.java:70) at com.cognos.pogo.util.threads.SafeThread.run(SafeThread.java:61)
04:36:04, 'ContentManagerService', 'StartService', 'Failure'.

===========================================================================================================

我大概瞟了一下错误信息

有这样一句 ibmcognos_location/bin/bootstrap_<OS>.xml 

以为是之前一次一个网友的错误个案,而那次是由于数据库字符集不是utf-8所致(这里再次要提醒各位cognos用户,cognos内容库必须要utf-8的数据库才行)

但错误信息往下看,发现如下的话:

A Content Manager configuration error was detected while connecting to the content store. CM-CFG-5023 Content Manager is unable to initialize the content store by using the initialization file "/cognos/configuration/schemas/content/oracle/dbInitScript_oracle.sql". Review the configuration for the content store database in IBM Cognos Configuration to ensure that the settings are correct. Verify that the account used to access the content store is still valid by checking the status of the password and account permissions.

懂一点英语的应该也能看到个大概,就是执行dbInitScript_oracle.sql这个初始化的sql有问题

一般来说,应该不会出现这个问题的

根据提问者的描述,他是用oracle的system用户创建内容库的

那问题就来了,难道dbInitScript_oracle.sql里面有写sql是system不能执行的?(哈哈,不是挖掘机技术哪家强)

带着疑问,我在本机用system试验了一般,直接用system用户执行dbInitScript_oracle.sql

接着就弹出这样一个错误

原来根本错误原因是 ORA-04089这个oracle的错误

而这个错误发生的场景为用sys,system创建触发器Trigger就会发生

这个是oracle限制的东西,具体为什么要限制sys等用户不能创建触发器,请自行度娘谷歌

好了,错误已经十分清晰了

那么,要配置cognos内容库,一般都是新建一个普通用户就行了

但有些人创建新用户后图方便,直接grant dba权限

其实cognos内容库用户只需要以下四个权限就足够了

好了,本文完结!~

原文地址:https://www.cnblogs.com/ForeVerWater/p/4055072.html