2008-8-27 日数据库日志 系统全局区<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
============================
模式对象
1. 表
2. 视图
3. 聚簇 聚簇的两个表公用一个数据段
4. 索引:
5. 序列生成器:
6. 同义词
7. 哈希: 哈希是建立快速查询可以选择的一种方法,要使用哈希要建立哈希聚簇。
8. 程序单元 指存储过程、函数 和 包。包也是存储在数据库中的一种对象,使用包可以提高程序的运行效率。
9. 数据库链:是分布式数据库中的一种对象,通过数据库链可以存取远程数据库服务器中的数据,完成数据的远程复制。
几条常用查询数据库中对象的语句,通过DBA_OBJECT_SIZE数据字典查询对象的大小
SELECT NAME,TYPE,SOURCE_SIZE,PARSED_SIZE,CODE_SIZE FROM DBA_OBJECT_SIZE WHERE OWNER=’SCOTT’;
查询数据库中所有对象的信息
SELECT COUNT(NAME) num_instances,
type,
sum(source_size) source_size,
sum(parsed_size) parsed_size,
sum(code_size) code_size,
sum(error_size) error_size,
sum(source_size) + sum(parsed_size) + sum(code_size) +
sum(error_size) size_required
from dba_object_size
group by type;
NUM_INSTANCES TYPE SOURCE_SIZE PARSED_SIZE CODE_SIZE ERROR_SIZE SIZE_REQUIRED
------------- ------------- ----------- ----------- ---------- ---------- -------------
77 SEQUENCE 0 21269 0 0 21269
306 JAVA DATA 0 0 9061460 0 9061460
80 PROCEDURE 195836 79137 265364 0 540337
843 PACKAGE 5579302 5597328 2592933 0 13769563
787 PACKAGE BODY 16986950 0 20736955 0 37723905
173 TYPE BODY 329124 13013 922380 0 1264517
770 JAVA RESOURCE 0 0 10739625 0 10739625
170 TRIGGER 202051 0 176815 0 378866
264 FUNCTION 91501 163614 286756 0 541871
16417 JAVA CLASS 0 0 79741212 0 79741212
1859 TYPE 900377 1438090 587281 0 2925748
11 rows selected
1. 数据缓冲区
a) 标准数据块用户系统表空间和默认表空间由DB_BLOCK_SIZE参数决定 其他表空间可以使用非标准表空间数据块,这些数据块由参数DB_NK_CACHE_SIZE 决定
i. alter system set db_2k_cache_size = 10 m
b) 缓冲区命中率查询(要求在95%以上)
c) 用这个程序查询缓冲区命中率
select a.value + b.value "logical_reads",
c.value "phys_reads",
round(100 * ((a.value + b.value) - c.value) / (a.value + b.value)) "buffer hit ratio"
from v$sysstat a, v$sysstat b, v$sysstat c
where a.statistic# = 38
and b.statistic# = 39
and c.statistic# = 40
或者通过以下方法
select name,value
from v$sysstat
where name in ( 'session logical reads',
'physical reads',
'physical reads direct',
'physical reads direct (lob)');
得到结果
1 session logical reads 13847549 为读的总量
2 physical reads 215617 数据文件读
3 physical reads direct 168 从缓冲区读
4 physical reads direct (lob) 为从缓冲区读
命中率 = 1-( physical reads- physical reads direct- physical reads direct)/ session logical reads=98.5%
2 日志缓冲区,日志缓冲区用于存储数据库的修改信息,,大小有参数LOG_BUFFER
SQL> SHOW PARAMETER LOG_BUFFER;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_buffer integer 7028736
可以通过V$LATCH 来查看日志缓冲区的失败率 ,失败率应该小于1%
SELECT NAME,
GETS,
MISSES,
IMMEDIATE_GETS,
IMMEDIATE_MISSES,
DECODE(GETS, 0, 0, MISSES / GETS * 100) RATIO1,
DECODE(IMMEDIATE_GETS + IMMEDIATE_MISSES,
0,
0,
IMMEDIATE_MISSES / (IMMEDIATE_GETS + IMMEDIATE_MISSES) * 100) RATIO2
FROM V$LATCH
WHERE NAME like 'redo%'
此外可以查询用户进程等待日志缓冲区的次数通过数据字段v$sysstat
select * from v$sysstat where name like 'redo buffer%'
value 为次数
3 共享池
共享池是对SQL PLSQL 程序进行语法分析,编译 执行的内存区域,共享池包括库缓冲区,数据字典缓冲区,用户全局区。
select name,value from v$parameter where name like ‘%size’;
show parameter shared_pool_size;
查看共享池中库缓存的失败率
select sum(pins) "total pins",
sum(reloads) "total reloads",
sum(reloads) / sum(pins) * 100 libcache
from v$librarycache;
这个失败率应该小于1%才对。
这个SGA 的大小如下 (包括了 三个组成部分 数据缓冲区,日志缓冲区 以及 共享池。)
SQL> show sga
Total System Global Area 289406976 bytes
Fixed Size 1248576 bytes
Variable Size 104858304 bytes
Database Buffers 176160768 bytes
Redo Buffers 7139328 bytes
通过数据字典v_$sgastat 计算SGA的使用空间和空间的比率
select name,
sgasize/1024/1024 可用,
bytes/1024 空闲,
round(bytes/sgasize*100,2) "百分比(%)"
from (select sum(bytes) sgasize from sys.v_$sgastat) s,sys.v_$sgastat f
where f.name='free memory';