如何解决此“ORA-01109:数据库未打开”错误?
Posted
技术标签:
【中文标题】如何解决此“ORA-01109:数据库未打开”错误?【英文标题】:How do I resolve this "ORA-01109: database not open" error? 【发布时间】:2015-02-01 12:41:13 【问题描述】:我正在尝试使用 SQLPlus 创建自己的数据库。所以首先我以管理员身份登录:
sqlplus sys/sys_password as sysdba
然后我尝试创建一个名为 sqlzoo 的新用户:
CREATE USER sqlzoo IDENTIFIED BY sqlzoo
DEFAULT TABLESPACE tbs_perm_01sqlzoo
TEMPORARY TABLESPACE tbs_perm_01sqlzoo
QUOTA 20M ON tbs_perm_01sqlzoo;
这给了我以下错误:
ERROR at line 1:
ORA-01109: database not open
为什么会出现这样的错误?
【问题讨论】:
【参考方案1】:由于错误状态 - 数据库未打开 - 它之前已关闭,并且有人在启动过程中将其留在了中间。它们可能是有意的,也可能是无意的(即,它应该是打开的,但没有打开)。
假设数据库本身没有问题,你可以用一个简单的语句打开它:(由于这个问题是在 SQLPlus 的上下文中专门提出的,所以请记住在末尾强制放置一个语句终止符(分号),否则,会报错。)
ALTER DATABASE OPEN;
【讨论】:
谢谢!!出于某种原因,当我输入该命令时,它告诉我“Oracle 不可用”.. 不确定 我想我应该避免使用sysdba
用户?
请注意,如果在语句末尾没有分号 (;),这将不起作用(至少从 SqlPlus 内部)
甲骨文。其中“STARTUP”不会“启动”数据库,您也应该知道这样做......【参考方案2】:
我遇到了同样的问题。以下是我解决问题的方法。我正在 Windows 10 上开发 oracle 数据库 12c 可插拔数据库(pdb)。
-- 使用 sqlplus 从终端以 sysdba 身份登录;下面是一个例子:
sqlplus sys/@orclpdb as sysdba
-- 首先检查你的数据库状态;
SQL> 从 v$pdbs 中选择名称、open_mode;
-- 它显示数据库已安装在我的案例中。如果你的没有挂载,你应该先挂载数据库。
-- 接下来打开数据库进行读/写
SQL> ALTER PLUGGABLE DATABASE OPEN; (或 ALTER PLUGGABLE DATABASE YOURDATABASENAME OPEN;)
-- 再次检查状态。
SQL> 从 v$pdbs 中选择名称、open_mode;
-- 现在您的 dababase 应该可以读/写,并且您应该能够创建模式等。
【讨论】:
【参考方案3】:改变可插拔数据库或clpdb打开;`
为我工作。
orclpdb
是可插拔数据库的名称,可能因人而异。
【讨论】:
【参考方案4】:你试过 SQL> alter database open; 吗?首次登录后?
【讨论】:
嗯,我做这段代码,它告诉我“Oracle 不可用”?? 如果不可用如何登录?检查数据库和侦听器服务,然后重试 我认为是因为我使用以下方式登录:sqlplus sys/sys_password as sysdba
- 我认为我应该使用普通用户?
SYS拥有所有权限,不客气
嗯,我就是这么想的。所以这里有些东西真的很奇怪,我会调查一下【参考方案5】:
如果您的数据库已关闭,那么在以 SYSDBA 身份登录期间,您可以假设这一点。虽然登录命令将像 sqlplus sys/sys_password as sysdba 一样执行,但此时您将从数据库获得“连接到空闲实例”的回复。此消息表明您的数据库已关闭。您应该首先检查 alert.log 文件,了解数据库关闭的原因。如果您发现它已正常关闭,那么您可以发出“启动”命令来启动数据库,然后执行您的创建用户命令。如果您发现数据库存在丢失数据文件或其他问题,那么您需要先恢复数据库并打开数据库以执行您的创建用户命令。
“alter database open”命令仅在数据库处于 Mount 阶段时才被数据库接受。如果数据库已关闭,则它不会接受“alter database open”命令。
【讨论】:
【参考方案6】:同样的问题把我带到了这里。 毕竟,我找到了那个链接,这对我有好处。
Source link
检查可插拔数据库的状态。
SQL> 启动; ORACLE 实例已启动。
总系统全局区域 788529152 字节固定大小 2929352 字节可变大小 541068600 字节数据库缓冲区 239075328 字节重做缓冲区 5455872 字节 数据库已安装。数据库 打开。 SQL> select name,open_mode from v$pdbs;
名称 OPEN_MODE ------------------ ---------- PDB$SEED MOUNTED PDBORCL MOUNTED PDBORCL2 MOUNTED PDBORCL1 已安装
为此,我们需要在升级状态下启动 PDB$SEED 可插拔数据库
SQL> 立即关闭;
数据库已关闭。数据库已卸载。 ORACLE 实例关闭。
SQL> 启动升级;
ORACLE 实例已启动。
总系统全局区域 788529152 字节固定大小 2929352 字节可变大小 541068600 字节数据库缓冲区 239075328 字节重做缓冲区 5455872 字节 数据库已安装。数据库 打开了。
SQL> ALTER PLUGGABLE DATABASE ALL OPEN UPGRADE;可插拔数据库 改变了。
SQL> select name,open_mode from v$pdbs;
名称 OPEN_MODE ------------------ ---------- PDB$SEED 迁移 PDBORCL 迁移 PDBORCL2 迁移 PDBORCL1 迁移
【讨论】:
【参考方案7】:由于错误状态 - 数据库未打开 - 它之前已关闭,并且有人在启动过程中将其留在了中间。它们可能是有意的,也可能是无意的(即,它应该是打开的,但没有打开)。
假设数据库本身没有问题,您可以用一个简单的语句打开它。 (由于这个问题是专门在SQLPlus的上下文中问的,所以请记得在末尾强制加上一个语句终止符(分号),否则会导致错误。分号字符是语句终止符。它是ANSI SQL-92 标准。)
ALTER DATABASE OPEN;
【讨论】:
【参考方案8】:I was facing some problem from SQL PLUS Command Promt.
So I resolve this issue from windows CMD ,I follow such steps--->
1: open CMD (Windows)
2: type show pdbs;
now u have to unmount the data base which is mounted
3: type alter pluggable database database_Name open;
4: type show pdbs;(for cross check)
对我有用
【讨论】:
非常感谢您的解决方案解决了我的问题【参考方案9】:如果您使用的是 19c,那么只需按照以下步骤操作
-
使用 sys 用户登录。
使用以下命令将会话更改为可插入数据库。
SQL>alter session set container=orclpdb;
下次启动数据库。
SQL>启动
之后那个数据库就不会出现上面的错误了。
【讨论】:
【参考方案10】:请运行此脚本
ALTER DATABASE OPEN
【讨论】:
【参考方案11】:无理取闹
SQL> 启动速度
【讨论】:
请用英文回复。还要查看您的答案,可能是STARTUP FORCE
请用英文回答,用其他语言回答是违反网站政策的【参考方案12】:
-
打开 SQLPLUS 并使用 sys 作为 sysdba 登录。
之后运行 alter pluggable database > open;
这对我有用。
【讨论】:
以上是关于如何解决此“ORA-01109:数据库未打开”错误?的主要内容,如果未能解决你的问题,请参考以下文章
Oracle登录 ORA-01033: ORACLE正在初始化或关闭的解决方法
如何解决颤振中的 build.gradle 错误。如何解决此错误“评估项目 ':app' 时出现问题。> 格式错误的 \uxxxx 编码。”