返璞归真:如何判断一个初始化参数是否来自默认设置

杨廷琨(yangtingkun)

云和恩墨 CTO

高级咨询顾问,Oracle ACE 总监,ITPUB Oracle 数据库管理版版主

Oracle初始化参数之多,变化之繁复可能,我们又如何去分辨哪些参数来自缺省设置,哪些又经过修改调整呢?

Oracle 在视图 V$SYSTEM_PARAMETER 中提供了一个列 ISDEFAULT,表示当前设置的值是否是数据库的默认值:

SQL> select name, value, isdefault 2 from v$system_parameter 3 where name = 'open_cursors'; NAME VALUE ISDEFAULT ------------------------------ ------------------------------------- --------- open_cursors 400 FALSE SQL> select isdefault, count(*) 2 from v$system_parameter 3 group by isdefault; ISDEFAULT COUNT(*) --------- ---------- TRUE 267 FALSE 22

根据这个结果可以看到,数据库中绝大部分的初始化参数设置都是默认值。

我们再来看一下修改一个默认参数,等值情况:

SQL> select name, value, isdefault 2 from v$system_parameter 3 where name = 'undo_retention'; NAME VALUE ISDEFAULT ------------------------------ -------------------------------------------------- --------- undo_retention 900 TRUE SQL> select sid, name, value 2 from v$spparameter 3 where name = 'undo_retention'; SID NAME VALUE ---------- ------------------------------ --------------------------- * undo_retention SQL> alter system set undo_retention = 900; 系统已更改。 SQL> select name, value, isdefault 2 from v$system_parameter 3 where name = 'undo_retention'; NAME VALUE ISDEFAULT ------------------------------ -------------------------------------------------- --------- undo_retention 900 TRUE SQL> select sid, name, value 2 from v$spparameter 3 where name = 'undo_retention'; SID NAME VALUE ---------- ------------------------------ ---------------------------- * undo_retention 900

对于手工设置的初始化参数与系统默认值相同的情况,通过 v$system_parameter 视图是无法区分的。

同样通过查询 V$SPPARAMETER 视图检查 SPFILE 的设置也不准确,因为初始化参赛可能是通过 PFILE 设置的,或者是实例启动后由 ALTER SYSTEM 命令进行过修改。

对于这种情况,通过 CREATE PFILE FROM MEMORY 或 CREATE 的方式是可以看到的参数变化的,不过既然这种方法能够查询得到,那么数据库中一定是在默写地方进行了记录。

实际上查询 V$SYSTEM_PARAMETER4 视图就可以获取到所有用户设置的初始化参数。

SQL> select sid, name, display_value value 2 from v$system_parameter4 3 where name not like '/_%' escape '/'; SID NAME VALUE ---------- ------------------------------ ----------------------------------------------- test1 processes 150 test1 spfile +DATA/test/spfiletest.ora test1 resource_manager_plan SCHEDULER[0x2C0E]:DEFAULT_MAINTENANCE_PLAN test1 sga_target 740M test1 control_files +DATA/test/controlfile/current.529.684067899 test1 db_block_size 8192 test1 compatible 11.1.0.0.0 test1 log_archive_config test1 log_archive_dest_1 LOCATION=/data/oracle/oradata/test/archivelog test1 log_buffer 4197376 test1 cluster_database TRUE test1 cluster_database_instances 3 test1 db_create_file_dest +DATA test1 thread 1 test1 undo_tablespace UNDOTBS1 test1 undo_retention 900 test1 instance_number 1 test1 remote_login_passwordfile SHARED test1 db_domain test1 plsql_warnings DISABLE:ALL test1 result_cache_max_size 3808K test1 core_dump_dest /data/oracle/diag/rdbms/test/test1/cdump test1 audit_file_dest /data/oracle/admin/test/adump test1 audit_trail DB test1 db_name test test1 open_cursors 400 test1 optimizer_mode ALL_ROWS test1 query_rewrite_enabled TRUE test1 pga_aggregate_target 245M test1 optimizer_dynamic_sampling 2 test1 skip_unusable_indexes TRUE test1 diagnostic_dest /data/oracle 已选择32行。

而事实上,当数据库执行 CREATE PFILE FROM MEMORY 命令时,Oracle 创建 PFILE 的数据源就是 V$SYSTEM_PARAMETER4 这个视图

前面介绍了很多种查询初始化参数的方法,其实还有一个方法也是很有用的,就是通过 alert 文件检查数据库加载的所有非默认值的初始化参数。

SQL> shutdown immediate 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。 SQL> startup ORACLE 例程已经启动。 Total System Global Area 776896512 bytes Fixed Size 2098776 bytes Variable Size 246077864 bytes Database Buffers 524288000 bytes Redo Buffers 4431872 bytes 数据库装载完毕。 数据库已经打开。 SQL> host bash-3.00$ tail -200 /data/oracle/diag/rdbms/test/test1/trace/alert_test1.log Sat Jun 13 15:20:03 2009 Stopping background process SMCO Stopping background process FBDA Shutting down instance: further logons disabled Shutting down archive processes Archiving is disabled . . . Sat Jun 13 15:20:19 2009 Instance shutdown complete Sat Jun 13 15:20:22 2009 Some alert messages have been suppressed because they were produced too early Starting ORACLE instance (normal) LICENSE_MAX_SESSION = 0 LICENSE_SESSIONS_WARNING = 0 Autotune of undo retention is turned on. LICENSE_MAX_USERS = 0 SYS auditing is disabled Starting up ORACLE RDBMS Version: 11.1.0.6.0. Using parameter settings in server-side pfile /data/oracle/product/11.1/database/dbs/inittest1.ora System parameters with non-default values: processes = 150 spfile = "+DATA/test/spfiletest.ora" sga_target = 740M 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" cluster_database = TRUE cluster_database_instances= 3 db_create_file_dest = "+DATA" thread = 1 undo_tablespace = "UNDOTBS1" undo_retention = 900 instance_number = 1 remote_login_passwordfile= "SHARED" db_domain = "" audit_file_dest = "/data/oracle/admin/test/adump" audit_trail = "DB" db_name = "test" open_cursors = 500 pga_aggregate_target = 245M diagnostic_dest = "/data/oracle" Cluster communication is configured to use the following interface(s) for this instance 172.0.2.62 cluster interconnect IPC version:Oracle UDP/IP (generic) IPC Vendor 1 proto 2 Sat Jun 13 15:20:23 2009 PMON started with pid=2, OS id=19138 Sat Jun 13 15:20:23 2009 VKTM started with pid=4, OS id=19140 at elevated priority VKTM running at (20)ms precision Sat Jun 13 15:20:24 2009 DIAG started with pid=6, OS id=19144 Sat Jun 13 15:20:24 2009 DBRM started with pid=8, OS id=19146 . . . Completed: ALTER DATABASE OPEN Sat Jun 13 15:20:41 2009 Starting background process CJQ0 Sat Jun 13 15:20:41 2009 CJQ0 started with pid=64, OS id=19434 Setting Resource Manager plan SCHEDULER[0x2C0E]:DEFAULT_MAINTENANCE_PLAN via scheduler window Setting Resource Manager plan DEFAULT_MAINTENANCE_PLAN via parameter

检查 alert 文件的方法不但可以获取当前实例所有非默认初始化参数的信息,还是初始化参数文件丢失后用来恢复初始化参数文件的一种方法。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-04-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏杨建荣的学习笔记

关于sysdba,sysoper,dba的区别(r3笔记第62天)

关于sysdba,sysoper,dba这些名词在工作中可能接触的比较多,如果接触的环境是服务器端的,sysdba可能是经常用到的。如果是数据库的维护工作,db...

2566
来自专栏cloudskyme

使用oracle的大数据工具ODCH访问HDFS数据文件

软件下载 Oracle Big Data Connectors:ODCH 下载地址: http://www.oracle.com/technetwork/bdc...

3378
来自专栏杨建荣的学习笔记

使用impdp不当导致的数据丢失问题(r5笔记第1天)

今天有个朋友问我们一个问题,说他在使用了impdp导入数据的时候,使用了TABLE_EXISTS_ACTION=REPLACE这个选项,结果现在数据都给覆盖了。...

3415
来自专栏用户2442861的专栏

基于bootstrap的web登陆实例

前情提要 之前已经搭好的springMVC+myBatis项目骨架,详情请看–>传送门。

2311
来自专栏乐沙弥的世界

Oracle 控制文件(CONTROLFILE)

为二进制文件,初始化大小由CREATE DATABASE指定,可以使用RMAN备份

992
来自专栏乐沙弥的世界

从ORA-27300,ORA-27301到ORA-00064

    最近由于session数量增加,需要调整session,也就是要调整process参数。看是比较简单的一个问题,却遭遇了ORA-27300,ORA-2...

641
来自专栏乐沙弥的世界

Oracle 联机重做日志文件(ONLINE LOG FILE)

--=========================================

702
来自专栏拂晓风起

Log4Net ,.net和SQL Server的完美结合

1065
来自专栏微信公众号:Java团长

Spring boot Mybatis 整合

7.项目不使用application.properties文件 而使用更加简洁的application.yml文件: 将原有的resource文件夹下的app...

1502
来自专栏乐沙弥的世界

Linux 5 下安装MySQL 5.6(RPM方式)

    MySQL在很多领域被广泛使用,尤其是很多互联网企业,诸如腾讯,阿里等等。本文主要介绍在Linux 5下通过rpm方式来安装Mysql,这是比较简单的一...

701

扫码关注云+社区