今天由于工作需要,需要在自己的机器上建一个数据库开发环境,供小组内的成员学习和调试试用,糟糕的是现场给的DMP文件很大,而且是exp出来的,不是expdp出来的,只能是用imp导入,当我导入到一个很大的表时,就死机了,我本以为表大,可能是需要点时间,刚开始没太在意,就没管他,谁知道一个小时,两个小时过去了,还是那样子,这些可完了,白耽误了那么长的时间。我强行关掉了命令行窗口,然后在登陆的时候就登陆不上去了,提示Connect internal only, until freed。
到现在并不知道怎么回事?我心说重启一下服务可能会好了,于是shutdown immediate ,然后startup ,可是现在数据库起不来了,提示什么日志不不能成功归档,找不到目的地,刚开始我还以为是归档日志损坏了呢?可是找了半天也没有发现损坏的日志。搞了半天原来是归档日志使用的磁盘空间已满。这下才想起来原来前两天自己弄数据库玩的时候把归档给打开了,当IMP一个很大的DMP文件时会生成归档的,这下子可惹出麻烦了。
其实解决这个问题并不复杂,当遇到这种问题时,数据库是不能启动到open状态的,通过:select status from v$instance 很容易查到当前实例的状态。现在要做事情是:
SQL> select status from v$instance; STATUS ------------ OPEN SQL> show parameter db_recovery NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string E:/oracle/product/10.2.0/flash _recovery_area db_recovery_file_dest_size big integer 4G SQL>这是我现在的数据库参数,当出现问题时,用sys登陆只能到数据库的mount状态,看到的status是mount,然后修改第二个参数:
我原来的是2G,因为要导入将近10个G的数据,导致空间满了。我觉得呢?自己的库没必要开归档,浪费地方,但是要学习就两说了,我原来也开着,这次大环境我还是给关了,因为光归档就会占据我很大的空间,而其还得删除一些过时的归档,多麻烦呢!