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. 进入主界面确认数据库和主机指标正常刷新
相关推荐
叫我:松哥1 小时前
基于Python flask的中学可控智能命题系统设计与实现,整合遗传算法、DeepSeek 大模型及数据库技术构建一体化应用
数据库·人工智能·python·算法·机器学习·flask·遗传算法
阿维的博客日记1 小时前
Hippo4j 线程池监控接入方法
数据库·hippo4j
审判长烧鸡2 小时前
数据库字段命名规范速查表
数据库·sql
承渊政道2 小时前
【MySQL数据库学习】(MySQL表的内外连接)
数据库·学习·mysql·leetcode·bash·数据库开发·数据库系统
瀚高PG实验室2 小时前
db_ha集群中某个节点启动失败,报错缺少sm4加密模块
数据库·瀚高数据库·highgo
IvorySQL2 小时前
PostgreSQL 技术日报 (6月16日)|Neon 自动化再进一步,逻辑复制冲突日志迎来 v50 更新
数据库·postgresql·自动化
小小工匠2 小时前
Redis - 主从集群脑裂:数据丢失的隐藏杀手
数据库·redis
JAMSAN09302 小时前
机器人轴承:被低估的“物理关节”,正在打开300倍增长空间
数据库·人工智能·机器人·智能硬件
计算机安禾10 小时前
【数据库系统原理】第19篇:计算机存储层次结构与数据库文件的物理组织
数据库·oracle