数据库初始化参数

-----------------------------------------------1.log_checkpoint_interval
增加日志文件尺寸和log_checkpoint_interval以提高速度。
如果想使大量的insert,update,delete操作速度更快,可以增大日志文件大小,并确保这些文件在最快的磁盘上。
oracle依赖于联机重做日志来记录事物处理,每次数据库中发生一次事务处理,联机重做日志文件中就会增加一个条目(如果增大分配给日志的空间就可以提高性能)没有提交的事务同样会生成日志条目。
因为他们生成撤销记录,这些撤销记录也写入到重做日志,可以在一个大的批处理事务中查看日志轮选。

一 确定重做日志文件的大小是否有问题
(1)批处理任务,该任务可能没有足够的完整重做空间来完成或因速度快。以致联机重做日志在归档到脱机重做日志之前即已切换(使用了所有重做日志,并且开始再次写入第一个重做日志)。联机重做日志
只有在归档后才可用被重写(在归档模式下)。因此,DML和ddl活动必须等待,直到有可用的联机日志。
在操作系统级别,按他们最近的更新日期和时间列出联机重做日志,判断他们切换的是否频繁。
查询v$log_history来得到最近100个日志交换记录.

增加联机重做日志的大小,就可为执行大型的insert,update,delete 操作的批处理任务提供足够的空间
较好的解决方法时增加联机重做日志的数目,这样就可以在有很频繁的日志切换(很小但却非常多的联机重做日志)时提供足够的空间。

长时间运行的任务,这些任务可能要花大量的时间来切换联机重做日志对于联机事物处理类型的环境来说,最好使用较小的重做日志,我的经验时每半个小时就切换一次联机重做日志。

二 确定日志文件的大小和检查点的时间间隔
select a.number,b.* from v$logfile a,v$log b where a.group#=b.group#;
使用alter database add logfile ...命令创建较大的日志,删除较小的日志
需注意的是:基于在init.ora文件中为checkpoint_interval指定的块数量,检查点的时间间隔会强加一个检查点,因此,如果增加联机重做日志文件的尺寸,则需确保也增加检查点的时间间隔。
切换日志文件命令alter system switch logfile;

log_checkpoint_interval检查点的频率(在OS中,大多数OS块时512字节)
1.在每个检查点中,oracle执行数据库写入,将所有脏块写入到数据库中的数据文件
2.如果在数据库缓存中有超过1/4的数据缓冲区是脏缓冲区,oracle也将执行检查点
3.在进行日志切换时,也会执行检查点
4.日志写入器(LGWR)也使用检查点的SCN更新控制文件和数据文件的SCN。

----------------------------------------- -----2.db_Cache_size

oracle通过最近最少使用(LRU)算法管理数据块缓冲区缓存。
数据库缓冲区缓存来自于磁盘的数据块,这些数据块有的满足最近执行的select语句,有的是通过DML语句改变或添加的已修改的块。
db_Cache_size中设定了用来存储和处理内存中数据的SGA区域的大小。当用户请求信息时,数据会被放入内存。
是否有足够的内存来存储数据,取决于是否分配给DB_CACHE_SIZE足够的内存(或分配给sga_target足够的内容,如果使用该参数的化)
v$db_Cache_advice可以帮助我们调整db_Cache_size

在内存中存储数据的oracle池,数据库缓冲区缓存有多个缓存区域。
(1)主缓冲区缓存 (由db_Cache_size定义)维护LRU列表并清除列表里的最旧缓冲区,对于使用数据库的默认数据块大小的对象。这是标准缓存。
(2)keep池     db_keep_cache_size
(3)recycle池  db_Recycle_cache_Size 可以对那些只偶尔访问的并不是很重要的大批数据使用recycle池(通常指无经验用户设置的临时用户表)

创建表,在访问数据时,即保存到keep池:create table emp(eid int ,ename varchar2(20)) storage(buffer_pool keep);
将表改存到recycle池:alter table emp storage(buffer_pool recycle)

块大小特定的缓存,oracle支持一个数据库中的多个块大小,必须为每个非默认的数据快大小创建一个缓存。

-----------------------------------------------3.db_block_size

设定db_block_size来反映数据读取量的大小。
db_block_size就是数据库建立时所指定的数据块的默认大小。利用初始参数db_block_size设定默认块大小的数据块缓存
每个表空间的块大小可以不同,必须给每个不同的数据块大小分配独立的缓冲区内存(如数据快大小8kb,想创建4kb大小表空间,必须首先为DB_4K_CACHE_SIZE设置一个值)
利用db_nk_cache_size 为其他数据快大小分配缓存

(1)db_block_size 越大,检索大量数据时效率越高。数据仓库(16kb或32kb)事物处理系统(8kb)
当进行那些要求最大I/O的全表扫描时,可以把db_block_size增大到8kb或16kb,或把db_file_multiblock_read_count=最大I/O大小/db_block_size,
这样就可以增大每次I/O时对内存中数据的读取量.
对于那些需在一次I/O读取大量数据的站点来说,应增大db_file_multiblock_read_count的值,把db_file_multiblock_read_count设得较高,对那些需要检索大量记录的数据仓库非常重要。
如果使用了db_file_multiblock_read_count后造成很多次全表扫描(因为优化器现在确定执行全表扫描非常迅速,所以决定执行多次)那么把optimizer_index_cost_ADT设在1--10之间,这样可以
强制性多次使用索引。
将数据块的大小增加1倍可将查询密集操作的性能改进多达50%,因为如果每个数据库块具有更多的行,数据操作期间就更可能产生块级别的争用,
为了解决这个问题,在表级别和索引级别增加freelists和initrans(反映块中期望的并发数量,最多255,具体取决块的可用空间)
(2)较小的块大小可以让您非常快地检索单个记录,并节省内存空间,较小的块大小可以提高事物并发能力,并减少日志文件的生成频率。
运行大量单个查询可能使用较小的块,但较大的块对这些系统中的热点数据还是有好处的

-----------------------------------------------4.share_pool_size

调整share_pool_size以优化性能
正确地调整share_pool_size可以同等可能共享sql语句,最先应该执行的的才子时解析该语句,如果查询没有被加载到内存中,
它也就无法请求把数据载入到内存中去,这就是为什么使用share_pool_size原因。

(1)数据库字典缓冲区:数据库字典是数据库的集合,由sys和system模式拥有,其中包含有关数据库,数据库结构,以及数据库用户的权限和角色的元数据。
数据字典缓存保存来自数据字典的缓存块。当执行sql语句时,oracle会多次使用到这个数据字典。
(2)库缓存:保存有关针对数据库运行的sql和pl/sql语句的信息。sql语句的执行计划和解析树也存储在库缓存中
如果库缓存过小,则将这性计划和解析树转储到缓存外面,这就需要频繁地将sql语句重新加载到库缓存中。
1使用存储过程来优化应用共享的sql区域
2如果两条语句不同,会解析并执行新的语句,并把新语句放入共享sql区域,除非把cursor_sharing设为similar或force。它还有一个值exact(精确地)
3设置足够大的share_pool_size以充分利用db_cache_Size,如果share_pool_size设得过低,就不能充分利用db_cache_size因为不可以执行未解析的语句
4可用内存来判断share_pool_size是否设置正确
5可以用x$ksmsp表来查看共享池的运行情况。这个表显示了:
free可用的空闲内存值
freeabl当前使用的可释放但不能清空的共享内存,以及为超出前共享池大小的大型语句所保留的内存。
6有选择地“固定”程序包到共享池中,启动数据库后立刻固定程序包在内存中,这样将增加内存中具有足够大连续空间的可能性。
execute dbms_shared_pool.keep('appowner.add','p')

把参数share_pool_size设定为db_cache_Size大小的50%--150%
用了大量存储过程,或oracle程序包,但只有有限物理内存  150%
没有任何存储过程,但有大量分配给db_cache_size的物理内存 10%--20%

-----------------------------------------------5.pga_aggregate_target

调整pga_aggregate_target以优化对内存的应用

pga_aggregate_target oracle想在所有会话中间分配的会话pga内存总量。使用pga_aggregate_target的好处是:可设定用户会话的总内存使用量来减少OS分页。
设置pga_aggregate_target时,必须将workarea_size_policy设置为auto(启动pga大小自动管理)
v$p_ga_target_advice和v$pga_target_advice_histogram视图就是帮助我们调整pga_aggregate_target的
pga_aggregate_target参数应该被设定成能维持estd_pga_Cache_hit_percentage大于95%的值。通过适当地设置该参数,可以将原本存储在磁盘中的更多数据存储在内存中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值