日期:2014-05-16  浏览次数:20554 次

oracle 学习小结3
1  数据字典存放数据库的元数据,包括 内部rdbms(x$)表,数据字典表,
动态性能视图和数据字典视图


2 内部RDBMS(X$)表
   为加密的表,跟踪内部数据库信息,
可以select kvittag,kvitval,kvitdsc from x$kvit
看一些内部参数

3 数据字典表
   保存表,索引,约束等数据库结构的信息,以 $结尾,sql.bsq文件来创建;
其中dba_objects中的object_id和data_object_id中,object_id为逻辑号,一旦分配
就不会改变,data_object_i为物理号,有可能发生改变。

4 静态数据字典视图,不能直接被修改,分三类
USER_类:包含了用户所有的相关信息,ALL_类,DBA_类(需要select any table
权限)

5 常见视图
  1)DICT
      返回当前用户可以访问的所有数据字典视图
  select table_name from dict where table_name like '%TABLES$%';
   返回和TABLES相关的视图

  2)DICT_COLUMNS
    记录了字典视图列及相关说明
3)obj 为user_objects建立的同义词,获得用户所拥有的对象信息
    select object_name,object_type from obj;

6 动态视图
   oracle创建GV$和v$视图,GV$ 满足RAC需要。通过访问v$对象,并不是访问视图,而是指向v_$视图的同义词;oracle访问时,先

访问view优先,再访问同义词

7 访问v$parameter时,访问的是同义词

8 PGA:不需要LATCH保护,非共享内存。PGA分为固定PGA和可变PGA(其空间分配与使用
时可以变化)
  可变PGA分为会话内存(存放会话的登陆信息),私有的SQL区包含绑定变量信息(对于
专用服务器模式,部分内存在PGA中分配,对于共享服务器模式,内存在SGA分配)
  一个私有SQL区在cursor打开分配,当执行结束时游标关闭释放。
  私有SQL区域分为永久区域(包含变量绑定信息),运行时区域(存放SQL语句运行时
所需要的信息,在执行请求时首先创建)
  UGA(User Global Area,用户全局区,由用户会话数据,游标状态和索引区组成),
UGA是基于会话的。
  通过V$PGASTAT视图,可以查询PGA累计释放回OS的内存空间
   select name,value from v$pgastat where name like '%OS';

9 自动化PGA管理有如下几个参数
    PGA_AGGREGATE_TARGET:该参数指定所有session能用的PGA的最大内存
   workarea_size_policy:用于指定开关PGA内存自动管理功能,AUTO时,表示
自动PGA管理功能。mannul为手工。

10
   PGA_AGGREGATE_TARGET参数的设置,oracle提供的方案
   对于 OLTP系统,需要保留20%物理内存给操作系统,剩余80%给oracle,而ORACLE使用的内存中,建议PGA占20%。

11 根据某个oracle进程,看其oracle 进程PGA使用内存情况
   select * from v$process where spid=xxxxx;

查看PGA内存消耗在什么地方:
   select p.PROGRAM,p.pid,pm.category,pm.allocated,pm.used,pm.max_allocated

from v$process p,v$process_memory pm

where p.PID=pm.pid and p.SPID=xxxx;

    想要分析当前 PGA 时可以通过以下 SQL 产生一个当前系统的 PGA 指标:

select name,

       value,

       100 *

        (value / decode((select sum(value)

                         from v$sysstat

                        where name like 'workarea executions%'),

                       0,

                       NULL,

                       (select sum(value)

                           from v$sysstat

                         where name like 'workarea executions%'))) pct

  from v$sysstat

  where name like 'workarea executions%';



12 PGA自动管理原理
    Oracle 中对自动 PGA 管理采用反馈环( FeedBack Loop )算法来实现。当进程开始 SQL 执行时,首先通过 Local Memory

Manager 注册一个 ActiveWorkArea Profile ,