Oracle 11g创建数据库报ORA-01501、ORA-01031,求释database already mounted
关于Oracle中"database already mounted"的解释及你的问题分析
先搞懂:"database already mounted"到底是什么意思?
Oracle数据库启动分三个核心阶段:NOMOUNT(实例启动,但还没和任何数据库挂钩)、MOUNT(实例找到并加载了数据库的控制文件,和目标数据库建立了关联)、OPEN(打开数据文件和重做日志,用户能正常访问)。
当你看到database already mounted这个提示,说白了就是当前的Oracle实例已经完成了"挂载"这一步——它已经连上了某个数据库的控制文件,但数据库还没完全打开(或者之前的操作把它卡在这个阶段了),这时候你没法再创建新的数据库,因为实例已经"占着"一个数据库了。
结合你碰到的错误聊聊
你创建数据库时触发ORA-01501: CREATE DATABASE failed,十有八九就是因为当前实例已经挂载了一个数据库,导致重复创建操作失败。之后你执行shut immediate;又遇到ORA-01031: Insufficient Privileges,这是因为你当前登录的用户没有关闭数据库的权限——这种操作必须用SYSDBA或者SYSOPER权限的账号才行。
给你几个实用的解决步骤
- 第一步,用超级权限账号登录:打开命令行执行
sqlplus / as sysdba,这是Oracle里拥有最高权限的登录方式,能搞定所有启停、挂载相关操作。 - 登录后先查一下当前状态:执行
SQL> select status from v$instance;,确认是不是真的处于MOUNTED状态。 - 如果确实是已挂载,先强制关闭实例:执行
SQL> shut abort;,这个命令虽然有点"暴力",但在没法正常关闭的时候特别管用。关闭完成后,你再重新尝试创建数据库的操作就没问题了。
内容的提问来源于stack exchange,提问作者Arun Singh




