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

杨廷琨(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 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

启用用户进程跟踪

仅仅需要标识该会话并为该会话启用跟踪(专用模式为一对一模式,即一个用户进程对应一个服务器进程)

692
来自专栏运维

Puppet3.1 Master Client安装测试

Linux master.inno.com 2.6.32-279.22.1.el6.centos.plus.x86_64 #1 SMP Wed Feb 6 05...

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

手工创建/删除数据库的步骤

今天和大家分享下数据库的创建和删除的步骤,里面有很多细节需要大家考虑。创建数据库不只是一个create database语句。删除数据库 drop databa...

3046
来自专栏乐沙弥的世界

MHA masterha_check_repl 检测过程

    MHA部署及配置是否OK,我们可以借助于MHA自带的masterha_check_ssh以及masterha_check_repl脚本来检测。maste...

632
来自专栏乐沙弥的世界

MyCAT 日志文件描述

    MyCat是一个基于cobar兴起的开源数据库中间件系统,当前深受广大开源爱好者的追捧以及DBA粉丝们的广泛研究。主要是面对解决高并发,高负载,海量存...

742
来自专栏乐沙弥的世界

dbms_stats 导入导出 schema 级别统计信息

    在使用CBO优化器模式的Oracle数据库中,统计信息是CBO生成最佳执行计划的重要依据。这些统计信息通常包括列级、表级、索引、系统级别的统计信息等。所...

672
来自专栏决胜机器学习

《Redis设计与实现》读书笔记(三十六) ——Redis 慢查询日志实现

《Redis设计与实现》读书笔记(三十六) ——Redis 慢查询日志实现 (原创内容,转载请注明来源,谢谢) 一、基本功能 redis的慢查询日志,用于记录执...

3064
来自专栏乐沙弥的世界

Percona XtraDB Cluster添加仲裁节点

Galera Arbitrator是Percona XtraDB集群的成员,用于投票,以防您拥有少量服务器(通常为两个)并且不希望添加更多资源。Galera仲裁...

1082
来自专栏乐沙弥的世界

Oralce OMF 功能详解

OMF,全称是Oracle_Managed Files,即Oracle文件管理,使用OMF可以简化管理员的管理工作,不用指定文件的名字、大小、路径,其名字,大...

622
来自专栏乐沙弥的世界

MySQL PXC 5.7 invalid user‘@MYSQLD_USER@’

最近的PXC 5.7启动的时候收到一个无效用户的提示,invalid user ‘@MYSQLD_USER@’,这个问题还真是头一次碰到,而且这个MYSQLD_...

893

扫码关注云+社区