在Oracle实例关闭时如何修改spfile的参数详解

问题描述:

最近在工作遇到一个问题,在Oracle 11G单机ASM中修改sga大小,修改完后,关闭instance并startup时,提示sga没有达到最小值,因些无法启动,而此时数据库实例已经关闭,已不能在之前的那种模式修改参数,下面来一起看看详细的介绍。

具体的操作如下:

一、查询sga大小

SQL> show parameter sga
NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
lock_sga     boolean  FALSE
pre_page_sga     boolean  FALSE
sga_max_size     big integer 1G
sga_target     big integer 1G

二、修改sga大小为500M

SQL> alter system set sga_target=500M scope=spfile;
System altered.

三、因为是指定参数为spfile,因此要重启instance才能使参数生效

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

四、重启instance 时,提示sga最小值应该为668M

SQL> startup
ORA-01078: failure in processing system parameters
ORA-00821: Specified value of sga_target 500M is too small, needs to be at least 668M

解决细路:

首先我们要理解一下oracle数据库在启动过程中调用 的参数,其顺序为:

spfilesid.ora -> spfile.ora ->initsid.ora-> init.ora  从这条启动线来说,如果第一个spfilesid.ora文件找不到的话,它会找到二个spfile.ora文件,如果能找到就能正常启动,若找不到,再继续找下一个initsid.ora文件,一直找到最后一个init.ora文件,说明:如果找到其中一个则会正常启动instance

解决方法:

通过创建pfile文件方式来启动数据库,然后再以pfile文件为模板创建spfile,具体步骤是:

1、以spfile模板创建pfile文件,并指定路径为本地硬盘位置

create pfile='/oracle/initudevasm.ora' from spfile='+DGDATA02/udevasm/spfileudevasm.ora';

2、修改initudevasm.ora文件,找到sga_target字段,修改大于 668M

vi /oracle/initudevasm.ora
udevasm.__db_cache_size=826277888
udevasm.__java_pool_size=4194304
udevasm.__large_pool_size=8388608
udevasm.__oracle_base='/oracle/app/oracle'#ORACLE_BASE set from environment
udevasm.__pga_aggregate_target=629145600
udevasm.__sga_target=1073741824
udevasm.__shared_io_pool_size=0
udevasm.__shared_pool_size=222298112
udevasm.__streams_pool_size=0
*.audit_file_dest='/oracle/app/oracle/admin/udevasm/adump'
*.audit_trail='db'
*.compatible='11.2.0.4.0'
*.control_files='+DGDATA02/udevasm/controlfile/current.256.945212019'
*.db_block_size=8192
*.db_create_file_dest='+DGDATA02'
*.db_domain=''
*.db_name='udevasm'
*.db_recovery_file_dest_size=3221225472
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=udevasmXDB)'
udevasm.log_archive_dest_1='LOCATION=+DGRECOVERY/'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=629145600
*.processes=1000
*.remote_login_passwordfile='EXCLUSIVE'
*.sessions=170
*.sga_target= 754288000 --大于668M
*.undo_tablespace='UNDOTBS1'

3、以pfile文件启动instance

SQL> startup pfile= '/oracle/initudevasm.ora'
ORACLE instance started.
Total System Global Area 751595520 bytes
Fixed Size   2257032 bytes
Variable Size   603983736 bytes
Database Buffers  142606336 bytes
Redo Buffers   2748416 bytes
Database mounted.
Database opened.

4、以pfile文件为模板创建spfile文件

SQL> create spfile= '+DGDATA02/udevasm/spfileudevasm.ora' from pfile= '/oracle/initudevasm.ora' ;
File created.

5、关闭实例,并重新启动spfile,因为在在创建spfile时已经默认指定原来的路径,并把原来的spfile文件覆盖了,所以只要直接启动即可

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 751595520 bytes
Fixed Size   2257032 bytes
Variable Size   603983736 bytes
Database Buffers  142606336 bytes
Redo Buffers   2748416 bytes
Database mounted.
Database opened.

6、查询修改后的sga大小

SQL> show parameter sga
NAME      TYPE  VALUE
------------------------------------ ----------- ------------------------------
lock_sga     boolean  FALSE
pre_page_sga     boolean  FALSE
sga_max_size     big integer 720M
sga_target     big integer 720M

通过上面查询则判断已经修改恢复成功

总结:

1、当数据库发生因为有关参数文件异常无法启动正常时,可以先把原理理解,然后通过创建pfile与spfile文件方式解决启动问题。
2、要备份有关数据库参数文件以防止误操作导致数据库无法正常启动

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • 在Oracle关闭情况下如何修改spfile的参数

    发现问题 我使用的Oracle11g,当我敲下如下一段命令后,就让我傻眼了.. alter system set sga_max_size=960M scope=spfile; shutdown immediate startup 此时的startup报错了,错误为: SQL> startup ORA-00844: Parameter not taking MEMORY_TARGET into account ORA-00851: SGA_MAX_SIZE 985661440 cannot be

  • 在Oracle实例关闭时如何修改spfile的参数详解

    问题描述: 最近在工作遇到一个问题,在Oracle 11G单机ASM中修改sga大小,修改完后,关闭instance并startup时,提示sga没有达到最小值,因些无法启动,而此时数据库实例已经关闭,已不能在之前的那种模式修改参数,下面来一起看看详细的介绍. 具体的操作如下: 一.查询sga大小 SQL> show parameter sga NAME TYPE VALUE ------------------------------------ ----------- -----------

  • linux 中的ls命令参数详解及ls命令的使用实例

    一.ls命令参数详解 可以通过阅读 ls 的说明书页(man ls)来获得选项的完整列表. -a – 全部(all).列举目录中的全部文件,包括隐藏文件(.filename).位于这个列表的起首处的 .. 和 . 依次是指父目录和你的当前目录. -l – 长(long).列举目录内容的细节,包括权限(模式).所有者.组群.大小.创建日期.文件是否是到系统其它地方的链接,以及链接的指向. -F – 文件类型(File type).在每一个列举项目之后添加一个符号.这些符号包括:/ 表明是一个目录:

  • Oracle 批处理自动备份bat脚本语句的步骤详解

    开门见山 1.备份的语句能执行 2.创建一个检单bat脚本能执行 3.把备份的语句放到bat 脚本里面 示例 @echo off echo 正在备份 Oracle 数据库,请稍等-- set expname=%date:~0,4%%date:~5,2%%date:~8,2% expdp 用户名/密码@orcl schemas=导出的用户 directory=备份的文件夹 dumpfile=%expname%.dmp logfile=%expname%.log 步骤 1.备份语句 确保导出的语句能

  • jQuery的实例及必知重要的jQuery选择器详解

    Jquery能做什么 访问和操作DOM元素   控制页面样式    对页面事件进行处理    扩展新的jQuery插件   与Ajax技术完美结合 Jquery的优势 体积小,压缩后只有100KB左右   l强大的选择器   出色的DOM封装   l可靠的事件处理机制   出色的浏览器兼容性   使用隐式迭代简化编程   丰富的插件支持 jQuery的知识的分解: 1.关于window.onload和$(function(){})区别   解析:window.onload等待页面上所有资源(ht

  • 基于vue-cli 打包时抽离项目相关配置文件详解

    前言:当使用vue-cli进行开发时时常需要动态配置一些设置,比如接口的请求地址(axios.defaults.baseURL),这些设置可能需要在项目编译后再进行设置的,所以在vue-cli里我们需要对这些配置文件进行抽离,不让webpack把配置文件也进行编译. 首先,我们需要在/static 下面新建一个js文件作为配置文件 里面的内容如下: window.g={ AXIOS_TIMEOUT:10000, SERVICE_CONTEXT_PATH:`http://10.200.199.84

  • vue-vuex中使用commit提交mutation来修改state的方法详解

    在vuex中,关于修改state的方式,需要commit提交mutation.官方文档中有这么一句话: 更改 Vuex 的 store 中的状态的唯一方法是提交 mutation. 为了搞清楚其原因,查阅了很多资料,发现其它人在做vuex的源码解析的时候,并没有将这点说的很明白. 所以只好自己去查看vuex的源码,并且自己做demo进行验证. 但是试验后,发现直接修改state时,store中的state能够改变,并且是响应式的,并没有报错.跟commit提交mutation的方式没啥区别. 后

  • vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解

    1.如果只使用config配置的相关js接口 可采用如下方式引入 执行 npm weixin-sdk-js --save 局部引入 在vue页面中 import wx from 'weixin-sdk-js'; 全局引入 在vue 的main.js 页面中 引入后编写到vue原型链上,然后全局调用 import wx from "weixin-sdk-js"; Vue.prototype.$wx = wx; 2.如果要使用agentConfig配置的相关接口 一定不要执行npm命令引入

  • Oracle 生成未来三天的整点时间(步骤详解)

    需求:X坐标轴时间都为整点时间,展示未来三天内的预测(x轴展示未来三天的整点时间),每3个小时一个刻度,横坐标共计24个刻度 步骤一:取当前时间 SELECT SYSDATE FROM DUAL 步骤二:取24个点 SELECT TO_NUMBER(ROWNUM - 1) AS RN,sysdate FROM DUAL CONNECT BY ROWNUM<25 步骤四:Oracle时间加减 SELECT SYSDATE + 1/24 FROM DUAL SYSDATE + 1表示时间加一天,1/

  • vue实例成员 插值表达式 过滤器基础教程示例详解

    目录 一. 什么是Vue 二.为什么学Vue 三.如何使用Vue 下载安装? 插值表达式 四.vue特点 1.虚拟DOM 2.数据的双向绑定 3.单页面应用 4.数据驱动 五.Vue实例 六.实例成员 - 挂载点 | el - 自定义插值表达式括号| delimiters - 数据 | data - 过滤器 | filters - 方法 | methods - js对象(即字典)补充 - 插值表达式转义 | delimters - 计算属性 | computed - 监听属性 | watch 一

随机推荐