使用SQL来分析数据库参数(二)

拖延症的我终于接下来第二篇数据库参数的分析。

数据库的参数分析一直以来是调优中的重要一环,而感觉有时候却感觉找不到一些方法,我分析了一下,还是蛮有意思。数据库的参数分析基于下面的几个环境。

10gR2(10.2.0.5.0)

11gR2(11.2.0.4.0)

12cR1(12.1.0.2.0)

大体来说数据库的参数在Oracle中还有很大一部分没有开放,而在很多博客,技术分析中,总是会自然而然的分析到隐含参数,通过这些参数可以让我们一窥Oracle对的运行机制。

那么公开和未公开的比例有多大呢,保守的算法,不到10%的比例。我们来上两个图。

第一个图是数据库所有的参数在10g,11g,12c中的变化情况,可以大体感觉到参数随着版本是越来越多。

而开放的参数呢,就是我们通过v$parameter,show parameter能够查看到的,在10g,11g,12c中大体是这样的一个演进图。

这里你可以很明显看到一个拐点,在11g到12c的过程中,公开的参数相对在减少。

而怎么分析这些参数呢,能不能挖掘出一些重要的信息呢。

下面是参数情况的数据。在10g,11g,12c中大体是这样的一个比例,GENERAL的代表可以通过v$parameter查看到,为ALL的则代表是能够查看到的所有参数。

DB_VERSION           PARAM_TYPE             COUNT(*)
-------------------- -------------------- ----------
10.2.0.5.0           ALL                        1618
10.2.0.5.0           GENERAL                     259
11.2.0.4.0           ALL                        2912
11.2.0.4.0           GENERAL                     351
12.1.0.2.0           ALL                        3975
12.1.0.2.0           GENERAL                     380

我们来简单分析一下。

我抛出了下面的几个问题,如果没有对比数据,这些很难回答,而又了数据,这些就可以轻松应答。

    哪些参数是11g新增的?
    哪些是12c新增的?
    哪些11g的隐含参数,在12c正式引入?
    哪些是11g的隐含参数,在12c中被废弃?
    哪些是10g的隐含参数,在11g被废弃?
    哪些是10g的隐含参数,在11g被正式引入?
    哪些是10g默认的参数,在11g有所变化?
    哪些是11g默认的参数,在12c中有所变化?

要得到这些数据方法也很直白,就是查询视图数据转储。具体方法参见。使用SQL来分析数据库参数(一)(r10笔记第68天)

我们首先创建一个表来存放这些参数信息。

create table db_param (db_version varchar2(30),param_type
varchar2(10),name varchar2(80),value varchar(512),isdefault
varchar2(9),isdeprecated varchar2(5),description varchar2(255));

然后使用下面的控制文件导入数据

load data
infile *
append into table db_param_all
fields terminated by '|'
(db_version,param_type,name,value,isdefault,isdeprecated,description)

如果导入有个别的参数失败,也不必失望,哪些很可能是归档路径参数等。

数据得到了,我们来通过SQL进行简单分析。

1)哪些参数是11g新增的?

select name from db_param where db_version='11.2.0.4.0'  and
param_type='GENERAL' and name not in (select name from db_param where 
db_version='10.2.0.5.0' and param_type='GENERAL');

这样的参数有104个,我举几个例子。
log_archive_dest_31这个参数是归档相关的,在11g中进行了扩展,原本10g里面是10个,11g里面扩展了不少。

限于篇幅就不一一列举了,我举出几个说明即可。

ddl_lock_timeout
deferred_segment_creation
sec_max_failed_login_attempts
diagnostic_dest

2)那些是12c新增的?

select name from db_param where db_version='12.1.0.2.0'  and
param_type='GENERAL' and name not in (select name from db_param where 
db_version='11.2.0.4.0' and param_type='GENERAL')

这个输出结果只有31条,而纵观参数的变化,主要就是在两个方面,PDB和IMO,可见这两个特性是12c里深入骨髓了。

3)哪些11g的隐含参数,在12c正式引入?

select name from db_param where db_version='12.1.0.2.0'  and param_type='GENERAL'
and '_'||name  in
(select name from db_param where  db_version='11.2.0.4.0' and param_type='ALL'
minus
select name from db_param where  db_version='11.2.0.4.0' and param_type='GENERAL'
);

这些代表着那些隐含参数已经转正了,不过数量确实很少。

active_instance_count
db_block_buffers
parallel_degree_level
resource_manager_plan

4)哪些是11g的隐含参数,在12c中被废弃?

select name from db_param where db_version='12.1.0.2.0'  and param_type='GENERAL' and ISDEPRECATED='TRUE'
and '_'||name  in
(select name from db_param where  db_version='11.2.0.4.0' and param_type='ALL'
minus
select name from db_param where  db_version='11.2.0.4.0' and param_type='GENERAL'
)

经过一番查找,还真找到一个。

active_instance_count

5)哪些是10g的隐含参数,在11g被正式引入?

select name from db_param where db_version='11.2.0.4.0'  and param_type='GENERAL'  
and '_'||name  in
(select name from db_param where  db_version='10.2.0.5.0' and param_type='ALL'
minus
select name from db_param where  db_version='10.2.0.5.0' and param_type='GENERAL'
)涉及的参数只有

db_block_buffers

6)哪些是10g默认的参数,在11g有所变化?

这部分内容就尤其需要注意了,这些参数的设计在11g有了重大的变化

sga_max_size                      TRUE    FALSE
audit_trail                       FALSE   TRUE  
db_keep_cache_size                FALSE   TRUE  
db_recycle_cache_size             FALSE   TRUE  
db_writer_processes               TRUE    FALSE
log_archive_dest_3                FALSE   TRUE  
log_archive_dest_state_2          FALSE   TRUE  
log_archive_dest_state_3          FALSE   TRUE  
log_archive_min_succeed_dest      FALSE   TRUE  
fal_server                        FALSE   TRUE  
log_archive_trace                 FALSE   TRUE  
log_archive_config                FALSE   TRUE  
log_archive_format                FALSE   TRUE  
log_archive_max_processes         FALSE   TRUE  
archive_lag_target                FALSE   TRUE  
db_file_multiblock_read_count     TRUE    FALSE
standby_file_management           FALSE   TRUE  
undo_management                   TRUE    FALSE
undo_retention                    TRUE    FALSE
utl_file_dir                      TRUE    FALSE
job_queue_processes               TRUE    FALSE
background_dump_dest              TRUE    FALSE
user_dump_dest                    TRUE    FALSE
core_dump_dest                    TRUE    FALSE

7)哪些是11g默认的参数,在12c中有所变化?

select db_12c.name,db_11g.name,db_12c.isdefault,db_11g.isdefault--,db_12c.value,db_11g.value
from (select name,value,isdefault from db_param where db_version='12.1.0.2.0'  and param_type='GENERAL' ) db_12c,
(select name,value,isdefault from db_param where db_version='11.2.0.4.0'  and param_type='GENERAL'  ) db_11g
where db_12c.name=db_11g.name and db_12c.isdefault!=db_11g.isdefault;输出如下,大概有20个

standby_file_management      TRUE    FALSE
sec_case_sensitive_logon     FALSE   TRUE
local_listener               TRUE    FALSE
dg_broker_start              TRUE    FALSE
db_keep_cache_size           TRUE    FALSE
db_recycle_cache_size        TRUE    FALSE
log_archive_dest_1           TRUE    FALSE
log_archive_dest_state_2     TRUE    FALSE
log_archive_dest_state_3     TRUE    FALSE
log_archive_min_succeed_dest TRUE    FALSE
fal_server                   TRUE    FALSE
log_archive_trace            TRUE    FALSE
log_archive_config           TRUE    FALSE
log_archive_format           TRUE    FALSE
log_archive_max_processes    TRUE    FALSE
archive_lag_target           TRUE    FALSE

我重点想说的是两个参数standby_file_management 和sec_case_sensitive_logon,大小写登录敏感在11g是一个新特性,但是到了12c里面竟然参数被废弃了。

由此可见数据库中,我们只是一瞥其中的奥妙,里面还有很多很多的未知问题等待着我们。

时间: 2024-09-22 08:52:35

使用SQL来分析数据库参数(二)的相关文章

使用SQL来分析数据库参数(一)(r10笔记第68天)

对于10g,11g,12c中的参数变化有时候感觉就是使不上劲,因为参数好像很多,但是了解的又很少.隐含参数经常是碰到问题的时候关联思考发现有这么一个隐含参数,有些问题可能有意识还会主动去查查,如果恍惚一下就算了.如此一来,其实对于数据库参数而言我们很多人也还是一知半解. 怎么得到去分析数据库参数的变化情况呢,突然想到使用SQL来分析是个不错的方法.比如我现在希望解决下面的问题. 正式参数和隐含参数的数据情况 哪些参数是11g新增的? 那些是12c新增的? 哪些11g的隐含参数,在12c正式引入?

CloudDBA最佳实践-TOP SQL优化分析数据库性能问题

    云数据库CloudDBA诊断报告的TOP SQL优化是非常实用的功能,我们可以通过TOP SQL去诊断数据库中各种问题,比如性能出现下降,数据库压力出现波动,下面介绍两个线上生产案例.     一. 利用CloudDBA TOP SQL找出数据库规格升级而性能下降的元凶     最近在协助用户进行系统重构,RDS测试选型自然成为了本项目的一个重点,但是用户在测试不同规格的时候发现大规格的实例性能居然不如小规格,4C32G规格性能比8C64G规格高出10%,其性能监控也是非常的正常,4C3

MS SQL Server分析数据库的I/O性能

系统有的时候响应会明显很慢,有的时候可以是因为访问人数增加导致,有的时候可能因为数据库的磁盘I/O访问次数频繁导致.MS SQL Server提供了一些动态管理视图和函数供我们分析磁盘I/O性能. 1.sys.dm_io_virtual_file_stats SELECT  DB_NAME(vfs.database_id) AS database_name , vfs.database_id , vfs.FILE_ID , io_stall_read_ms / NULLIF(num_of_rea

参数-求助下关于VB6连接SQL Sever 2008数据库的问题

问题描述 求助下关于VB6连接SQL Sever 2008数据库的问题 Private Sub Borrow_Click() '单击"借书"按钮 Dim Readernumber, ISBN, BookID As String Dim in_ReaderID, in_ISBN, in_BookID, out_str '储存过程执行的参数 Dim ReturnValue As Integer '定义返回值变量 Dim Strs As String Readernumber = Reade

sql语句操作数据库,参数太多怎么办

问题描述 平时用sql语句操作数据库,可是现在因为数据库设计的原因,参数特别多,有时30多个参数,实在有点晕.有没有什么好办法. 解决方案 解决方案二:用数组或List<T>解决方案三:用List<T>,将这些参数值存储在一个类中,然后再将类的对象添加进List<T>中解决方案四:把它写成存储过程就好理解点解决方案五:检查参数是否一定要写的?可以用默值的.解决方案六:关键不是录入数据的问题,比如写入数据库如果使用insertinto语句或update语句这30多个参数就

SQL获取所有数据库名、表名、储存过程以及参数列表

原文:SQL获取所有数据库名.表名.储存过程以及参数列表1.获取所有用户名:SELECT name FROM Sysusers where status='2' and islogin='1'islogin='1'表示帐户islogin='0'表示角色status='2'表示用户帐户status='0'表示糸统帐户2.获取所有数据库名:SELECT Name FROM Master..SysDatabases ORDER BY Name3.获取所有表名SELECT Name FROM Datab

【MS SQL】数据库维护计划之数据库备份(二)

原文:[MS SQL]数据库维护计划之数据库备份(二) 上篇[MS SQL]数据库维护计划之数据库备份(一) 说了数据库备份的一些概念后,这篇以HRP_KQYY数据库备份为例,进行备份计划设置.   考虑备份的时间.性能和硬盘空间等因素,备份方案做下面设置: 1.每周日凌晨1:00执行数据库完成备份: 2.每周一至周六凌晨1:00执行数据库差异备份: 3.每天在00:00:00和23:59:59之间.每4小时执行数据库的日志备份.   建立3个文件夹: HRP_KQYY_diff:存放差异备份文

带参数的sql和不带参数的sql存储过程区别第1/2页_数据库其它

带参数的sql语句,在数据库端,执行的是 exec sp_executesql eg: exec sp_executesql N'insert into LCS_Sys_Model ([Model_GUID],[Model_Name],[Model_Desp],[Model_IsSys]) values ( @Model_GUID,@Model_Name,@Model_Desp,@Model_IsSys)', N'@Model_GUID uniqueidentifier,@Model_Name

C#存取SQL Server数据库之二:利用序列化进行类链表存取(ArrayList,varbina

创建项目 1.      添加一个名为RWTest的表到 SQL Server MYTest 数据库. 表字段设置如下:  a.      唯一标识字段名称为"ID",类型为Int.  b.       名称为"Description"的VarChar类型的字段,字段长度为50.  c.      名称为"Data" 的varbinary(Max) 类型的字段. 2.      启动 Visual Studio .NET, 并创建一个新的 Vis