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 ,