`
klskdk
  • 浏览: 9736 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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.0\db_1\network\admin\listener.o
  ra下 找到listener.ora。 2
  原来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 Sharedmemory realmdoes 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.
  文件已创建。
  6.然后用文本编辑器打开zgznew.ora,找到SGA_MAX_SIZE参数,并将它修改到1.7G以下,注意,参数值的单位是字节。修改好之后保存,然后再通过命令创建spfile二进制文件:
  SQL> create spfile from pfile='d:\zgznew.ora' ;
  文件已创建。
  7.此时再用startup命令启动实例就可以成功了:
  Total System Global Area  529079780 bytes
  Fixed Size                   454116 bytes
  Variable Size             503316480 bytes
  Database Buffers           25165824 bytes
  Redo Buffers                 143360 bytes
  数据库装载完毕。
  数据库已经打开。
分享到:
评论

相关推荐

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

    ORACLE修改SGA后无法启动的临时解决方法.比较实用的东西

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    14.1.1 Oracle安全性解决方案 14.1.2 VPD和OLS策略 14.2 Database Vault部署 14.2.1 Database Vault软件安装 14.2.2 Database Vault组件添加 14.2.3 Database Vault注册 14.2.4 Database Vault禁用和启用 ...

    Oracle日常维护故障定位故障排除

    3 由于临时表空间无法扩展导致数据库被挂起 4由于未打补丁导致RMAN备份时将数据库挂起 5由于BLOB类型的表记录数太多操作又太频繁导致数据库效率急差 6由于未对特大表(达到或超过100万条记录)定期做表分析导致...

    Oracle数据库维护培训

    描述 Oracle 服务器的体系结构及其主要构件 列举用户连接到 Oracle 实例所涉及的结构 双机模式:RAC/HOT STANDBY 数据库的逻辑结构 创建表空间 改变表空间的大小 为临时段分配空间 改变表空间的状态 改变表空间的...

    oracle 优化培训资料

    每次启动例程时,会分配系统全局区 (SGA) 并启动 Oracle 后台进程。后台进程代表调用进程执行各种功能。它们把为每个用户运行的多个 Oracle 程序所处理的功能统一起来。后台进程执行输入/输出 (I/O),并监视其它 ...

    Oracle 主要配置文件介绍

    如果设置为 N 表示不通过 dbstart 和 dbshut 启动和关闭实例数据库 CAMS 系统要求在 安装完 ORACLE 后要求将该参数修改为 Y 以保证 ORACLE 数据库自启动 和关闭 1.2.3 数据库实例初始化...

    深入解析Oracle.DBA入门进阶与诊断案例

    针对数据库的启动和关闭、控制文件与数据库初始化、参数及参数文件、数据字典、内存管理、Buffer Cache与Shared Pool原理、重做、回滚与撤销、等待事件、性能诊断与SQL优化等几大Oracle热点主题,本书从基础知识入手...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    1 Oracle 结构组件 目标 1-2 基本结构概述 1-3 Oracle 服务器 1-4 Oracle 实例 1-5 建立连接和创建会话 1-6 Oracle 数据库 1-7 物理结构 1-8 内存结构 1-9 系统全局区(SGA) 1-10 共享池 1-12 库缓存 1-13 数据字典...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    最近几年,他专注于研究Oracle内部原理以及解决性能问题。他的博客主页是 kerryosborne.oracle-guy.com。  ROBYN SANDS 思科公司的软件工程师,为思科的客户设计开发嵌入式Oracle数据库产品。从1996年开始使用...

    oracle数据库dba管理手册

    1.10.2 创建数据库后修改 MAXDATAFILES 27 1.10.3 使用OEM 28 第2章 硬件配置研究 30 2.1 结构概述 30 2.2 独立主机 31 2.2.1 磁盘阵列独立主机 31 2.2.2 磁盘镜像独立主机 34 2.2.3 多数据库独立主机 35 2.3 网络...

    oracle10g课堂练习I(2)

    启动 Oracle 数据库实例:NOMOUNT 4-21 启动 Oracle 数据库实例:MOUNT 4-22 启动 Oracle 数据库实例:OPEN 4-23 关闭 Oracle 数据库实例 4-24 关闭模式 4-25 SHUTDOWN 选项 4-26 使用 SQL*Plus 启动和关闭 4-...

    Oracle 9i&10g编程艺术:深入数据库体系结构(全本)含脚本

    目录回到顶部↑第1章 开发成功的Oracle应用 1 1.1 我的方法 2 1.2 黑盒方法 4 1.3 开发数据库应用的正确(和不正确)方法 8 1.3.1 了解Oracle体系结构 8 1.3.2 理解并发控制 14 1.3.3 多版本 19 1.3.4 数据库...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    8.4 监视和解决锁定冲突 286 8.4.1 共享锁与排他锁 287 8.4.2 排队机制 287 8.4.3 锁定争用 288 8.4.4 死锁 290 8.5 撤销概述 291 8.6 事务与撤销数据 292 8.7 管理撤销 293 8.7.1 与撤销相关的错误条件 ...

    Oracle9i的init.ora参数中文说明

    说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量。 值范围: 根据操作系统而定。 默认值 : 1 circuits: 说明 : 指定可用于入站和出站网络会话的虚拟电路总数。 该参数是构成某个例程的总 SGA ...

    Oracle编程艺术

    目录 序 ............................................................................................... 17 前言 ........................................................................3.5 临时文件..........

Global site tag (gtag.js) - Google Analytics