ORA-01034: 异常分析处理
问题描述:
今天oracle服务器叒意外断电,启动oracle服务再次连接时,发现oracle服务无法连接,提示错误:
ORA-01034: ORACLE not available
ORA-00844: Parameter not taking MEMORY_TARGET into account
ORA-00851: SGA_MAX_SIZE 4294967296 cannot be set to more than MEMORY_TARGET 3221225472.
最终通过修改pfile的方式解决,详细处理过程如下:
连接oracle
打开cmd,设置oracle_sid
set oracle_sid=dbname
sqlplus / as sysdba
已连接到空闲例程。
SQL> show parameter
ORA-01034: ORACLE not available
进程 ID: 0
会话 ID: 0 序列号: 0
SQL> ERROR:
ORA-03113: 通信通道的文件结尾
进程 ID: 0
会话 ID: 0 序列号: 0
已断开连接
测试启动服务
再次连接oracle,如下如下命令启动oracle服务:
sqlplus / as sysdba
已连接到空闲例程。
SQL> startup
ORA-00844: Parameter not taking MEMORY_TARGET into account
ORA-00851: SGA_MAX_SIZE 4294967296 cannot be set to more than MEMORY_TARGET 3221225472.
上述提示内存设置参数错误,需要调整参数 SGA_MAX_SIZE,直接使用如下命令修改:
尝试修改内存参数
SQL> alter system set sga_max_size=2g scope=spfile;
alter system set sga_max_size=2g scope=spfile
*
第 1 行出现错误:
ORA-01034: ORACLE not available
进程 ID: 0
会话 ID: 0 序列号: 0
仍然提示错误,看来只能通过修改pfile方式了。
创建 pfile:
SQL> create pfile from spfile;
文件已创建。
修改参数
默认 pfile 文件生成在如下目录,(oracle安装目录不同,请自行调整):
D:\app\Administrator\product\11.2.0\dbhome_1\database\INIT%dbname%.ORA
使用notepad 打开子文件:INIT%dbname%.ORA,找到如下两行:
…
*.memory_target=3221225472
*.sga_max_size=4294967296
…
并修改 .sga_max_size 的值小于等于 .memory_target 的值,修改如下,并保存退出;
…
*.memory_target=3221225472
*.sga_max_size=3221225472
…
创建 spfile
SQL> create spfile from pfile;
文件已创建。
重新启动oracle服务
在windows任务管理器,服务中,找到对应oracle服务,重启;
再次验证,成功
sqlplus / as sysdba
SQL> show parameter sga
NAME TYPE VALUE
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 3G
sga_target big integer 0
SQL>