Oracle学习札记【0】—shutdown
学院开设了数据库实践课程,授课老师选择Oracle数据库作为课程学习对象。昨天刚装上Oracle10g,今天便跃跃欲试了。于是,一阵小激动下,打开命令行,敲入sqlplus / as sysdba。
呵呵,不就悲剧就发生了。脑子一热,我想试试重启下数据库,准备敲入shutdown immediate,结果一激动,把immediate给漏了,所以系统shutdown的默认参数便成了normal,相当于我敲入了shutdown normal。后来查资料才知道,该命令会等待所有的用户断开再执行,而当时我开了另外一个窗口,并以其他账户登录,所以shutdown执行会挂起。可没经验的我,本能的按下Ctrl+C,强制退出命令。结果嘛,当我再次以sysdba的权限登陆的时候,显示可以连接,但是进行其他操作的时候,却接受到错误提示:ERROR:ORA-01012: not logged on。没有登陆,怎么可能,明明通过口令验证了呀~
于是,试着以普通用户账号登陆下试试,结果scott账户没能登陆数据库,并受到如下错误提示:ERROR:ORA-01090: "正在关闭- 不允许连接"。哎呀,难道是刚才强制退出的结果?于是,切换到sysdba权限的账户下,输入shutdown immediate,结果显示:"正在关闭—不允许连接"。于是调用startup命令,企图开启数据库,可以想象又受到错误提示“cannot start already-running ORACLE - shut it down first”。看来刚才的那个shutdown还在后台执行,上网查了一下解决方法,结果很多人建议重启下系统,这样在下次重启的时候Oracle数据库也会重启,刚才的问题也就解决了。
但是,有多年DBA经验的老师告诉我们,在很多情况下,DBA要在遇到数据库问题的时候,应当采用耗时最短的解决办法来解决问题,否则由此带来的企业以个人的损失将无可估量。所以,对于网友建议的重启系统,不是最优的解决办法。思索了一番,既然刚才shutdown命令未执行完便被我强制退出而造成现在的假死状态,看看有什么命令可以立马强制数据库的关闭。于是试着敲入shutdown abort,然后再输入startup命令启动数据库,这时候再以任何账户登录都没问题了,而且耗时很短。