如何解决此“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正在初始化或关闭的解决方法

如何解决此分段错误:以下代码的 11 错误?

如何解决此编译错误

如何解决此科尔多瓦构建错误?

如何解决颤振中的 build.gradle 错误。如何解决此错误“评估项目 ':app' 时出现问题。> 格式错误的 \uxxxx 编码。”

如何解决此解码和语法错误