Spotlight 接入 Oracle 数据库监控操作指南 2026-06-16

测试 / 正式环境通用版(最小权限原则)

一、软件简介

Spotlight on Oracle是 Quest Software 推出的数据库性能监控与诊断工具,常用于 Oracle 数据库实时监控、性能诊断、会话分析、等待事件分析、SQL 活动分析、表空间监控、主机资源监控和告警管理。

它可以实时看:

  • 数据库是否健康
  • CPU、内存、I/O 状态
  • 等待事件
  • 锁等待
  • 会话数量
  • SQL 性能
  • 表空间使用率
  • RAC 节点状态
  • ASM 状态
  • 归档、redo、buffer cache、library cache 等

二、文档目的

本文用于指导 DBA 将 Oracle 数据库接入 Spotlight,实现数据库与服务器主机资源的统一监控。

适用范围:

复制代码
Oracle 单实例
Oracle RAC / ODA
Oracle CDB / PDB
Linux / Unix 主机
测试环境
正式环境

接入目标:

复制代码
1. 监控 Oracle 数据库整体状态
2. 监控 Linux 主机 CPU、内存、磁盘、I/O、网络
3. 按需监控 PDB、ASM、RAC 节点
4. 使用最小权限原则创建 Spotlight 专用用户
5. 避免使用 DBA、RESOURCE、UNLIMITED TABLESPACE 等过大权限

三、连接类型选择

环境 Spotlight 连接类型
Oracle 单实例 Spotlight on Oracle
Oracle RAC / ODA Spotlight on Oracle RAC
Linux / Unix 主机 Monitor OS / Spotlight on Unix/Linux
ASM 存储 Monitor ASM

连接原则:

复制代码
单实例使用数据库 IP + Service Name
RAC / ODA 优先使用 SCAN 地址 + Service Name
CDB 整体监控连接 CDB 服务
PDB 单独监控连接 PDB 服务

示例:

复制代码
CDB 连接://192.0.2.10:1521/wlgcdb
PDB 连接://192.0.2.10:1521/tsimip
RAC 连接://scan.example.com:1521/业务服务名

四、正式环境要求

正式环境必须遵循最小权限原则。

默认不授予:

复制代码
DBA
RESOURCE
UNLIMITED TABLESPACE
SELECT ANY DICTIONARY
root OS 用户

建议使用:

复制代码
数据库专用用户:c##spotlight / spotlight
主机专用用户:sp_osmon
专用表空间:SPOTLIGHT_DATA

说明:

复制代码
SELECT ANY DICTIONARY 权限较大,不作为默认授权。
如果 Spotlight 明确提示权限不足,应优先根据提示补具体权限。
正式环境补充高权限前应走审批。

五、接入前确认数据库信息

使用 oracle 用户登录数据库:

复制代码
sqlplus / as sysdba

确认当前容器:

复制代码
show con_name;

查看 PDB:

复制代码
show pdbs;

查看数据库服务名:

复制代码
show parameter service_names;

查看所有服务:

复制代码
select name, con_id
from v$services
order by con_id, name;

示例结果:

复制代码
service_names = wlgcdb

NAME
------------------------------
wlgcdb
tsimip
wlgcdbXDB
SYS$BACKGROUND
SYS$USERS

说明:

复制代码
wlgcdb:CDB / 实例级服务
tsimip:PDB 服务

六、创建 Spotlight 专用表空间

正式环境和测试环境均建议创建 Spotlight 专用表空间,便于空间管理、对象清理和审计。

0.创建位置说明

Spotlight 专用表空间需要创建在 Spotlight 对象实际安装的容器中

监控场景 表空间创建位置 说明
监控整个 CDB / 实例 CDB$ROOT 主流程使用,Spotlight 对象安装在 CDB 根容器
单独监控某个 PDB 对应 PDB 需要进入该 PDB 后单独创建 SPOTLIGHT_DATA
非 CDB 数据库 当前数据库 直接在当前数据库中创建
RAC / ODA 环境 根据连接目标决定 CDB 连接建在 CDB$ROOT;PDB 连接建在对应 PDB
仅监控 OS 主机 不需要创建数据库表空间 OS 监控通过 SSH 采集主机信息
仅监控 ASM 按 ASM/数据库连接需求决定 如需安装数据库侧 Spotlight 对象,仍按连接目标所在容器创建

本文主流程是监控整个 CDB / 实例,因此应先在 CDB$ROOT 中创建 SPOTLIGHT_DATA 表空间。

1. 文件系统环境示例

复制代码
create tablespace SPOTLIGHT_DATA
datafile '/u02/oradata/wlgcdb/spotlight_data01.dbf'
size 1G
autoextend on next 128M maxsize unlimited;

2. ASM 环境示例

复制代码
create tablespace SPOTLIGHT_DATA
datafile '+DATA'
size 1G
autoextend on next 128M maxsize unlimited;

说明:

复制代码
SPOTLIGHT_DATA 用于存放 Spotlight 自身对象和历史监控数据。
不要将 Spotlight 对象放到业务表空间或 SYSTEM 表空间。
maxsize unlimited 表示数据文件可自动扩展到 Oracle / 文件系统 / ASM 允许的最大值,实际仍受磁盘或 ASM 磁盘组剩余空间限制。

七、创建数据库监控用户

1. CDB 架构

确认当前在 CDB$ROOT

复制代码
show con_name;

创建公共监控用户:

复制代码
create user c##spotlight identified by "Spotlight_123" container=all;

CDB$ROOT 下该用户的默认表空间设置为 SPOTLIGHT_DATA

复制代码
alter user c##spotlight default tablespace SPOTLIGHT_DATA container=current;

说明:

复制代码
公共用户使用 container=all 创建。
表空间默认属性和 quota 按当前容器处理,避免影响其他 PDB。

2. 非 CDB 架构

复制代码
create user spotlight identified by "Spotlight_123"
default tablespace SPOTLIGHT_DATA;

八、集中授权脚本

1. CDB 架构最小权限授权

CDB$ROOT 执行:

复制代码
/* Spotlight CDB 监控用户最小权限授权 */

show con_name;

grant create session to c##spotlight container=all;

grant set container to c##spotlight container=all;

alter user c##spotlight set container_data=all container=current;

grant select_catalog_role to c##spotlight container=all;

grant create table,
      create view,
      create procedure,
      create sequence,
      create synonym
to c##spotlight container=current;

alter user c##spotlight quota unlimited on SPOTLIGHT_DATA container=current;

注意:

复制代码
表空间 quota 必须使用 container=current。
不要使用 container=all。

错误写法:

复制代码
alter user c##spotlight quota unlimited on SPOTLIGHT_DATA container=all;

原因:

复制代码
公共用户虽然是 container=all 创建的,但 Spotlight 对象安装在当前连接的容器中。
表空间配额应按当前容器授权,避免 Oracle 到其他 PDB 中处理不存在或不一致的表空间。

2. 非 CDB 架构最小权限授权

复制代码
grant create session to spotlight;

grant select_catalog_role to spotlight;

grant create table,
      create view,
      create procedure,
      create sequence,
      create synonym
to spotlight;

alter user spotlight quota unlimited on SPOTLIGHT_DATA;

九、权限验证

1. CDB 架构

复制代码
select username, common, account_status, default_tablespace
from dba_users
where username = 'C##SPOTLIGHT';

select username, tablespace_name, max_bytes
from dba_ts_quotas
where username = 'C##SPOTLIGHT';

2. 非 CDB 架构

复制代码
select username, account_status, default_tablespace
from dba_users
where username = 'SPOTLIGHT';

select username, tablespace_name, max_bytes
from dba_ts_quotas
where username = 'SPOTLIGHT';

说明:

复制代码
MAX_BYTES = -1 表示该用户在指定表空间上拥有 unlimited quota。
这不是 UNLIMITED TABLESPACE 系统权限。

十、SQLPlus 测试连接

1. CDB 连接测试

复制代码
sqlplus c##spotlight/"Spotlight_123"@//192.0.2.10:1521/wlgcdb

登录后执行:

复制代码
show con_name;

select instance_name, status
from v$instance;

select name, open_mode
from v$pdbs;

select count(*)
from v$session;

正常结果:

复制代码
show con_name 显示 CDB$ROOT
v$instance 能查询实例状态
v$pdbs 能查询 PDB 状态
v$session 能返回会话数量

如果 SQLPlus 无法连接,Spotlight 也无法正常连接。


十一、Spotlight 创建数据库连接

打开 Spotlight:

复制代码
Connection Manager
→ Add new connection

1. 单实例数据库

选择:

复制代码
Spotlight on Oracle

填写:

复制代码
Connection name:
TEST-192.0.2.10-Oracle-CDB

Connection String:
//192.0.2.10:1521/wlgcdb

Oracle Username:
c##spotlight

Oracle Password:
Spotlight_123

Oracle Home:
Use Default

2. RAC / ODA 数据库

选择:

复制代码
Spotlight on Oracle RAC

填写:

复制代码
Connection name:
PROD-ODA-SCAN-Oracle-RAC

Connection String:
//scan.example.com:1521/数据库服务名

Oracle Username:
c##spotlight

Oracle Password:
Spotlight_123

Oracle Home:
Use Default

RAC / ODA 环境建议:

复制代码
优先使用 SCAN 地址
优先使用 Service Name
不要优先使用单个实例 SID

十二、配置主机 OS 监控

在数据库连接配置页面勾选:

复制代码
Monitor OS

填写:

复制代码
OS Server:
192.0.2.10

OS Type:
UNIX(SSH)

SSH Port:
22

OS Username:
oracle 或 sp_osmon

OS Password:
对应密码

建议勾选:

复制代码
Connect to OS Spotlight when starting this connection
Save password details

正式环境建议使用专用普通用户:

复制代码
useradd sp_osmon
passwd sp_osmon

不建议使用 root 用户做常态监控。


十三、第一次连接安装 Spotlight 对象

首次连接时,Spotlight 可能提示:

复制代码
Configuring Oracle User for Spotlight

选择:

复制代码
Install Objects in my schema

说明:

复制代码
Spotlight 会在 C##SPOTLIGHT 或 SPOTLIGHT schema 下创建自身对象。
这些对象用于保存 SQL 性能、瓶颈分析、性能建模等监控数据。
不会写入业务 schema。
不会修改业务表。

如果提示表空间权限不足,按"常见问题处理"部分处理。


十四、Predictive Diagnostics 保留策略

Spotlight 可能要求配置历史采集策略,例如:

复制代码
SQL Performance:每 12 小时采集一次
Bottleneck:每 31 分钟采集一次
Performance Modeling:每 11 分钟采集一次

这些数据保存在 Spotlight 专用用户 schema 中。

建议保留周期:

场景 建议
测试环境 180 - 365 天
正式环境临时排查 30 天
正式环境日常监控 90 天
正式环境长期趋势 180 - 365 天

说明:

复制代码
超过保留天数的数据会由 Spotlight 维护机制自动清理。
正式环境建议先设置 90 天。

十五、按需创建 PDB 监控连接

如果需要查看具体 PDB 的 SQL、会话、业务负载,可单独创建 PDB 连接。

示例:

复制代码
Connection name:
TEST-192.0.2.10-Oracle-TSIMIP-PDB

Connection String:
//192.0.2.10:1521/tsimip

Oracle Username:
c##spotlight

Oracle Password:
Spotlight_123

说明:

复制代码
如果 PDB 连接也要求安装 Spotlight 对象,应进入对应 PDB 后单独创建 SPOTLIGHT_DATA 表空间,并在该 PDB 内授予 quota。
不要默认使用其他表空间。

连接分工:

连接 作用
CDB 连接 看实例、SGA/PGA、Redo、归档、整体性能
PDB 连接 看指定 PDB 的 SQL、会话、业务负载
RAC 连接 看实例、节点、服务、Global Cache
OS 连接 看 CPU、内存、磁盘、I/O、网络
ASM 连接 看 ASM 实例、磁盘组、容量

十六、常见问题处理

1. ORA-01950:对表空间无权限

报错:

复制代码
ORA-01950: 对表空间无权限

原因:

复制代码
Spotlight 用户没有对应表空间 quota,无法创建自身对象。

处理:

复制代码
alter user c##spotlight quota unlimited on SPOTLIGHT_DATA container=current;

非 CDB 架构:

复制代码
alter user spotlight quota unlimited on SPOTLIGHT_DATA;

2. ORA-00959:tablespace does not exist

报错:

复制代码
ORA-00959: tablespace does not exist

原因:

复制代码
当前容器中不存在指定表空间。
常见原因是表空间只在 CDB$ROOT 创建,但操作跑到了 PDB,或者使用了 container=all。

处理方式:

复制代码
show con_name;

确认当前容器后,在对应容器中创建表空间:

复制代码
create tablespace SPOTLIGHT_DATA
datafile '/u02/oradata/wlgcdb/spotlight_data01.dbf'
size 1G
autoextend on next 128M maxsize unlimited;

然后授权:

复制代码
alter user c##spotlight quota unlimited on SPOTLIGHT_DATA container=current;

3. Spotlight 提示权限不足

提示:

复制代码
This Spotlight User does not have all the required privileges.

处理原则:

复制代码
1. 不直接授 DBA
2. 不直接授 RESOURCE
3. 优先使用 Spotlight User Wizard 查看缺失权限
4. 根据提示补具体权限
5. 正式环境补高权限前走审批

测试环境可临时验证:

复制代码
grant select any dictionary to c##spotlight container=all;

验证后建议回收:

复制代码
revoke select any dictionary from c##spotlight container=all;

十七、连接成功后重点关注

1. 数据库侧

复制代码
Uptime
Response
Total Users
Active Users
Avg Active
PGA Used
SGA
Buffer Cache
Shared Pool Used
Redo Logs
Archive Log
Tablespaces
Sessions
Wait Events
SQL Activity / Top SQL
Alarm Log

2. 主机侧

复制代码
CPU Usage
CPU Wait %
Run Queue
Memory Free
Swap Used
Disk Activity
Filesystem Usage
Network Errors
Processes
Zombie Processes
Blocked Processes

3. RAC / ODA 额外关注

复制代码
实例状态
节点状态
Service 分布
会话是否集中到单节点
Global Cache 等待
Interconnect 状态
ASM 磁盘组容量
节点间负载是否均衡

十八、告警说明

Spotlight 会根据阈值自动告警。

告警页面:

复制代码
Spotlight Today
Alarms by Time
Alarm Log

告警级别:

复制代码
Information
Low
Medium
High
Critical

颜色含义:

复制代码
绿色:正常
黄色:需要关注
红色:需要处理

十九、推荐命名规范

复制代码
<环境>-<IP或SCAN>-Oracle-CDB
<环境>-<IP或SCAN>-Oracle-RAC
<环境>-<IP或SCAN>-Oracle-<PDB名>-PDB
<环境>-<主机名或IP>-OS
<环境>-<数据库名>-ASM

示例:

复制代码
TEST-192.0.2.10-Oracle-CDB
TEST-192.0.2.10-Oracle-TSIMIP-PDB
TEST-192.0.2.10-OS

PROD-ODA-SCAN-Oracle-RAC
PROD-ODA-NODE1-OS
PROD-ODA-NODE2-OS
PROD-ODA-ASM

二十、最终接入流程

复制代码
1. 确认数据库架构、IP、SCAN、端口、服务名
2. 创建 Spotlight 专用表空间 SPOTLIGHT_DATA
3. 创建 Spotlight 数据库监控用户
4. 按最小权限集中授权
5. 授予当前容器 SPOTLIGHT_DATA 表空间 quota
6. 使用 SQLPlus 测试连接
7. 在 Spotlight 中创建 Oracle 连接
8. 勾选 Monitor OS,配置主机监控
9. 第一次连接时安装 Spotlight 对象
10. 设置 Predictive Diagnostics 保留周期
11. 按需创建 PDB、ASM、RAC 节点监控连接
12. 进入主界面确认数据库和主机指标正常刷新
相关推荐
烤代码的吐司君17 分钟前
Redis IO 多路复用原理与引入原因深度解析
数据库·redis·php
Database_Cool_1 小时前
单库瓶颈解决方案首选:阿里云 PolarDB-X 平滑替代分库分表
数据库·阿里云
2503_931712482 小时前
10m/s超高速电梯:西奥XO-NEWIII如何树立行业速度标杆
java·大数据·数据库
无小道2 小时前
Redis——redis和mysql的数据同步
数据库·redis·mysql
AI的探索之旅2 小时前
从 Ubuntu 14.04 到 24.04:TI AM335x 开发环境完整迁移与 Agent 接管方案
linux·数据库·嵌入式硬件·ubuntu·postgresql
辰合软件2 小时前
通达OA目录结构与核心文件解析
android·数据库·oracle
名不经传的养虾人3 小时前
从0到1:企业级AI项目迭代日记 Vol.61|记忆不是越多越好,装一道门比装满更重要
数据库·人工智能·ai编程·ai工作流·企业ai
霸道流氓气质3 小时前
Harness Engineering 从理论到实战:基于 Spring AI Alibaba 的完整实现指南
数据库·人工智能·spring·harness
linuxoffer3 小时前
MYSQL回收碎片空间
数据库·mysql
名字还没想好☜4 小时前
Go 并发实战:用 channel 实现 worker pool
java·数据库·后端·golang·go