跳至主要内容

迁移UCM数据库引起的"ORA-00942: table or view does not exist"错误

客户生产环境的数据库不知什么原因突然挂了,无论怎么调整也不能启动监听器服务,用JDBC访问永远是访问不通,折腾了大半天终于忍无可忍,决定重新创建一个数据库实例,然后再恢复数据。

停下的应用服务,数据库,然后把原来的UCM数据库文件导入,启动UCM,发现UCM服务没法正常启动。从Admin Server查看日志,发现报如下错误:
.Unable to create result set for query 'select * from CpdLinks where dCpdGuid='0''. ORA-00942: table or view does not exist
ORA-00942: table or view does not exist

intradoc.common.ServiceException: !csDbUnableToCreateResultSet,select * from CpdLinks where dCpdGuid='0'!$ORA-00942: table or view does not exist

at intradoc.server.IdcServerManager.init(IdcServerManager.java:148)
at IdcServer.init(IdcServer.java:64)
at IdcServer.main(IdcServer.java:37)
Caused by: intradoc.data.DataException: !csDbUnableToCreateResultSet,select * from CpdLinks where dCpdGuid='0'!$ORA-00942: table or view does not exist

at intradoc.jdbc.JdbcWorkspace.createResultSetSQL(JdbcWorkspace.java:826)
at folios.FolioInstallFilter.contentFoliosUpgrade(FolioInstallFilter.java:385)
at folios.FolioInstallFilter.doFilter(FolioInstallFilter.java:62)
at intradoc.shared.PluginFilters.filter(PluginFilters.java:92)
at intradoc.server.IdcExtendedLoader.executeFilter(IdcExtendedLoader.java:285)
at intradoc.server.IdcExtendedLoader.extraBeforeCacheLoadInit(IdcExtendedLoader.java:255)
at intradoc.server.IdcSystemLoader.loadCaches(IdcSystemLoader.java:928)
at intradoc.server.IdcServerManager.init(IdcServerManager.java:79)
... 2 more
Caused by: java.sql.SQLException: ORA-00942: table or view does not exist

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:790)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1037)
at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:830)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1124)
at oracle.jdbc.driver.OracleStatement.doScrollExecuteCommon(OracleStatement.java:4051)
at oracle.jdbc.driver.OracleStatement.doScrollStmtExecuteQuery(OracleStatement.java:4191)
at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1279)
at intradoc.jdbc.JdbcWorkspace.createResultSetSQL(JdbcWorkspace.java:802)
... 9 more

从另外一台机器看UCM系统的数据库,又找不到这个表。奇怪了,只好一个个校对,后来突然发现恢复的UCM系统启用了Folio组件,会不会是这个影响呢?在组件管理把Content Folio功能禁用,重新启动UCM服务,果然顺利启动。

解决方法:

   1. Open a connection to the content server's database schema using SQL Developer, SQL+, etc.
   2. Delete the record in the config table that has a dName value of ContentFolios
    3.Drop all the database tables that start with Cpd if they exist

    CpdArchivedLinks
    CpdBasketLinks
    CpdChangeHistory
    CpdLinks

    4.Reinstall the ContentFolios component on the content server
    5.Restart the content server

评论

此博客中的热门博文

解决墙国Google Home无法联网问题

趁黑五特价入手了个Google Home,经过漫长的等待昨天终于等到。回到家里兴高采烈的安装了Home应用,设置好开始开心的调戏Google,播放音乐什么的都很正常。 第二天上班回到家里,发现Hey Google后,不是提示Sorry something went wrong, try again in a few seconds."就是"There was a glitch. Try again in a few seconds.",很是恼火。没可能哥花50刀就买一个蓝牙音箱回来吧,再说了,连不上网甚至连蓝牙也打不开。 本着一贯的研究精神,开搞。据说Google Home是自带DNS,OpenWRT路由上设置了全局SS,但是Google Home还是会用tcp的模式去访问不存在的DNS Server地址8.8.4.4和8.8.8.8,于是乎加了个防火墙规则,不管你Google Home什么请求,都乖乖给我走SS通道去。 修改OpenWRT的/etc/firewall.user文件,增加以下iptables规则: iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p udp --dport 53 -j DNAT --to 192.168.1.0 iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 53 -j DNAT --to 192.168.1.0 iptables -I PREROUTING -t nat -p udp -d 8.8.4.4 --dport 53 -j REDIRECT --to-ports 1053 iptables -I PREROUTING -t nat -p udp -d 8.8.8.8 --dport 53 -j REDIRECT --to-ports 1053 嘿嘿,来一句"Hey Google. Make me relax“,满屋子都是优美的声音,听着写代码真爽:).

解决华为手机访问Google Play:从服务器检索信息时出错。[DF-DFERH-01]

虽然路由器已经设置了梯子,但是用华为手机访问Google Play时,还是提示: 从服务器检索信息时出错。[DF-DFERH-01]。 虽然在手机上把梯子设置成全局模式,连接Google Play后再断掉梯子连接可以升级应用,但实在是麻烦。 放狗搜了一把,网上包括菊厂官方谈坛所说的什么删除Google账户清数据等等方法都是瞎掰。还好自己用的是LEDE(当然OpenWRT也可以),直接把services.googleapis.cn对应的IP指向到216.58.197.195,问题解决。 sed -i '$a conf-dir=/etc/dnsmasq.d' /etc/dnsmasq.conf mkdir /etc/dnsmasq.d/ cat >>/etc/dnsmasq.d/custom.conf<<EOF address=/services.googleapis.cn/216.58.197.195 EOF

解决OpenWRT安装第三方包Incompatible with the architectures configured错误

 起因 起了把家里路由器更新到新版本OpenWRT的念头很久了,周末终于克服自己的懒病,下载了OpenWRT 19.07.4的安装包,更新Linksys WRT1900ACS路由器的系统。 修改了IP地址,把Wifi打开后,驾轻就熟地修改了相关的配置,增加了第三方源,准备开始安装你懂的SS和ChinaDNS等组件。没想到往常屡试不爽的opkg install命令返回了安装失败提示: Incompatible with the architectures configured 仔细比对了所有的配置,确认没有错误,但是安装新增的第三方包时总是报错。 解决方法 试了N多种方法,还是不行,正准备放弃装回原来ROM时,突然发现运行opkg print-architecture返回的CPU架构型号是 arch all 1 arch noarch 1 arch arm_cortex-a9_vfpv3-d16 10 比原来系统打印出来的架构型号多了一个d16,而第三方源的库里貌似没有arm_cortex-a9_vfpv3-d16这样一个型号的源,尝试修改/etc/opkg.conf文件,把原来CPU型号列表增加不带d16行。 arch all 1 arch noarch 1 arch arm_cortex-a9_vfpv3 8 arch arm_cortex-a9_vfpv3-d16 10 再运行opkg install,包装成功。