2026-03-12 20:23:15
This commit is contained in:
109
tpt/tools/collectors/plancap_collector.sql
Normal file
109
tpt/tools/collectors/plancap_collector.sql
Normal file
@@ -0,0 +1,109 @@
|
||||
-- Copyright 2018 Tanel Poder. All rights reserved. More info at http://tanelpoder.com
|
||||
-- Licensed under the Apache License, Version 2.0. See LICENSE.txt for terms & conditions.
|
||||
|
||||
CREATE OR REPLACE PACKAGE plancap_collector AS
|
||||
|
||||
PROCEDURE snap_data_files;
|
||||
PROCEDURE snap_free_space;
|
||||
PROCEDURE snap_segment_space;
|
||||
PROCEDURE snap_service_stats;
|
||||
|
||||
END plancap_collector;
|
||||
/
|
||||
|
||||
CREATE OR REPLACE PACKAGE BODY plancap_collector AS
|
||||
|
||||
PROCEDURE snap_data_files AS
|
||||
BEGIN
|
||||
INSERT INTO plancap$data_files
|
||||
SELECT
|
||||
sysdate
|
||||
, tablespace_name
|
||||
, file_id
|
||||
, SUM(bytes)
|
||||
, SUM(blocks)
|
||||
, relative_fno
|
||||
FROM
|
||||
dba_data_files
|
||||
GROUP BY
|
||||
sysdate, tablespace_name, file_id, relative_fno;
|
||||
COMMIT;
|
||||
END snap_data_files;
|
||||
|
||||
PROCEDURE snap_free_space AS
|
||||
BEGIN
|
||||
INSERT INTO plancap$free_space
|
||||
SELECT
|
||||
sysdate
|
||||
, tablespace_name
|
||||
, file_id
|
||||
, SUM(bytes)
|
||||
, SUM(blocks)
|
||||
, relative_fno
|
||||
FROM
|
||||
dba_free_space
|
||||
GROUP BY
|
||||
sysdate, tablespace_name, file_id, relative_fno;
|
||||
COMMIT;
|
||||
END snap_free_space;
|
||||
|
||||
PROCEDURE snap_segment_space AS
|
||||
BEGIN
|
||||
INSERT INTO plancap$segment_space
|
||||
SELECT
|
||||
sysdate
|
||||
, owner
|
||||
, segment_name
|
||||
, NVL(partition_name,'-') partition_name
|
||||
, segment_type
|
||||
, tablespace_name
|
||||
, SUM(bytes) bytes
|
||||
, SUM(blocks) blocks
|
||||
, SUM(extents) extents
|
||||
FROM
|
||||
dba_segments
|
||||
GROUP BY
|
||||
sysdate, owner, segment_name, NVL(partition_name,'-'), tablespace_name, segment_type;
|
||||
COMMIT;
|
||||
END snap_segment_space;
|
||||
|
||||
|
||||
PROCEDURE snap_service_stats AS
|
||||
BEGIN
|
||||
INSERT INTO plancap$service_stats
|
||||
WITH sq AS (
|
||||
SELECT service_name,stat_name,value FROM v$service_stats
|
||||
)
|
||||
SELECT
|
||||
sysdate
|
||||
, a.service_name
|
||||
, a.value DB_CPU
|
||||
, b.value EXECUTE_COUNT
|
||||
, c.value USER_COMMITS
|
||||
, d.value USER_CALLS
|
||||
FROM
|
||||
sq a
|
||||
, sq b
|
||||
, sq c
|
||||
, sq d
|
||||
WHERE
|
||||
a.service_name = b.service_name
|
||||
AND b.service_name = c.service_name
|
||||
AND c.service_name = d.service_name
|
||||
AND a.stat_name = 'DB CPU'
|
||||
AND b.stat_name = 'execute count'
|
||||
AND c.stat_name = 'user commits'
|
||||
AND d.stat_name = 'user calls';
|
||||
COMMIT;
|
||||
END;
|
||||
|
||||
|
||||
END plancap_collector;
|
||||
/
|
||||
|
||||
SHOW ERR
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user