前情回顾
- Oracle 数据库全面升级为 23ai
- Python 连接 Oracle 23ai 的两种方法
- python-oracledb 已率先支持 Oracle 23ai
- 一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
前文介绍了几个实用SQL,Oracle 监控 SQL 精选 (一)
本文继续分享。首先,通过 SQLcl 连接到 Oracle 数据库。
Connected to:
Oracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free
Version 23.4.0.24.05
下面开始正文讲解。
SQL 1
查询实例可以用于执行的CPU数量,查询结果为2,表示只能使用2个cpu。
SQL> select value
from v$parameter
where name = 'cpu_count';
VALUE
________
2
由于我使用的是23ai Free版本,所以无法调整到更大值。
ORA-12797: The 'cpu_count' parameter cannot be greater than '2' in Oracle Database Free version.
但是可以调小,以限制PDB使用cpu资源。
SQL> show con_name
CON_NAME
------------------------------
FREEPDB1
SQL> alter system set cpu_count = 1;
System altered.
SQL> show parameter cpu_count;
NAME TYPE VALUE
--------- ------ -----
cpu_count string 1
SQL 2
V$OSSTAT显示来自操作系统的系统利用率统计信息。
NUM_CPUS表示系统的CPU数量,而PHYSICAL_MEMORY_BYTES表示系统的物理内存大小,以字节为单位。
SQL> select stat[4Dstat_name,
value
from v$osstat
where stat_name in ( 'NUM_CPUS',
'PHYSICAL_MEMORY_BYTES' );
STAT_NAME VALUE
________________________ ______________
NUM_CPUS 8
PHYSICAL_MEMORY_BYTES 16473604096
查询输出说明服务器有8个CPU core,内存有16G。
SQL 3
V$RSRCMGRMETRIC 显示有关每个消费者组所消耗的资源和等待时间的信息。
当 STATISTICS_LEVEL 设置为 TYPICAL 或 ALL 时,即使未设置资源管理器计划或资源管理器计划不监视 CPU 或会话资源,此视图也包含有关 CPU 利用率和等待时间的信息。 当未监控 CPU 利用率时,每分钟都会收集和存储指标。
V$CONTAINERS 显示有关 PDB 以及与当前实例关联的 root 的信息。
SQL> select c.name name,
consumer_group_name,
plan_name,
cpu_consumed_time,
cpu_wait_time
from v$rsrcmgrmetric r,
v$containers c
where c.con_id (+) = r.con_id;
NAME CONSUMER_GROUP_NAME PLAN_NAME CPU_CONSUMED_TIME CPU_WAIT_TIME
___________ ______________________ _______________ ____________________ ________________
FREEPDB1 ORA$AUTOTASK DEFAULT_PLAN 0 0
FREEPDB1 OTHER_GROUPS DEFAULT_PLAN 0 0
FREEPDB1 SYS_GROUP DEFAULT_PLAN 73 0
该语句返回5个列,包括容器的名称、消费者组名称、计划名称、CPU消费时间(消费者组中所有会话累计消耗的CPU时间,以毫秒为单位)以及CPU等待时间(会话因资源管理而等待 CPU 的累计时间(以毫秒为单位)。 这不包括由于闩锁或队列争用、I/O 等待等而导致的等待。 当 CPU 资源未被主动管理时,该值设置为零。)。
SQL 4
检查PDB的SGA使用情况,包括SGA组件的名称和大小。
SQL> select c.name pdb_name,
s.name,
round(
bytes / 1024 / 1024,
2
) mb_size
from v$sgainfo s,
v$containers c
where c.con_id (+) = s.con_id;
DB_NAME NAME MB_SIZE
___________ __________________________________ __________
Fixed SGA Size 5.11
Redo Buffers 4.32
Buffer Cache Size 192
In-Memory Area Size 0
Vector Memory Area Size 0
Shared Pool Size 896
Large Pool Size 16
Java Pool Size 0
Streams Pool Size 400
Shared IO Pool Size 80
Data Transfer Cache Size 0
Granule Size 16
Maximum SGA Size 1529.43
Startup overhead in Shared Pool 211.82
PDB_NAME NAME MB_SIZE
___________ ____________________________ __________
Free SGA Memory Available 16
15 rows selected.
其中,‘Maximum SGA Size’, ‘Startup overhead in Shared Pool’, ‘Granule Size’, ‘Shared IO Pool Size’ 不是实际SGA组件的记录,只保留具体的SGA组件信息。
SQL 5
查询数据库中会话和进程的关联信息,包括它们的资源使用情况。
select c.name as pdb_name,
p.pid as pid,
p.program as server_process,
s.sid as sid,
s.username as username,
s.program as program,
s.machine as machine,
s.osuser as osuser,
s.status as status,
last_call_et,
module,
client_info,
nvl(
pga_used_mem,
0
) pga_used_mem,
nvl(
pga_alloc_mem,
0
) pga_alloc_mem,
nvl(
pga_freeable_mem,
0
) pga_freeable_mem,
nvl(
pga_max_mem,
0
) pga_max_mem
from v$process p,
v$containers c,
v$session s
where c.con_id (+) = p.con_id
and s.paddr (+) = p.addr
and ROWNUM