为啥我用shutdown immediate不能关闭数据库?而用shutdown abort就可以,而一个正确的存储过程数据库也编译不了。是不是数据库哪里配置出错了?

解决方案 »

  1.   

    shutdown immediate 需要回滚事务,所以需要等待一段时间的。
      

  2.   


    shutdown immediate需要终止没有结束的transaction,并且把数据都写入文件,相对与abort是要慢多了,abort就是和断电一样,启动时需要恢复实例。如果是normal要等待会话结束和transactional要等到事物全面rollback或者commit,所以这里有等待时机,不好和immediate比较。
      

  3.   

    在开发机上啊,都没什么人用的,shutdown了20分钟都没动静!
      

  4.   


    不知道楼主用的操作系统,如果是Unix一类的,可以ps -ef | grep oracle
    看看还有哪些Oracle进程,可以用kill杀死一些用户进程,但不要杀死后台进程.
      

  5.   

    shutdown immediate会将连接的用户断开连接,将未提交的事务回滚,将已经改写写到内存但未写到磁盘上的数据和日志写到磁盘上,关闭数据库,停止实例的运行。shutdown abort则直接停止实例的运行,不管“脏数据”是否处理,数据库是否关闭,这样会造成数据丢失和不一致性,严重的会导致数据文件损坏,所以一般不要在工作库中使用shutdown abort(包括startup force)命令,更不要强行关机,以免造成不必要的损失。