1. 基本的数据库信息
版本信息:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod
PL/SQL Release 10.2.0.1.0 - Production
CORE 10.2.0.1.0 Production
TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
NLSRTL Version 10.2.0.1.0 - Production
数据库信息:
SQL> select name, created, log_mode from v$database;
NAME CREATED LOG_MODE
--------- -------------- ------------
TEST 13-9月 -09 ARCHIVELOG
2. 自动工作量仓库(AWR) 的基本信息
自动工作量仓库(AWR)在默认情况下,仓库用小时填充,保留期是7天。
AWR使用多少空间
SQL>Select occupant_name,occupant_desc,space_usage_kbytes from v$sysaux_occupants where occupant_name like '%AWR%';
OCCUPANT_N OCCUPANT_DESC SPACE_USAGE_KBYTES
---------- -------------------------------------------------- ------------------
SM/AWR Server Manageability - Automatic Workload Repository 51200
系统上最原始的AWR信息是什么?
SQL> select dbms_stats.get_stats_history_availability from dual;
GET_STATS_HISTORY_AVAILABILITY
---------------------------------------------------------------------------
21-8月 -09 09.18.15.359000000 上午 +08:00
什么是AWR信息的保留期?
SQL> select dbms_stats.get_stats_history_retention from dual;
GET_STATS_HISTORY_RETENTION
---------------------------
31
将AWR信息的保留期更改为15天?
SQL> EXEC dbms_stats.alter_stats_history_retention(15);
PL/SQL 过程已成功完成。
3. 基本的许可信息
V$LICENSE视图允许DBA监控系统内任何时候有关数据库数量的所有系统活动的数量。会话警告级别为0表示没有设置init.ora会话警告参数,所以系统不会显示警告信息。会话最大级别为0表示没有设置init.ora会话最大参数,所以系统不会限制会话的数量。查询V$LICENSE视图,以查看所允许的最大会话数。也可以在接近最大数时设置警告。
应该定期执行脚本,以向DBA提供系统一天中实际的会话数量,从而保证正确的许可授权。设置init.ora参数LICENSE_MAX_SESSIONS = 110,将会话数限制为110。设置init.ora参数LICENSE_SESSIONS_WARNING = 100,系统将向每位在第100个会话之后的用户显示警告信息,这样他们就会通知DBA,系统因遇到问题而关闭(希望能如此)。init.ora参数LICENSE_MAX_USERS用于设置数据库中可以创建的已命名的用户数。在以下程序清单中,该值为0,所以没有限制。
SQL> select * from v$license;
SESSIONS_MAX SESSIONS_WARNING SESSIONS_CURRENT SESSIONS_HIGHWATER USERS_MAX
------------ ---------------- ---------------- ------------------ ----------
0 0 9 18 0
4. 数据库中已安装的产品项
查询V$OPTION视图,可以获取您已安装的Oracle产品项。V$VERSION视图将给出已安装的基本产品项的版本。
SQL> select * from v$option;
PARAMETER VALUE
---------------------------------------------------------------- -----
Partitioning TRUE
Objects TRUE
Real Application Clusters FALSE
Advanced replication TRUE
Bit-mapped indexes TRUE
Oracle Data Guard TRUE
Oracle Label Security FALSE
Flashback Database TRUE
Data Mining Scoring Engine FALSE
Transparent Data Encryption TRUE
Backup Encryption TRUE
Unused Block Compression TRUE
… …
5. 内存分配摘要(V$SGA)
V$SGA视图给出了系统的系统全局区(System Global Area,SGA)内存结构的摘要信息。Data Buffers是在内存中分配给数据的字节数量。它根据init.ora的参数DB_CACHE_SIZE得到。Redo Buffers主要是依据init.ora参数LOG_BUFFER计算得到,每当COMMIT命令提交数据时,它被用于缓存已改变的记录并将它们保存到重做日志中。访问V$SGA视图可以得到系统的物理内存分配的基本概念,包括在Oracle中为数据、共享池、large池、java池以及日志缓冲区分配的内存。
SQL> COLUMN value FORMAT 999,999,999,999
SQL> select * from v$sga;
NAME VALUE
-------------------- ----------------
Fixed Size 1,248,576
Variable Size 100,664,000
Database Buffers 180,355,072
Redo Buffers 7,139,328
如果使用SGA_TARGET-- 内部动态调整大小:
SQL> select ((select sum(value) from v$sga) -(select current_size from v$sga_dynamic_free_memory)) "
SGA_TARGET" from dual;
SGA_TARGET
----------
289406976
6.内存分配的细节(V$SGASTAT)
在V$视图中,可以查询V$SGASTAT视图来提供有关SGA更详细的内存分配信息。这个视图提供了SGA和内存资源的动态信息(访问数据库时会出现相应变化)。这个语句非常详细地描述了SGA的尺寸。在V$SGA和V$SGASTAT视图中均包含记录FIXED_SGA、BUFFER_CACHE和LOG_BUFFER.V$SGASTAT视图可获取Oracle SGA详细的分类列表以及共享池分配中各存储容器的详细信息。
SQL> select * from v$sgastat;
POOL NAME BYTES
------------ -------------------------- ----------
fixed_sga 1248576
buffer_cache 180355072
log_buffer 7139328
shared pool dpslut_kfdsg 256
shared pool hot latch diagnostics 80
shared pool ENQUEUE STATS 8360
shared pool transaction 264528
shared pool KCB buffer wait statistic 3352
shared pool invalid low rba queue 320
shared pool KQF optimizer stats table 2396
… …
7. 在V$PARAMETER显示init.ora信息
程序清单中的脚本显示了系统中的init.ora参数。它还提供了有关参数的信息,确定每一个参数的当前值是否就是默认值(ISDEFAULT=TRUE)。查询V$PARAMETER视图,将得到init.ora参数的当前值。它还显示了哪些init.ora参数已经改动了原始的默认值:ISDEFAULT = FALSE。它还显示了对于一个给定的会话,只能修改哪些参数(当ISSES_MODIFIABLE = TRUE时)。最后,它显示了在不用关闭和重启数据库可以修改哪些参数(当ISSYS_MODIFIABLE = IMMEDIATE时);而ISSYS_MODIFIABLE = DEFERRED说明该参数对所有新登录的,但当前未登录会话的用户有效。如果参数ISSYS _MODIFIABLE =FALSE,则说明该实例必须关闭并重启,才能使设置生效。
SQL>select name, value, isdefault, isses_modifiable,issys_modifiable from v$parameter order by name;
NAME VALUE ISDEFAULT ISSES ISSYS_MOD
--------------- ----------------------------------- --------- ----- ---------
active_instance TRUE FALSE FALSE
asm_diskgroups TRUE FALSE IMMEDIATE
audit_file_dest D:/ORACLE/ADMIN/TEST/ADUMP FALSE FALSE DEFERRED
audit_sys_opera FALSE TRUE FALSE FALSE
background_dump D:/ORACLE/ADMIN/TEST/BDUMP FALSE FALSE IMMEDIATE
backup_tape_io_ FALSE TRUE FALSE DEFERRED
… …
8.测定数据的命中率(V$SYSSTAT)
查询V$SYSSTAT视图(如下程序清单所示)可以查看从内存中读取数据的频率。它提供了数据库中设置的数据块缓存区的命中率。这个信息可以帮助您判断系统何时需要更多的数据缓存(DB_CACHE_SIZE),或者系统的状态何时调整得不佳(二者均将导致较低的命中率)。通常情况下,您应当确保读数据的命中率保持在95%以上。将系统的命中率从98%提高到99%,可能意味着性能提高了100%(取决于引起磁盘读操作的语句)。
SELECT 1
- ( SUM (DECODE (NAME, 'physical reads', VALUE, 0))
/ ( SUM (DECODE (NAME, 'db block gets', VALUE, 0))
+ (SUM (DECODE (NAME, 'consistent gets', VALUE, 0)))
)
) "Read Hit Ratio"
FROM v$sysstat;
Read Hit Ratio
--------------
.993067726
在Oracle 10g中,也可以直接获得V$SYSMETRIC中的 AWR 信息:
SQL> select metric_name,value from v$sysmetric where metric_name='Buffer Cache Hit Ratio';
METRIC_NAME VALUE
---------------------------------------------------------------- ----------
Buffer Cache Hit Ratio 100
Buffer Cache Hit Ratio 100
9.测定数据字典的命中率(V$ROWCACHE)
可以使用V$ROWCACHE视图(如程序清单所示)来发现对数据字典的调用是否有效地利用了通过init.ora参数SHARED_POOL_SIZE分配的内存缓存。如果字典的命中率不高,系统的综合性能将大受影响。推荐的命中率是95%或者更高。如果命中率低于这个百分比,说明可能需要增加init.ora参数SHARED_POOL_SIZE。但要记住,在V$SGASTAT视图中看到的共享池包括多个部分,而这里仅仅就是其中之一。注意:在大幅度使用公共同名的环境中,字典命中率可能难以超过75%,即使共享池的尺寸很大。这是因为Oracle必须经常检查不存在的对象是否依旧存在。
SQL>select sum(gets),sum(getmisses),(1 - (sum(getmisses) / (sum(gets)+ sum(getmisses)))) * 100 HitRate from v$rowcache;
SUM(GETS) SUM(GETMISSES) HITRATE
---------- -------------- ----------
370854 11068 97.1020261
在Oracle 10g中,也可以直接获得V$SYSMETRIC中的AWR信息:
select metric_name, value from v$sysmetric where metric_name ='Library Cache Hit Ratio';
METRIC_NAME VALUE
---------------------------------------------------------------- ----------------
Library Cache Hit Ratio 98.0281690140845
Library Cache Hit Ratio 98.0281690140845
10.测定共享SQL和PL/SQL的命中率(V$LIBRARYCACHE)
访问V$LIBRARYCACHE视图可以显示实际使用的语句(SQL和PL/SQL)访问内存的情况。如果init.ora的参数SHARED_POOL_SIZE设置得太小,内存中就没有足够的空间来存储所有的语句。固定命中率通常应该是95%或更高,而重载的次数不应该超过1%。查询V$SQL_BIND_CAPTURE视图,看看每个SQL绑定是否太高,是否需要CURSOR_SHARING。
select sum(pins) "Executions", sum(pinhits) "Hits",((sum(pinhits) / sum(pins)) * 100) "PinHitRatio",sum(reloads) "Misses", ((sum(pins) / (sum(pins)+ sum(reloads))) * 100) "RelHitRatio" from v$librarycache;
Executions Hits PinHitRatio Misses RelHitRatio
---------- ---------- ----------- ---------- -----------
417954 403489 96.5390928 4092 99.0304374
查询 v$sql_bind_capture,看看 average binds 是否大于15 (issue):
select sql_id, count(*) bind_count from v$sql_bind_capture where child_number = 0 group by sql_id having count(*) > 20order by count(*);
SQL_ID BIND_COUNT
------------- ----------
9qgtwh66xg6nz 21
11.确定需要固定的PL/SQL对象
碎片化现象造成共享池中的可用空间均成为许多零散的片段,而没有足够大的连续空间,这是共享池中的普遍现象。消除共享池错误(参阅第4章和第13章以了解更多信息)的关键是理解哪些对象会引起问题。一旦知道了会引起潜在问题的PL/SQL对象,就可以在数据库启动时固定这个代码(这时共享池是完全连续的)。
SQL>select name, sharable_mem from v$db_object_cache where sharable_mem > 100000 and type in ('PACKAGE', 'PACKAGE BODY','FUNCTION', 'PROCEDURE') and kept = 'NO';
NAME SHARABLE_MEM
----------------- ------------
DBMS_BACKUP_RESTO 258495
DBMS_STATS 131422
12.通过V$SQLAREA查找有问题的查询
V$SQLAREA视图提供了一种识别有潜在问题或者需要优化的SQL语句的方法,从而可通过减少磁盘的访问来优化数据库的综合性能。
select b.username username, a.disk_reads reads,a.executions exec, a.disk_reads /decode(a.executions, 0, 1,a.executions) rds_exec_ratio,a.command_type, a.sql_text Statement from v$sqlarea a, dba_users b where a.parsing_user_id = b.user_id and a.disk_reads > 100000 order by a.disk_reads desc;
(文章来自网络,如有侵权请来信告知,本站将在第一时间删除。)
总机:(010)-88589926,88589826,88587026 QQ讨论群:243729577 182441349 邮箱:cuug_bj@cuug.com
通信地址:北京市海淀区紫竹院路98号北京化工大学科技园609室(CUUG)邮政编码:100089
中国UNIX用户协会 Copyright 2010 ALL Rights Reserved 北京神脑资讯技术有限公司
京ICP备11008061号 京公网安备110108006275号