如何解决“ORA-01089: 正在执行立即关闭 - 不允许进行任何操作”?

wyj1983 2009-09-23 02:11:13
如何解决“ORA-01089: 正在执行立即关闭 - 不允许进行任何操作”?


关于这个问题,我在Google和百度里找过一些文章,但是都是处理如何重新启动数据库的问题,比如:
startup force
然而我的问题是在tomcat重启后不久,在java程序通过JDBC驱动调用oracle时才出现的,没有进程或程序去关闭oracle,但是却出现了下面的错误,以下是程序日志中的片断:
2009-09-03 13:54:46,437 [NotificationMgrThread] ERROR jdbc.ConnectionWrapper _applySessionParams.2980 - SQLException message: ORA-01089: 正在执行立即关闭 - 不允许进行任何操作

java.sql.SQLException: ORA-01089: 正在执行立即关闭 - 不允许进行任何操作

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:330)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:287)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:742)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:211)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:950)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1252)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3290)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3334)
at oracle.sysman.util.jdbc.ConnectionWrapper._applySessionParams(ConnectionWrapper.java:2971)
at oracle.sysman.util.jdbc.ConnectionWrapper.<init>(ConnectionWrapper.java:181)
at oracle.sysman.emSDK.svc.conn.FGAConnection.<init>(FGAConnection.java:115)
at oracle.sysman.emSDK.svc.conn.FGAConnectionCache.getFGAConnection(FGAConnectionCache.java:192)
at oracle.sysman.emSDK.svc.conn.ConnectionService.getSystemConnection(ConnectionService.java:683)
at oracle.sysman.emdrep.notification.NotificationMgr.getConnection(NotificationMgr.java:252)
at oracle.sysman.emdrep.notification.NotificationMgr.resetConnection(NotificationMgr.java:298)
at oracle.sysman.emdrep.notification.NotificationMgr.run(NotificationMgr.java:1190)


出现以上的错误是什么原因呢?怎么来解决这个问题?

大家请帮帮忙,谢谢先!
...全文
3020 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
fingerfox 2009-11-25
  • 打赏
  • 举报
回复
增量备份会关闭数据库?
hailan11 2009-09-24
  • 打赏
  • 举报
回复
关注中------
wyj1983 2009-09-24
  • 打赏
  • 举报
回复
问题找到了,从系统日志中发现时每天下午2点,系统就会出此错误。原来是oracle数据库下午两点会进行增量备份。
问题解决,谢谢大家参与!

结贴!!!
wyj1983 2009-09-23
  • 打赏
  • 举报
回复
因为出现问题的时候,直接登录oracle的过程反应很慢
wyj1983 2009-09-23
  • 打赏
  • 举报
回复
目前正在查是不是oracle的问题
getdate 2009-09-23
  • 打赏
  • 举报
回复
尚未遇见过,关注下。
wyj1983 2009-09-23
  • 打赏
  • 举报
回复
<session-factory>
<property name="connection.username">tyzhuser</property>
<property name="connection.url">
jdbc:oracle:thin:@192.168.1.68:1521:cityLocate
</property>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="myeclipse.connection.profile">
oraclecon68
</property>
<property name="connection.password">123</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>

<property name="hibernate.show_sql">true</property>

<mapping resource="****" /> //该处省略

</session-factory>
jy03029760 2009-09-23
  • 打赏
  • 举报
回复
可能数据库连接池有问题
wyj1983 2009-09-23
  • 打赏
  • 举报
回复
不一定什么时候会出现,但是如果重启下tomcat,一切就又正常了
wyj1983 2009-09-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 imasmallbird 的回复:]
你是不是在程序中用了多个Connction,而他们其实都是同一个,从而导致一个地方已经关闭而另一个地方还在使用,使用时应该就会产生这个问题~~
[/Quote]
我用的hibernate做的,没有你说的这个问题存在吧?
imasmallbird 2009-09-23
  • 打赏
  • 举报
回复
呵呵
如果提示你这个问题的时候你的数据库服务没有关闭还是启用,那感觉就有可能是在系统的数据库连接池上是不是有了问题,还有就是这个问题是什么样的场景下出现?
是指定情况下,还是不一定什么时候?
日月小小 2009-09-23
  • 打赏
  • 举报
回复
进程被死锁。。。。。。。。。。
wyj1983 2009-09-23
  • 打赏
  • 举报
回复
我也是出现了这种问题,然后网上搜的,看到这个人的帖子,还没人具体解决,就把问题复制下来了 ,呵呵
imasmallbird 2009-09-23
  • 打赏
  • 举报
回复
呵呵,你的问题和另一个人的问题的帖子的内容具然一模一样,
http://topic.csdn.net/u/20090904/10/47b748a2-4bc1-4493-898b-a8a8ff448730.html
除了标题不一样,太奇怪了~~
imasmallbird 2009-09-23
  • 打赏
  • 举报
回复
你是不是在程序中用了多个Connction,而他们其实都是同一个,从而导致一个地方已经关闭而另一个地方还在使用,使用时应该就会产生这个问题~~
Oracle 主要配置文件介绍:profile文件,oratab 文件,数据库实例初始化文件 initSID.ora,监听配置文件, sqlnet.ora 文件,tnsnames.ora 文件1.2 Oracle 主要配置文件介绍1.2.1 /etc/profile 文件 系统级的环境变量一般在/etc/profile 文件中定义 在 CAMS 系统 与数据库 相关的环境变量就定义在/etc/profile 文件中 如下所示 export ORACLE_BASE=/u01/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/8.1.7 export PATH=$PATH:$ORACLE_HOME/bin export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib export ORACLE_SID=cams export ORACLE_TERM=vt100 export ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data export NLS_LANG=AMERICAN.ZHS16CGB231280 & 说明 1 配置上述环境变量要注意定义的先后顺序 如 定义 ORACLE_HOME 时 用 到 了 ORACLE_BASE 那 么 ORACLE_HOME 的 定 义 应 该 在 ORACLE_BASE之后 2 在使用中文版 CAMS 时 环境变量 NLS_LANG 的值应该设置为 AMERICAN.ZHS16CGB231280 如上所示 在使用英文版 CAMS时 可 以不设置 NLS_LANG 即去掉 export NLS_LANG=... ... 那一行 也可以 设置 NLS_LANG 的值为 AMERICAN_AMERICA.US7ASCII1.2.2 /etc/oratab 文件 /etc/oratab 文件描述目前系统中创建的数据库实例 以及是否通过 dbstart 和 dbshut 来控制该实例的启动与关闭 如下所示 忽略以#开头的注释部分 : cams:/u01/app/oracle/product/8.1.7:Y 其中 cams 为实例 ID /u01/app/oracle/product/8.1.7为 ORACLE_HOME目 录 Y表示允许使用 dbstart和 dbshut 启动和关闭该实例数据库 如果设置为 N 表示不通过 dbstart 和 dbshut 启动和关闭实例数据库 CAMS 系统要求在 安装完 ORACLE 后要求将该参数修改为 Y 以保证 ORACLE 数据库自启动 和关闭 1.2.3 数据库实例初始化文件 initSID.ora 每个数据库实例都有一个初始化 参数文件 其缺省 存放的路径为 $ORACLE_BASE/admin//pfile 其名称为 init.ora 如 cams 实 例 对 应 的 参 数 文 件 为 initcams.ora 缺 省 存 放 路 径 为 $ORACLE_BASE/admin/cams/pfile 即/u01/app/oracle/admin/cams/pfile

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧