热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

ORA-00020,ORA-01304,ORA-27101基础故障处理

ORA-00020,ORA-01304,ORA-27101基础故障处理##ORA-00020问题在定点维护的过程中,安装数据库时,都是采用Window软件安装下一步模式,各种配置参数值都是默认值。但因为该定点收费端点数多,一早登录的用户进程数...SyntaxHighlighte

ORA-00020,ORA-01304,ORA-27101基础故障处理
 
##ORA-00020问题
 
在定点维护的过程中,安装数据库时,都是采用Window软件安装“下一步”模式,各种配置参数值都是默认值。但因为该定点收费端点数多,一早登录的用户进程数超过上限后,会提示
"ORA-00020:超出最大进程数(%s)",不是专业DBA,在网上查找资料,得知:
 
1.Oracle数据库中有一个最大进程数设置,用DBA用户登录后,执行以下操作:
SQL> show parameter process;
  www.2cto.com  
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- -----
aq_tm_processes                      integer     0
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
job_queue_processes                  integer     10
log_archive_max_processes            integer     2
processes                            integer     150
可以看出,当前的最大连接进程数是150,一般安装的时候,默认就是150;
 
2.如何查看当前的进程连接数呢?
执行以下命令:
SQL> select count(1) from v$process;
  www.2cto.com  
 
  COUNT(1)
----------
        23
可以看到当前的连接进程数是23.
 
3.如何根据实际情况进行配置呢?
在Oracle8i中,因为初始化参数文件只有pfile,是一个记事本,具体位置:ORACLE_BASE\admin\ora817\pfile\init.ora(OEACLE_HOME=ORACLEBAE\ora81),
因此可以直接打开,找到processes关键字,根据实际情况修改,注意修改完成后,需要重启服务才能生效;
Oracle9i之后,因为初始化参数文件有了spfile,而spfile是一个二进制文件,不能直接手动修改,只能通过命令修改,具体命令如下:
alter system set processes=200 scope=spfile;注意,修改完毕之后,需要重启服务,重启服务后,再次查看
SQL> show parameter process;
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- -----
aq_tm_processes                      integer     0
db_writer_processes                  integer     1
gcs_server_processes                 integer     0
job_queue_processes                  integer     10
log_archive_max_processes            integer     2
processes   www.2cto.com             integer     200
可以看到已经修改了。
 
##ORA-01034,ORA-27101问题:
 
本人在自己的机器上(Oracle10g)操作时,将processes的值修改成了3,关闭服务重启的时候,长时间不能正常启动,怀疑是processes值太小导致,
报着侥幸心理,手动修改了spfile,这下完了,在Window的servics.msc命令下,Oracle服务不能正常启动,还好,将processes=3的spfile
备份了一份,无奈之下,又物理还原回去,此时Windows的services.msc命令下,Oracle服务可以正常启动,但在cmd命令下,用DBA用户-->sys登录时,
提示:
ERROR: ORA-01034: oracle not available
ORA-27101: shared memory realm does not exist
在网上找了好多资料,大多数是修改ORACLE_HOME和ORACLE_SID,但本人的Oracle环境,没有任何问题,ORACLE_HOME与ORACLE_SID一切正常.
网上继续查找资料,针对本人的实际情况,找到了好的解决办法,大概思想是:因为本人processes值设置太小,而手动又不能直接修改spfile
文件,导致DBA用户不能正常登录,因而不能通过命令行修改spfile参数值。此时,只有通过pfile重建spfile,然后用重建的spfile替换有问题的spfile,
 
具体操作如下:  www.2cto.com  
1.通过pfile重建spfile
  先确定pfile的存放路径,本人pfile存放路径是:D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.322201013452
  准备将新重建的spfile放在D盘根目录下,因此,用DBA用户-->sys登录后,操作命令如下:
  create spfile='d:\SPFILEORCL.ORA' from pfile='D:\oracle\product\10.2.0\admin\orcl\pfile\init.ora.322201013452';
2.创建成功后,用新的spfile替换有问题的spfile,spfile的存放路径:D:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA,建议尽量创建
的新spfile文件名称与旧的文件名保持一致,这样,可以不用修改pfile文件的内容.替换完成之后,重新启动服务,一切正常.
 
 
 
摘自 JavaPeak的专栏

推荐阅读
author-avatar
手机用户2502925763
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有