这里有新鲜出炉的精品教程,程序狗速度看过来!
Oracle Database,又名 Oracle RDBMS,或简称 Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。
这篇文章主要给大家介绍了关于在 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、要备份有关数据库参数文件以防止误操作导致数据库无法正常启动
来源: http://www.phperz.com/article/17/0823/344329.html