`

oracle学习小结10

阅读更多

  1  打开统计日志信息

      set autot on stat

2  ORACLE的内存分配大致小结
    SGA的查看:
     select * from v$sga;

    (注意oracle在unix下是多进程的,在windows下是单进程的)
    查看系统实际分配的各类pool
    select * from v$sgastat;

     sga大小估计:
   查看UGA大小

     show parameter area_size
    windows上存在32bit的限制,如AIX、HP UNIX 等有明确的64BIT OS and ORACLE的版本,32bit oracle可以装在64bit os 上,64  bit oracle不能装在32 bit  OS上

不管oracle是32 bit ORACLE还是 64  bit 的,假定应用存在没有很好的使用bind  var 的情况,也不能设置 shared_pool_size 过大,通常应该控制在200M--300M,如果是 ORACLE ERP 一类的使用了很多存储过程函数、包 ,或者很大的系统,可以考虑增大shared_pool_size ,但是如果超过500M可能是危险的,达到1G可能会造成CPU的严重负担,系统甚至瘫痪。所以shared_pool_size 如果超过300M还命中率不高,那么应该从应用上找原因而不是一味的增加内存,shared_pool_size 过大主要增加了管理负担和latch 的开销。

log_buffer :  128K ----  1M 之间通常问题不大,不应该太大

large_pool_size :如果不设置MTS,通常在 RMAN 、OPQ 会使用到,但是在10M ---  50M 应该差不多了。假如设置 MTS,则由于 UGA 放到large_pool_size 的缘故,这个时候依据 session最大数量和 sort_ares_size 等参数设置,必须增大large_pool_size 的设置,可以考虑为  session *  (sort_area_size + 2M)。这里要提醒一点,不是必须使用MTS,我们都不主张使用MTS,尤其同时在线用户数小于500的情况下。

java_pool_size : 若不使用java,给30M通常就够了

data  buffer ,在做了前面的设置后,凡可以提供给oracle的内存,都应该给data buffer = (db_block_size * db_block_buffers)
在9i 中可以是 db_cache_size

还有2个重要参数我们需要注意

sort_area_size and  hash_area_size
这两个参数在非MTS下都是属于PGA ,不属于SGA,是为每个session单独分配的,在我们的服务器上除了OS + SGA,一定要考虑这两部分

(****)  : OS 使用内存+  SGA + session*(sort_area_size + hash_area_size + 2M) < 总物理RAM  为好


这样归结过来,假定oracle是 32 bit ,服务器RAM大于2G ,注意你的PGA的情况,,则建议

shared_pool_size + data buffer +large_pool_size + java_pool_size < 1.6G


再具体化,注意满足上面(****) 的原则的基础上可以参考如下设置
如果512M RAM
建议 shared_pool_size = 50M, data buffer = 200M

如果1G RAM  
shared_pool_size = 100M , data  buffer = 500M

如果2G
shared_pool_size = 150M ,data  buffer = 1.2G

物理内存再大已经跟参数没有关系了


假定64  bit  ORACLE

内存4G
shared_pool_size =  200M , data  buffer = 2.5G

内存8G
shared_pool_size = 300M , data  buffer = 5G

内存 12G
shared_pool_size = 300M-----800M , data  buffer = 8G

  其中shared_pool_size主要是放已经执行过的SQL语句,是SQL语句的缓冲池

3 内存参数的调整
    数据缓冲区命中率
SQL> select value from v$sysstat where name ='physical reads';
VALUE
----------
14764
SQL> select value from v$sysstat where name ='physical reads direct';
VALUE
----------
50
SQL> select value from v$sysstat where name ='physical reads direct (lob)';
VALUE
----------
0
SQL> select value from v$sysstat where name ='consistent gets';
VALUE
----------
167763
SQL> select value from v$sysstat where name = 'db block gets';
VALUE
----------
14305
这里命中率的计算应该是
令 x = physical reads direct + physical reads direct (lob)
命中率 =100 - ( physical reads - x) / (consistent gets + db block gets - x)*100
通常如果发现命中率低于90%,则应该调整应用可可以考虑是否增大数据缓冲区
共享池的命中率
SQL> select sum(pinhits)/sum(pins)*100 "hit radio" from v$librarycache;
hit radio
----------
99.809291
假如共享池的命中率低于95%,就要考虑调整应用(通常是没使用bind var )或者增加内存
关于排序部分
SQL> select name,value from v$sysstat where name like '%sort%';
NAME VALUE
---------------------------------------------------------------- ----------
sorts (memory) 67935
sorts (disk) 1
sorts (rows) 7070
SQL>
假如我们发现sorts (disk)/ (sorts (memory)+ sorts (disk))的比例过高,则通常意味着
sort_area_size 部分内存较小,可考虑调整相应的参数。
关于log_buffer
SQL> select name,value from v$sysstat
2 where name in('redo entries','redo buffer allocation retries');
NAME VALUE
---------------------------------------------------------------- ----------
redo entries 2325719
redo buffer allocation retries 10
假如 redo buffer allocation retries/ redo entries 的比例超过1%我们就可以考虑增大log_buffer
通常来说,内存的调整的焦点就集中在这几个方面,更多更详细的内容,建议从statspack
入手来一步一步调整。最后关于内存的调整,再强调这一点,一定要结合操作系统来衡量,
任何理论都必须要实践来检验。在操作系统中观察 page in/out 状况,发现问题严重,应
该考虑调小SGA。

 

 

4 在调优时,往往要这样做,就是要查出用户的哪条SQL语句慢了,因为一用户发出了很多个事务,每个事务又包含了很多语句,查询的步骤如下
  1)select addr,ses_addr from v$transcation;

        查看其addr    ses_addr

       比如      592bae00
      通过ses_addr到session表中去查看由哪个用户发起的transcation,v$session.saddr=v$transcation.ses_addr

  2)   select saddr,sid,username,status,paddr from v$session;

      查出
                 saddr     sid    paddr

                   592bae00      12     692906e8

 

   3)   因为 v$process.addr=v$session.paddr,所以
         select addr,spid from v$process

    查出    addr    spid

                 592906E8     3797

   4 )  然后用ps -ef |grep 3797 就可以知道起其客户端连接上来的进程号,

     在windows端,用netstat -anp |more
       就可知道具体由客户端哪个程序连上来
  5) select sid,pre_sql_addr,username,status from v$session;

          查出最近发起的sql

               sid   prev_sql    username

                12   5ab0f3ac    hr

   6)  select sql_text,address from v$sql where address='5ab0f3ac';

     就查出该SQL了

 

  
  

分享到:
评论

相关推荐

    oracle 学习心得与总结

    以下是我对Oracle学习的一些心得和总结,主要聚焦于数据库对象,尤其是表及其约束。 1. **数据库对象**: 数据库对象是Oracle中的基本组成部分,包括表、视图、索引、存储过程、函数、触发器等。这些对象共同构成...

    oracle学习总结.docx

    Oracle 学习总结 Oracle 是一种关系数据库管理系统,由 Larry Ellison 和 Bob Miner 于 1977 年创立。它是一种对象关系数据库管理系统,支持多种编程语言,包括 Java、Python、C++ 等。 一、创建 Oracle 数据库...

    oracle学习总结(适合刚学习oracle的人)

    本文将根据"oracle学习总结(适合刚学习oracle的人)"这一主题,深入探讨Oracle数据库的基础知识,帮助初学者建立起对Oracle的基本理解。 1. **Oracle简介**:Oracle数据库是由美国甲骨文公司开发的一款产品,它...

    oracle学习心得总结

    ### Oracle学习心得总结 在IT领域中,Oracle数据库因其强大的功能和广泛的适用性而备受青睐。对于初学者而言,掌握Oracle的基本操作是非常重要的一步。本文将根据提供的文档内容,总结和扩展Oracle数据库的基础知识...

    oracle学习总结

    ### Oracle学习总结 #### SQL基础语法 1. **数据定义语言(DDL)** - **创建表**:`CREATE TABLE table_name (column_name datatype constraints,...);` - `NOT NULL`:指定列不允许有空值。 - `UNIQUE`:指定列...

    Oracle 学习总结

    下面将对Oracle数据库的学习进行总结,并重点阐述触发器的概念与应用。 1. Oracle数据库入门:首先,Oracle数据库的安装和配置是基础环节。接着,学习使用SQL语言进行数据操作,这是Oracle数据库管理与开发的核心...

    oracle学习资料,我搜集和总结的大量oracle学习资源

    本压缩包中包含的“Oracle学习资料”是一份综合性的资源集合,旨在为系统管理员和初学者提供深入理解Oracle数据库的路径。 首先,Oracle数据库的基础知识是学习的起点。这包括了解SQL(结构化查询语言),它是与...

    Oracle自学(学习)材料 (共18章 偏理论一点)

    10-17 自动回滚管理回滚配额 10-18 获取回滚段信息 10-19 小结 10-20 11 管理表 目标 11-2 储存用户数据 11-3 Oracle 数据类型 11-5 ROWID 格式 11-8 行的结构 11-10 创建一张表 11-11 创建临时表 11-13 创建表:...

    ORACLE数据库学习总结资料.pdf

    Oracle数据库学习总结资料.pdf 是一份关于 Oracle 数据库的学习总结资料,涵盖了 Oracle 数据库的各个方面,包括 Oracle 的简介、简单查询、标量函数和算数运算、多表查询、列函数和分组、子查询、表的更新操作、表...

    Oracle学习笔记(Oracle知识点总结)

    Oracle知识点总结,适合初学者,平时多联系,放在手机上,当做电子书来看。

    Oracle学习笔记总结

    记录Oracle学习过程中的各种笔记,比较实用的总结.可以查询常用的Oracle信息

    oracle环境变量学习小结.

    ### Oracle环境变量学习小结 #### 一、Oracle环境变量的重要性及作用 Oracle数据库系统作为全球最流行的数据库管理系统之一,在企业级应用中占有极其重要的地位。为了更好地管理和配置Oracle数据库,Oracle利用了...

    oracle学习日志总结

    本文将对“Oracle学习日志总结”中的关键知识点进行深入探讨,帮助读者理解和优化Oracle数据库的使用。 1. **共享SQL和参数化查询**:共享SQL是指在数据库中重用已解析的SQL语句,减少了解析时间,提高了性能。使用...

    Oracle非常全的学习总结

    Oracle数据库系统是全球广泛使用的大型关系型数据库管理系统之一,它在企业级应用中扮演着核心角色。本学习总结涵盖了Oracle的入门知识、全套命令及SQL语法,...希望这两个资料能为你的Oracle学习之旅提供坚实的基础。

    Oracle数据库学习日记-实用性最强的Oracle学习总结.docx

    ### Oracle数据库学习知识点详解 #### 一、基本使用 ##### 1.1 常用命令 **1.1.1 Connect/Disconnect数据库连接命令** - **用途:** 连接或断开与Oracle数据库的连接。 - **语法示例:** - `sqlplus username/...

Global site tag (gtag.js) - Google Analytics