Oracle 监控 SQL 精选 (二)

2024年 5月 21日 73.9k 0

前情回顾

  • 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

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论