ORA-01034: ORACLE not available

本文提供了两种解决Oracle数据库启动时遇到ORA-01034和ORA-27101错误的方法。一种方法涉及使用SQL命令进行数据库恢复,另一种则是通过启动Oracle服务来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

解决方法一:
ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
进程 ID: 0
会话 ID: 0 序列号: 0
因为这个小小的错误,折腾了我好几个小时,特记录如下。
上网搜索了下解决方案,如下:
sqlplus “sys/password as sysdba”
连接成功,提示”已连接到空闲例程”
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 293601744 bytes
Database Buffers 234881024 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
ORA-03113: 通信通道的文件结尾
进程 ID: 5412
会话 ID: 5 序列号: 5
出现一个新错误:ORA-03113: 通信通道的文件结尾;分析可能由于昨晚数据库强制关闭,导致文件状态可能不一致,因为正常关闭数据库会同步校验各文件,使得重新启动的时候文件时间点一致。
找到解决方案如下:
SQL> conn / as sysdba
已连接到空闲例程。
SQL> startup mount
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 293601744 bytes
Database Buffers 234881024 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC


STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME


     1          1        340   52428800        512          1 NO

INACTIVE 8474486 02-4月 -11 8522856 02-4月 -11
3 1 342 52428800 512 1 NO
INACTIVE 8555222 06-4月 -11 8565162 11-4月 -11
2 1 343 52428800 512 1 NO
CURRENT 8565162 11-4月 -11 2.8147E+14
SQL> alter database open resetlogs
2 ;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01139: RESETLOGS 选项仅在不完全数据库恢复后有效
SQL> recover database until time ‘2011-04-11 12:12:12’
完成介质恢复。
SQL> alter database open resetlogs;
数据库已更改。
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 535662592 bytes
Fixed Size 1375792 bytes
Variable Size 293601744 bytes
Database Buffers 234881024 bytes
Redo Buffers 5804032 bytes
数据库装载完毕。
数据库已经打开。

解决方法:二
我顶 字号:大 中 小
在试图登录pl/sql时,输入用户名(system/pwd)后,Oracle报告下列错误:
ERROR:
ORA-27101 Shared memory realm does not exist
ORA-01034 ORACLE not available &<60;

查阅了相关
ORA-27101 Shared memory realm does not exist
ORA-01034 ORACLE not available &<60;
的说明,解释为ORACLE_HOME或者ORACLE_SID设置不正确。
但检查bash_profile以后没有发现错误;
錯誤點,沒有開啟oracle服務;
解決辦法,直接開啟oracle相關數據庫的服務;
或按照下面的步驟操作:
lsnrctl start
sqlplus ‘/as sysdba’
sql> startup
emctl start dbconsole
isqlplusctl start

ORA-01034: ORACLE not available 错误通常表示 Oracle 数据库实例未启动或无法连接到实例。该错误可能伴随 ORA-27101: shared memory realm does not exist,表明共享内存区域不存在,通常是因为数据库未启动或启动过程中出现异常。 ### 检查数据库实例状态 首先需要确认数据库实例是否已经启动。可以通过以下命令尝试连接数据库: ```sql sqlplus / as sysdba ``` 如果连接成功但数据库未启动,可以尝试手动启动数据库实例: ```sql STARTUP ``` 如果数据库启动失败,需要查看告警日志文件(通常位于 `$ORACLE_BASE/diag/rdbms/<dbname>/<instance>/trace/alert_<instance>.log`)以获取详细的错误信息。 ### 检查环境变量设置 确保 `ORACLE_SID` 环境变量已正确设置,指向当前数据库实例的 SID。例如在 Windows 环境下,可以通过以下命令设置: ```shell set ORACLE_SID=mycms ``` 在 Linux/Unix 环境下,可以使用: ```shell export ORACLE_SID=mycms ``` ### 检查共享内存和内存配置 ORA-01034 错误通常与共享内存有关。在 Linux 系统中,需要确保 `/dev/shm` 文件系统的大小足够大,至少应大于 `MEMORY_TARGET` 参数的值。可以通过以下命令查看 `/dev/shm` 的大小: ```shell df -h /dev/shm ``` 如果 `MEMORY_TARGET` 设置过大,可以考虑修改初始化参数文件(pfile 或 spfile),适当调整 `MEMORY_TARGET` 和 `MEMORY_MAX_TARGET` 的值。 ### 检查监听器状态 如果数据库实例已启动但仍然无法连接,可能是因为监听器未运行。可以通过以下命令启动监听器: ```shell lsnrctl start ``` 启动后,使用以下命令检查监听器状态: ```shell lsnrctl status ``` ### 检查参数文件 如果数据库因参数文件丢失或损坏而无法启动,可以尝试从 spfile 创建 pfile,或手动创建一个新的 pfile 文件。例如,可以使用以下命令从 spfile 创建 pfile: ```sql CREATE PFILE FROM SPFILE; ``` 如果 spfile 不存在,可以手动创建 pfile,并在其中指定必要的初始化参数,如 `db_name`、`memory_target`、`control_files` 等。 ### 示例:手动创建 pfile 假设数据库名称为 `mydb`,可以创建 `initmydb.ora` 文件,并添加以下内容: ```ini db_name='mydb' memory_target=512M control_files=('C:\oracle\oradata\mydb\control01.ctl','C:\oracle\oradata\mydb\control02.ctl') ``` 然后使用以下命令启动数据库: ```sql STARTUP PFILE='C:\oracle\product\11.2.0\db_1\database\initmydb.ora' ``` 如果启动成功,可以将 pfile 转换为 spfile 以持久化配置: ```sql CREATE SPFILE FROM PFILE; ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值