首页 > 数据库 ><<oracle管理之道》读书笔记1

<<oracle管理之道》读书笔记1

时间:2022-12-05 10:04:09浏览次数:72  
标签:读书笔记 ADVICE CACHE DB 之道 sga SGA oracle SIZE


1 SGA_MAX_SIZE的设置参考
1G内存 500MB
2G 1G
4 2500MB
8 5GB
16gb 10gb


2 10G的时候,产生了sga_target参数,设置该参数后,就不用另外再设置其他参数了,大小会自动调节,
比如alter system set sga_target=1024M,重新启动数据库起效果


3 LOCK_SGA
为保证SGA都被锁在物理内存中,不用page in/page out,可以设置lock_sga,默认为false,设定为true时,可以
全部锁在物理内存中
alter system set lock_sga=true scope=spfile;
有些操作系统不支持内存锁

4 pre_page_sga
oracle实例启动时,不会将所有sga设置的内存大小加载到操作系统中去,只是预约内存,如果要实例一开始就加载到物理内存中去,
但启动时间长点,能达到性能好的状态
alter system set pre_page_sga=true scope=spfile;

5 利用USE_INDIRECT_DATA_BUFFERS突破32位的2G内存限制
但副作用大,参考:
​​​http://yangtingkun.itpub.net/post/468/492617 ​​​

http://yangtingkun.itpub.net/post/468/492653
需要注意,使用USE_INDIRECT_DATA_BUFFERS参数,不能在使用其他9i以后新增的内存控制参数了,比如SGA_TARGET、DB_CACHE_SIZE等等

,必须通过DB_BLOCK_BUFFERS参数来指定内存的容量。



6 v$sgainfo
10g才引入的,可以查询SGA中的信息
select name,round(bytes/1024/1024)||'MB' "size",resizeable from v$sgainfo;

7 v$sgastat
SGA的统计信息
查看内存快还剩下多少
select pool,name,bytes/1024/1024MB from v$sgastat where name='free memory'

8 v$sga_target_advice
当设置了sga_target后,oracle会收集SGA相关的统计信息,通过v$sga_target_advice展现
还要确保statsistics_level参数不能为basic

show parameter statistics_level;

SQL> desc v$sga_target_advice
Name Null? Type
----------------------------------------- -------- ----------------------------
SGA_SIZE NUMBER --sga大小,就是sga的期望值
SGA_SIZE_FACTOR NUMBER --sga大小因子,也就是与实际sga大小的百分比
ESTD_DB_TIME NUMBER --设置到sga_size后dbtime消耗的期望变化
ESTD_DB_TIME_FACTOR NUMBER --dbtime消耗的变化因子,也就是体现出改变sga大小后性能的变化

百分比
ESTD_PHYSICAL_READS NUMBER --物理读的百分比
--SGA_SIZE_FACTOR为1代表的是当前实际sga大小。
SQL> select * from v$sga_target_advice order by sga_size;


9 数据缓冲区
1. 数据库高速缓冲区的大小设置

数据库高速缓冲区大小的设置有两种方式:

第一种方式是直接在参数文件内设置DB_CACHE_SIZE,DB_CACHE_SIZE参数是9i之后的版本才有的参数,其默认值为48 MB。

第二种方式是利用DB_BLOCK_BUFFERS和DB_BLOCK_SIZE这两个参数,DB_BLOCK_BUFFERS指定了数据库高速缓冲区中块的数量,DB_BLOCK_SIZE

则指定了每个块的大小。因此,数据库高速缓冲区的大小就等于DB_BLOCK_ BUFFERS×DB_BLOCK_SIZE。9i之后的版本,块的大小的默认值是

8 KB。

提示

DB_CACHE_SIZE和DB_BLOCK_BUFFERS是不能同时设置的,否则当实例启动时会有错误信息。

DB_CACHE_SIZE是可以动态修改的参数,修改后实例不需要重启。

按照一般经验,联机事务处理系统(On-line Transaction Processing,OLTP)中DB_CACHE_SIZE的大小可设置为SGA_MAX_SIZE/2到

SGA_MAX_SIZE×2/3之间,但还是需要根据实际的情况进行调整。
2. 清除数据库高速缓冲区

之前提到过,Dirty Buffer是指存放已修改,但尚未写入数据库的数据。如果数据库高速缓冲区中存在大量的Dirty Buffer,那么,就可能

导致整体性能下降,此时可以使用人工的方式将Dirty Buffer整批地写回到数据文件内。

在Oracle 9i版本中,可以使用以下的语句。

alter system set events = 'immediate trace name flush_cache';
另外,9i版本设置事件的方式可以是针对系统全部的,也可以是针对会话的(即,将该会话造成的Dirty Buffer写回)。

10g之后的版本(包含10g),可以使用以下方式。

alter system flush buffer_cache;
提示

Oracle 9i版本的方式可以针对整个系统进行Flush,也可以针对会话进行,将会话内的Dirty Buffer写回到数据文件内。

Oracle 9i版本的方式在Oracle 10g之后依然可以使用。

3 数据库高速缓冲区的分区管理
回收池(Recycle Pool)中:放到回收池中的数据,只要空间不够用,它们马上就会被释放出来。被放在回收池中的数据块不会被反复使

用。也就是说,这些数据块只在事务(Transaction)还存在时才会被用到,一旦事务结束,就会被释放出来。回收池的大小最好是默认池的

1/2。

保留池(Keep Pool):当数据只要放到保留池里时,就代表这个数据是需要常常被重复使用的,数据如果已经被放在保留池里,则数据会尽

可能地被放在里面。保留池的大小应该是默认池的10%

默认池(Default Pool):当没有指定时,数据就会放在默认池中,也就是说,放在默认池的数据利用的是LRU机制。

10 数据缓冲区的重要参数
1)DB_CACHE_ADVICE
从Oracle 9i版本开始,Oracle提供了一些自动检测性能的工具,用于提高系统性能。DB_CACHE_ADVICE就是其中一种,设置

DB_CACHE_ADVICE的作用就是在系统运行的过程中,通过监控相关的统计数据,为DBA提供数据库高速缓冲区的相关信息,以做最佳的调整。

DB_CACHE_ADVICE的设置有三种方式:

DB_CACHE_ADVICE=OFF
DB_CACHE_ADVICE=ON
DB_CACHE_ADVICE=READY
OFF代表不打开DB_CACHE_ADVICE。

DB_CACHE_ADVICE=ON表示开启DB_CACHE_ADVICE,但要注意,一旦开启(即为ON)时,Oracle会从共享池中获取一些内存空间,所以有可能会

影响性能。

DB_CACHE_ADVICE=READY表示在下次打开实例时,会预先分配足够的内存,通常建议使用此方式。

DB_CACHE_ADVICE可以动态设置,也就是使用ALTER SYSTEM SET…来修改,并且当DB_CACHE_ADVICE开启后,会将统计数据存储到V

$DB_CACHE_ADVICE内。

2) 2. DB_nK_CACHE_SIZE

Oracle 9i以后的版本可以同时支持不同大小的数据块(2 KB、4 KB、8 KB、16 KB及32 KB等5种),除了DB_BLOCK_SIZE之外,还可以设

置其他的大小,并且可以为不同尺寸的数据块指定不同大小的数据库高速缓冲区。而DB_BLOCK_SIZE的参数设置,称为标准数据块(Standard

Block),区间在2 KB至32 KB之间。在9i以后,除了系统表空间(System Tablespace)和临时表空间(Temporary Tablespace)必须使用标准数

据块外,所有其他表空间最多可以指定4种不同的标准数据块大小。

当设置好DB_nK_CACHE_SIZE之后,在配置表空间中可通过BLOCKSIZE参数来指定数据块大小,如以下示例所示。

在参数文件内设置DB_nK_CACHE_SIZE的方法如下:
db_16k_cache_size=16M
此参数也可以动态设置,语句示例如下
ALTER SYSTEM SET db_16k_cache_size = 16 SCOPE=MEMORY;
ALTER SYSTEM SET db_32k_cache_size = 32 SCOPE=MEMORY;
ALTER SYSTEM SET db_4k_cache_size = 4 SCOPE=MEMORY;
ALTER SYSTEM SET db_8k_cache_size = 8 SCOPE=MEMORY;
提示

不同大小的数据块不能相互混合存储。一个16 K的表空间必须通过DB_16K_CACHE_ SIZE来指定数据库高速缓冲区,不可以用4 K去存储。

如果DB_BLOCK_SIZE设置为8 K,就不可以再设置DB_8K_CACHE_SIZE 参数。

标签:读书笔记,ADVICE,CACHE,DB,之道,sga,SGA,oracle,SIZE
From: https://blog.51cto.com/u_14230175/5911334

相关文章

  • [转]【读书笔记】.Net并行编程高级教程--Parallel - stoneniqiu - 博客园
    一直觉得自己对并发了解不够深入,特别是看了《代码整洁之道》觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准。而且在《失控》这本书中也多次提到并发,......
  • oracle 10.2.0.1 64bit升级到10.2.0.4 64bit
    文档课题:oracle10.2.0.164bit升级到10.2.0.464bit.数据库:oracle10.2.0.164位系统:oel5.1164位1、前期准备1.1、关闭实例关闭需要升级的实例.SQL>shutdownimmediateD......
  • OEL 5.11安装oracle 10.2.0.1
    文档课题:OEL5.11安装oracle10.2.0.1系统:oel5.1164位数据库:oracle10.2.0.164位软件包名称:10201_database_linux_x86_64.cpio.gz1、安装准备1.1、系统信息[root@leo-10g......
  • ORACLE查看dba_hist_snapshot有快照,但是生成AWR报告时只有一份快照
    一、问题描述查看dba_hist_snapshot表有很多快照信息,且是每个小时生成一份,但是执行@?/rdbms/admin/awrrpt.sql脚本时只显示有一份快照127,且显示的时间是2050年的,想起之前......
  • 深刻理解JAVA并发中的有序性问题和解决之道
    欢迎关注专栏【JAVA并发】更多技术干活尽在个人公众号——JAVA旭阳问题Java并发情况下总是会遇到各种意向不到的问题,比如下面的代码:intnum=0;booleanready=......
  • oracle19c 修改字符集
    环境:centos7.6oracle19c修改过程:shutdownimmediate;startupmount;ALTERSYSTEMENABLERESTRICTEDSESSION;ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;ALTE......
  • 《Hive性能调优实战》读书笔记
    很不错的一本书。章节划分清晰明了,可根据个人需要读相应的章节。Hive各个方面的知识体系都有涉及。可作为工具书,常读常新,值得翻阅。第2章Hive问题排查与调优思路优化方法PL......
  • OraclePractice
    Oracle​第1章基本SQL-SELECT语句对于日期型数据,做*,/运算不合法包含空值的数学表达式的值都为空值别名使用双引号!oracle中连接字符串使用"||",......
  • 《程序员修炼之道:从小工到大家》读后感(八)
    12月份的阅读笔记这个学期,通过阅读《程序员修炼之道:从小工到大家》这本书,确实让我感悟了许多程序和编程有关的知识和道理,让我对程序的固有认知也产生了些许变化。这本书......
  • linux运维之道学习笔记
    linux常用命令1、find命令   find/"*.log"查找/目录下.log结尾的档案   find/-mtime-3查找/目录下三天内被修改的档案   find/-mtime+4 查......