oracle修改SGA后无法启动的临时解决方法

做oracle的优化,使用Console中打开数据库的配置,发现如图 由于里面有的值为零,于是我按照它的建议修改了对应的值。结果重启后oracle启动不起来了。

使用Console连接提示: 无法解析连接描述符中指定的SID。

使用pl/sql连接提示:ORA-12505:TNS:监听程序当前无法识别连接描述符中所给出的SID

1、 若数据库机器上没有装Console或者没有使用Console配置网络服务名.

则可以通过命令sqlplus sys/sys as sysdba 登录到服务器空闲进程。接着执行步骤4。

2、如果配置了网络服务名,则

在路径D:/oracle/product/10.2.0/db_1/network/admin/listener.o
ra下 找到listener.ora。

原来listener.ora内容:

  
  
# listener.ora Network Configuration File: D:/oracle/product/ 10.2 . 0 /db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER
=
(SID_LIST
=
(SID_DESC
=
(SID_NAME
= PLSExtProc)
(ORACLE_HOME
= E:/oracle/product/ 10.2 . 0 /db_1)
(PROGRAM
= extproc)
)
)

LISTENER
=
(DESCRIPTION_LIST
=
(DESCRIPTION
=
(ADDRESS
= (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS
= (PROTOCOL = TCP)(HOST = 127.0 . 0.1 )(PORT = 1521 ))
)
)

 

 

改成(红色部分为增加部分):

  
  
# listener.ora Network Configuration File: D:/oracle/product/ 10.2 . 0 /db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER
=
(SID_LIST
=
(SID_DESC
=
(SID_NAME
= PLSExtProc)
(ORACLE_HOME
= D:/oracle/product/ 10.2 . 0 /db_1)
(PROGRAM
= extproc)
)
(SID_DESC
=
(GLOBAL_DBNAME
= XXX(网络服务名))
(ORACLE_HOME
= D:/oracle/product/10.2.0/db_1)
(SID_NAME
=
XXX(网络服务名)))
)

)

LISTENER
=
(DESCRIPTION_LIST
=
(DESCRIPTION
=
(ADDRESS
= (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS
= (PROTOCOL = TCP)(HOST = 127.0 . 0.1 )(PORT = 1568 ))
)
)

 

 

修改完 listener.ora后

使用console连接提示“数据库已关闭”。

使用pl/sql连接提示

ORA-27101 Shared memory realm does not exist
ORA-01034 ORACLE not available

查看db1文件夹下的alert_XXX(网络服务名).log。

里面记录 :Cannot set sga_target with db_block_buffers set

3、使用dos端登录oracle

sqlplus sys/sys@XXX(网络服务名). as sysdba
能够登陆
提示已经连接到空闲例程

4、找 pfile,在 /.../admin/XXX(服务名)/pfile 下,init.ora.XXXXXXX(数字串)

5、执行命令

SQL> startup pfile='pfile 路径'
通过指定的 pfile 启动数据库实例

结果如图

6、执行命令

SQL> create spfile from pfile='pfile 路径';(一定要有分号!)

创建成功会提示: 文件已创建。

数据库可以登录了,查看例程/配置/内存 ,恢复了原样。

对于32 BIT的Windows系统,有SGA 1.7G限制
某些OS系统本身也有一些内存参数限制

修改 SGA 文件:

SGA_MAX_SIZE是调优oracle9i非常重要的参数,但也是并不是调的越大越好。相反,oracle9i对SGA_MAX_SIZE的最大值有一个限制:1.7G,超过该值就会造成实例无法启动,系统报以下信息:

   1.当你控制台中设置完实例SGA最大值,点击“应用”后,oracle在“正在启动数据库”的过程中,提示:ORA-27102:out of memory,启动失败
   2.当你第二次手动启动实例时,系统会提示:ORA-27100:shared memory realm already exists,最终还是启动失败。
 
   解决该问题的思路:想办法把SGA_MAX_SIZE的值修改到1.7G以下,然后再启动
 
   解决该问题需要用到从oracle9i开始才拥有的特性:spfile。
   spfile是一个二进制文件,可以通过pfile来创建,而且可以通过rman备份。它管理的是初始化参数;
   spfile和pfile不同之处在于:
   1.在oracle9i之前使用pfile存储初始化参数设置,当oracle实例启动时去读取这些参数,任何参数的修改都必须重启实例才能生效。
 
   2.使用spfile来管理初始化参数,可以使用ALTER SYSTEM或者ALTER SESSION来动态修改那些可动态修改的参数,不必重启实例立即生效。
 
   3.除了第一次启动数据库时,oracle读取的是pfile,然后根据pfile来创建spfile,从此启动我们不在需要pfile。
 
   4.pfile是文本文件,可以通过文本编辑器来修改,而spfile是二进制文件,用文本编辑器无法正常编辑。可以修改文本格式的pfile之后,用“create spfile from pfile”命令将文本生成二进制的spfile
 
   好,大概了解了spfile和pfile之后,我们的思路应该很清晰了,下面是解决方法:
   1.手动把实例的服务关闭(在服务里找到“OracleServiceSID”服务,右击选择“停止”)
 
   2.打开【程序】-【Oracle - OraHome92】-【Configuration and Migration Tools】-【Administration Assistant for Windows NT
 
   3.在该页面中打开树形结构,找到实例结点,右击实例结点选择“启动/关闭选项”,取消“服务启动时启动历程”选项。
 
   4.右击实例结点,点击“启动服务”。
 
   5.运行中敲入“cmd”,进入sqlplus,然后通过命令创建可以修改的pfile文本文件:
C:/Documents and Settings/Administrator>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on 星期四 9月 24 22:43:20 2009
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
SQL> conn /as sysdba
已连接到空闲例程。
SQL> create pfile='d:/zgznew.ora' from spfile;
文件已创建。
  
   6.然后用文本编辑器打开zgznew.ora,找到SGA_MAX_SIZE参数,并将它修改到1.7G以下,注意,参数值的单位是字节。修改好之后保存,然后再通过命令创建spfile二进制文件:
SQL> create spfile from pfile='d:/zgznew.ora' ;
文件已创建。
 
    7.此时再用startup命令启动实例就可以成功了:
SQL> startup
ORACLE 例程已经启动。
Total System Global Area  529079780 bytes
Fixed Size                   454116 bytes
Variable Size             503316480 bytes
Database Buffers           25165824 bytes
Redo Buffers                 143360 bytes
数据库装载完毕。
数据库已经打开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值