ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 查询初始化参数的方法(五)

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

原创 Linux操作系统 作者:yangtingkun 时间:2009-06-11 23:49:49 0 删除 编辑

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

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

查询初始化参数的方法(一):http://yangtingkun.itpub.net/post/468/484669

查询初始化参数的方法(二):http://yangtingkun.itpub.net/post/468/484729

查询初始化参数的方法(三):http://yangtingkun.itpub.net/post/468/485623

查询初始化参数的方法(四):http://yangtingkun.itpub.net/post/468/485664

 

 

判断数据库启动是否启用了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中的设置并不相同。

 

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

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10470353