使用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里面竟然参数被废弃了。

由此可见数据库中,我们只是一瞥其中的奥妙,里面还有很多很多的未知问题等待着我们。
目录
相关文章
|
9天前
|
SQL DataWorks 关系型数据库
DataWorks产品使用合集之数据集成时源头提供数据库自定义函数调用返回数据,数据源端是否可以写自定义SQL实现
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
5天前
|
SQL 存储 数据库
性能分析工具如Sql explain、show profile和mysqlsla在数据库性能优化中有什么作用
性能分析工具如Sql explain、show profile和mysqlsla在数据库性能优化中有什么作用
|
12天前
|
SQL Oracle 关系型数据库
|
11天前
|
SQL Oracle 关系型数据库
MySQL、SQL Server和Oracle数据库安装部署教程
数据库的安装部署教程因不同的数据库管理系统(DBMS)而异,以下将以MySQL、SQL Server和Oracle为例,分别概述其安装部署的基本步骤。请注意,由于软件版本和操作系统的不同,具体步骤可能会有所变化。
45 3
|
16天前
|
SQL 监控 安全
数据库安全:SQL注入防御实践
【7月更文挑战第11天】SQL注入攻击作为一种常见的网络攻击手段,对数据库的安全性和业务稳定构成了严重威胁。为了有效防御SQL注入攻击,开发者和数据库管理员应采取一系列实践措施,包括输入验证与过滤、使用参数化查询、限制数据库用户权限、使用Web应用程序防火墙、定期更新和打补丁、实施实时监控和审计以及使用HTTPS协议等。通过这些措施的实施,可以显著提升数据库的安全性,降低遭受SQL注入攻击的风险。同时,开发者和数据库管理员应持续关注新的安全威胁和防御技术,不断提升自身的安全防护能力。
|
16天前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
27 0
|
8月前
|
SQL Oracle 关系型数据库
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
183 0
|
SQL 程序员 数据库
【python】连接sql server数据库,并实现简单的增删改查(1)
Python编程语言越来越受到大家的喜爱,本篇文章就从链接微软数据库进行增删改查操作的讲解
589 0
|
1月前
|
SQL IDE Java
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
1月前
|
SQL 关系型数据库 MySQL
sql连接mysql数据库
要使用SQL来连接MySQL数据库,你实际上需要使用一种编程语言(如Python、Java、PHP等)配合相应的数据库驱动或库。下面,我将为你提供几个常见编程语言的示例,说明如何连接到MySQL数据库