测试 / 正式环境通用版(最小权限原则)
一、软件简介
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. 进入主界面确认数据库和主机指标正常刷新