ITPub博客

首页 > 数据库 > Oracle > [20260423]oracle参数设置问题.txt

[20260423]oracle参数设置问题.txt

原创 Oracle 作者:lfree 时间:2026-04-28 20:17:36 0 删除 编辑

[20260423]oracle参数设置问题.txt

--//前几天在21c下测试use_large_pages参数的问题,开始每次修改参数都是手工修改参数文件,非常繁琐,而且很容易出错,并且遗漏
--//一些步骤。

--//想到通过修改init参数文件来覆盖spfile中的参数文件,在测试中犯了一个低级错误。记录下来,避免以后再犯类似错误。

1.环境:
SYS@book> @ ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

SYS@book> @ pvalid use_large_pages
Display valid values for multioption parameters matching "use_large_pages"...
  PAR# PARAMETER        ORD VALUE      DEFAULT
------ ---------------- --- ---------- -------
   180 use_large_pages    1 TRUE       DEFAULT
       use_large_pages    2 AUTO
       use_large_pages    3 ONLY
       use_large_pages    4 FALSE
       use_large_pages    5 AUTO_ONLY

--//21c比11g多增加AUTO_ONLY,想测试它的作用,结果在测试中遇到许多与以前11g不同的情况。开始手工修改spfile文件。
--//因为要修改内核参数vm.nr_hugepages,vm.nr_overcommit_hugepages。在tmux下切换操作,不小心忘记某个步骤。
--//想到使用修改init参数文件的方法覆盖spfile中的参数文件。

2.测试:
$ cat initbook.ora
use_large_pages=auto_only
SPFILE='/u01/app/oracle/dbs/spfilebook.ora'

--//注意:21c下spfile文件放在$ORACLE_BASE/dbs目录下,因为从18c开始oracle引入Read-Only Oracle Homes这个概念,一旦使用它
--//dbs目录建立在$ORACLE_BASE/dbs,文件sqlnet.ora以及tnsnames.ora定位在/u01/app/oracle/homes/OraDB21Home1/network/admin。

--//我的错误在在于将use_large_pages=auto_only写在spfile参数的前面,导致修改不起作用。

SYS@book> startup pfile=/u01/app/oracle/dbs/initbook.ora
ORACLE instance started.

Total System Global Area 1107294056 bytes
Fixed Size                  9684840 bytes
Variable Size             654311424 bytes
Database Buffers          436207616 bytes
Redo Buffers                7090176 bytes
Database mounted.
Database opened.

SYS@book> show parameter use_large_pages
PARAMETER_NAME   TYPE    VALUE
---------------- ------- -------
use_large_pages  string  ONLY

SYS@book> show spparameter use_large_pages
SID      NAME            TYPE   VALUE
-------- --------------- ------ ---------
*        use_large_pages string ONLY

--//spfile参数文件里面记录use_large_pages=ONLY。当时也没有仔细思考,采用删除spfile文件中的use_large_pages参数。

--//SYS@book> alter system reset use_large_pages;
--//System altered.

--//实际上对调一下位置就可以了。这样手工设置的参数就起作用。

$ cat initbook.ora
SPFILE='/u01/app/oracle/dbs/spfilebook.ora'
use_large_pages=auto_ONLY

SYS@book> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SYS@book> startup pfile=/u01/app/oracle/dbs/initbook.ora
ORACLE instance started.
Total System Global Area 1107294056 bytes
Fixed Size                  9684840 bytes
Variable Size             654311424 bytes
Database Buffers          436207616 bytes
Redo Buffers                7090176 bytes
Database mounted.
Database opened.

SYS@book> show parameter use_large_pages
PARAMETER_NAME  TYPE   VALUE
--------------- ------ ----------
use_large_pages string auto_ONLY

SYS@book> show spparameter use_large_pages
SID      NAME            TYPE    VALUE
-------- --------------- ------- ---------
*        use_large_pages string  ONLY

3.实际上如果如果遇到某个参数设置异常,可以在没有启动数据库的情况下建立init参数文件。简单演示看看:

--//关闭数据库.
SYS@book> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

SYS@book> create pfile='/tmp/initbook.ora' from spfile='/u01/app/oracle/dbs/spfilebook.ora';
File created.

$ head -5 /tmp/initbook.ora ; tail -5 /tmp/initbook.ora
book.__data_transfer_cache_size=0
book.__db_cache_size=436207616
book.__inmemory_ext_roarea=0
book.__inmemory_ext_rwarea=0
book.__java_pool_size=16777216
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.unified_audit_common_systemlog='LOCAL2.INFO'
*.unified_audit_systemlog='LOCAL1.INFO'
*.use_large_pages='ONLY'

--//更正错误后,备份1份spfile文件后,在反向生成spfile文件覆盖原来的spfile就可以了。

SYS@book> create  spfile='/u01/app/oracle/dbs/spfilebook.ora1' from pfile='/tmp/initbook.ora';
File created.

$ ls -l /u01/app/oracle/dbs/spfilebook.ora*
-rw-r-----. 1 oracle oinstall 4608 2026-04-23 08:40:31 /u01/app/oracle/dbs/spfilebook.ora
-rw-r-----. 1 oracle oinstall 4608 2026-04-23 08:58:00 /u01/app/oracle/dbs/spfilebook.ora1


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3116911/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7969349