查看用户对某个表的操作记录(查看某表被哪些存储过程使用)

一、相关表讲解(存储相关SQL语句)

1、V$SQL

存储SQL语句的前1000个Bytes和一些相关的统计信息

字段                                 类型                             含义

SQL_TEXT                    VARCHAR2(1000)      SQL语句的前1000个Bytes

SQL_FULLTEXT            CLOB                          SQL语句的所有字符

SQL_ID                          VARCHAR2(13)          SQL_ID

FIRST_LOAD_TIME      VARCHAR2(19)           SQL存入时间

COMMAND_TYPE         NUMBER                     命令类型

ADDRESS                      RAW(8)                        地址

HASH_VALUE               NUMBER                      哈希值

SERVICE                      VARCHAR2(64)            服务名

ACTION                        VARCHAR2(64)           动作

LAST_LOAD_TIME      VARCHAR2(19)           最后修改时间

PARSING_SCHEMA_NAME  VARCHAR2(128) 操作用户

//查看哪些用户使用了表SZJFSRHK_SRHK
select PARSING_SCHEMA_NAME, SQL_ID, SQL_TEXT, FIRST_LOAD_TIME, SERVICE, ACTION, "MODULE", LAST_LOAD_TIME 
from v$sql 
where hash_value in (select hash_value from v$sql_plan where object_owner='ODS' AND OBJECT_NAME='SZJFSRHK_SRHK');

 

2、V$SQLTEXT

字段                               类型                             含义

ADDRESS                      RAW(8)                        地址

HASH_VALUE               NUMBER                      哈希值

SQL_ID                         VARCHAR2(13)          SQL_ID

COMMAND_TYPE        NUMBER                    命令类型

SQL_TEXT                    VARCHAR2(64)          包含一块SQL语句的字段

PIECE                           NUMBER                    某SQL语句的第几块

3、USER_SOURCE(查看存储过程)

字段                               类型                             含义

NAME                           VARCHAR2(128)         存储过程名称

TYPE                            VARCHAR2(12)           类型,基本都是PROCEDURE

LINE                              NUMBER                     一个存储过程分多行,这个是行号

TEXT                            VARCHAR2(4000)       存储过程的内容

 

二、查看表的操作记录

1、查找某表的操作记录,获取SQL_ID

select PARSING_SCHEMA_NAME, SQL_ID, SQL_TEXT, FIRST_LOAD_TIME, SERVICE, ACTION, "MODULE", LAST_LOAD_TIME 
from v$sql 
where hash_value in (select hash_value from v$sql_plan where object_owner='ODS' AND OBJECT_NAME='SZJFSRHK_SRHK');

2、在SQLTEXT查询SQL_ID的sql内容

SELECT B.* FROM V$SQLAREA A,V$SQLTEXT B WHERE A.SQL_ID=B.SQL_ID AND A.SQL_ID='177cuh91c9kuq'
//V$SQLTEXT查询出来的是完整的SQL操作语句,但是是分段显示,一行一段,用piece标记

可以通过listagg函数将其连接成一条完整的SQL操作语句

select listagg(SQL_TEXT,'') within group (order by piece) from (SELECT B.PIECE,B.SQL_TEXT FROM V$SQLAREA A,V$SQLTEXT B WHERE A.SQL_ID=B.SQL_ID AND A.SQL_ID='177cuh91c9kuq')

 

三、查看表被哪些存储过程使用

SELECT * from user_source where upper(text) like '%SUCCEZ_FYPGS1_FYPGS%';  //查看使用表SUCCEZ_FYPGS1_FYPGS的存储过程

 

posted @ 2022-02-14 16:56  微风徐徐$  阅读(498)  评论(0编辑  收藏  举报