定义数据库操作涉及提供名称并指定其开始和结束时间。
使用该DBMS_SQL_MONITOR.BEGIN_OPERATION函数启动数据库操作,然后使用该DBMS_SQL_MONITOR.END_OPERATION过程结束数据库操作。
要开始在不同的会话中运行,指定的组合session_id和serial_num。该BEGIN_OPERATION函数返回数据库操作执行ID。如果dbop_exec_id为null,则数据库生成一个唯一值。
存在用于数据库操作的单个名称空间,这意味着可能发生名称冲突。Oracle建议使用以下命名约定:component_name.subcomponent_name.operation name。对于数据库内部的操作,Oracle建议使用ORA组件名称。例如,可以将实例化视图刷新命名为ORA.MV.refresh。可以将E-Business Suite薪资功能命名为EBIZ.payroll。
要在当前会话中创建数据库操作:
- 在SQL * Plus或SQL Developer中,以具有必要特权的用户身份登录数据库。
- 使用开始操作
DBMS_SQL_MONITOR.BEGIN_OPERATION。此函数返回数据库操作执行ID。以下示例创建名为的操作
ORA.sales.agg,并将执行ID存储在SQL * Plus变量中:VARIABLE exec_id NUMBER; BEGIN :exec_id := DBMS_SQL_MONITOR.BEGIN_OPERATION ( dbop_name => 'ORA.sales.agg' ); END; / - 执行您要监视的SQL语句或PL / SQL程序。
- 使用结束操作
DBMS_SQL_MONITOR.END_OPERATION。以下示例结束操作
ORA.sales.agg:BEGIN DBMS_SQL_MONITOR.END_OPERATION ( dbop_name => 'ORA.sales.agg', dbop_eid => :exec_id ); END; /
示例21-1创建数据库操作
以下示例说明了如何使用该DBMS_SQL_MONITOR程序包在不同的会话中开始和结束数据库操作。本示例假定以下内容:
- 您是管理员,想监视user启动的会话中的语句
sh。 - 您要监视
sh.sales表和sh.customers表的查询。 - 您希望将这两个查询作为名为的数据库操作进行监视
sh_count。
表21-3创建数据库操作
| 系统会议 | 上海会议 | 描述 |
|---|---|---|
| 不适用 | 启动SQL * Plus并以具有管理员权限的用户身份连接。 |
不适用 | | 在另一个终端中,启动SQL * Plus并以user身份作为user连接 |
| 不适用 | 在 |
| 不适用 | 在 |
不适用 | | 在 |
| 不适用 | 通过指定操作名称和执行ID结束数据库操作。 |
| 不适用 | 查询元数据以进行 |
不适用 | | 要收集更改的会话信息,请执行一个查询,该查询执行到数据库的往返行程。 |
| 不适用 | 操作状态现已更新为 |




