您在这里:首页 > 学员专区 > 技术文章
Oracle视频
Oracle
CUUG课程

查询初始化参数的方法(五)

 

查询初始化参数的方法很多,比如SHOW PARAMETER,或查询V$PARAMETER等,这里简单总结一下。

这一篇描述如何判断一个初始化参数的来源。

 

 

判断数据库启动是否启用了SPFILE很简单,只需要通过SHOW PARAMETER SPFILE命令就可以看到:

SQL> show parameter spfile

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

spfile                               string      /export/home/oracle/spfiletest1.ora

但是判断一个初始化参数是否由SPFILE设置,并不是那么容易。

首先V$SPPARAMETER里面包含了所有可以设置初始化参数的记录:

SQL> select sid, count(*)

  2  from v$spparameter

  3  group by sid;

SID          COUNT(*)

---------- ----------

*                 391

test2               6

test1               6

不过这个问题并不难解决,对于通过SPFILE指定的参数,V$SPPARAMETER视图中的ISSPECIFIED列的值为TRUE,如果在SPFILE中没有指定,则这个值为FALSE

SQL> select isspecified, count(*)

  2  from v$spparameter

  3  group by isspecified;

ISSPEC   COUNT(*)

------ ----------

TRUE          144

FALSE         259

SQL> select sid, name, value

  2  from v$spparameter

  3  where isspecified = 'TRUE'

  4  and name not like '\_%' escape '\';

SID        NAME                           VALUE

---------- ------------------------------ --------------------------------------------------

*          processes                      150

*          resource_manager_plan

*          sga_target                     775946240

*          control_files                  +DATA/test/controlfile/current.529.684067899

*          db_block_size                  8192

*          compatible                    11.1.0.0.0

*          log_archive_config

*          log_archive_dest_1             LOCATION=/data/oracle/oradata/test/archivelog

*          log_buffer                     4197376

*          cluster_database               TRUE

*          cluster_database_instances     3

*          db_create_file_dest            +DATA

test1      thread                         1

test2      thread                         2

test1      undo_tablespace                UNDOTBS1

test2      undo_tablespace                UNDOTBS2

test1      instance_number                1

test2      instance_number                2

test1      remote_login_passwordfile      SHARED

test2      remote_login_passwordfile      EXCLUSIVE

*          db_domain

*          plsql_warnings                 DISABLE:ALL

*          result_cache_max_size          3899392

test1      core_dump_dest                 /data/oracle/diag/rdbms/test/test1/cdump

test2      core_dump_dest                 /data/oracle/diag/rdbms/test/test2/cdump

*          audit_file_dest                /data/oracle/admin/test/adump

*          audit_trail                    DB

*          db_name                        test

test2      open_cursors                   400

*          open_cursors                   500

*          optimizer_mode                 ALL_ROWS

*          query_rewrite_enabled          TRUE

*          pga_aggregate_target           256901120

*          optimizer_dynamic_sampling     2

*          skip_unusable_indexes          TRUE

*          diagnostic_dest                /data/oracle

已选择36行。

上面就列出了SPFILE中所有指定的参数,不过并不以为SPFILE中设置的参数就一定会生效。

比如在使用PFILE指定SPFILE参数的方式启动时,PFILE里面可以在SPFILE之前指定实例级的初始化参数,用来覆盖SPFILE里相同的数据库级的初始化参数设置。

SQL> select instance_name from v$instance;

INSTANCE_NAME

----------------

test1

SQL> select sid, name, value

  2  from v$spparameter

  3  where name = 'open_cursors';

SID        NAME                           VALUE

---------- ------------------------------ --------------------------------------------------

test1      open_cursors                   600

test2      open_cursors                   400

SQL> alter system reset open_cursors scope = spfile sid = 'test1';

系统已更改。

SQL> alter system set open_cursors = 500;                      

系统已更改。

SQL> select sid, name, value

  2  from v$spparameter

  3  where name = 'open_cursors';

SID        NAME                           VALUE

---------- ------------------------------ --------------------------------------------------

test2      open_cursors                   400

*          open_cursors                   500

下面通过修改inittest1.ora参数,在spfile参数前面,加上open_cursors参数:

SQL> host vi /export/home/oracle/inittest1.ora

test1.open_cursors=1000

spfile=/export/home/oracle/spfiletest1.ora

"/export/home/oracle/inittest1.ora" 3 lines, 68 characters

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE例程已经关闭。

SQL> startup pfile=/export/home/oracle/inittest1.ora

ORACLE例程已经启动。

Total System Global Area  776896512 bytes

Fixed Size                  2098776 bytes

Variable Size             246069672 bytes

Database Buffers          524288000 bytes

Redo Buffers                4440064 bytes

数据库装载完毕。

数据库已经打开。

SQL> select name, value

  2  from v$system_parameter

  3  where name = 'open_cursors';

NAME                           VALUE

------------------------------ --------------------------------------------------

open_cursors                   1000

SQL> select sid, name, value, isspecified

  2  from v$spparameter

  3  where name = 'open_cursors';

SID        NAME                           VALUE                                    ISSPEC

---------- ------------------------------ ---------------------------------------- ------

test2      open_cursors                   400                                      TRUE

*          open_cursors                   500                                      TRUE

检查当前的数据库设置可以发现,虽然当前SPFILEopen_cursors是明确设置的,但是由于pfile中设置了实例级的初始化参数覆盖了数据库级的初始化参数,导致系统当前的参数设置和SPFILE中的设置并不相同。

 

 

(以上内容摘于网络,如有侵权,请告之,将第一时间删除)

相关文章 [上一篇] 查询初始化参数的方法(四)
010-88589926(88587026)
CUUG热门培训课程
Oracle DBA就业培训
CUUG名师
网络课程
技术沙龙
最新动态

总机:(010)-88589926,88589826,88587026 QQ讨论群:243729577 182441349 邮箱:cuug_bj@cuug.com
通信地址:北京市海淀区紫竹院路98号北京化工大学科技园609室(CUUG)邮政编码:100089 
中国UNIX用户协会 Copyright 2010  ALL Rights Reserved 北京神脑资讯技术有限公司
京ICP备11008061号  京公网安备110108006275号