oracle-初级-分析表数据来源

来源:互联网 发布:高清电视直播软件 编辑:程序博客网 时间:2024/06/05 17:00

场景:

某天某猿,突然接到消息,要求提取一个陌生系统的后台数据。

我们的需求是什么?

不知道!

什么时候要?

现在要!

然而从系统仅能获取到表名,通过分析表的数据来源:

第一种情况是前台导入的。

第二种情况是有一个存储过程每天的向表内汇数据。

第三种情况放到linux服务器上的sql脚本。(crontab任务)


目前的情报:

表名,数据库

衍生推论:

1、因为报表中内容分析得到 < 包含聚合函数 > ,推测直接导入的概率不大

2、因为报表中内容分析得到 <且每日更新 > ,推测可能有job任务

2、通过查询存储过程包含字段的sql语句找到性应的存储过程(注意大小写


结论:

是通过存储过程更改数据

没有对应的job

没有linux的crontab

不是前台导入的

是在一个job的存储过程中调用的该存储过程(额,有点绕)。



具体执行方案如下:

第一步:从数据库查看表的创建语句

select dbms_metadata.get_ddl('TABLE','EMP') from dual;方法一:select * from tab;--(可以查看自己创建表或视图)方法二:select * from user_tables;方法三:select * from user_objects where object_type='TABLE' and object_name='';方法四:select * from user_tab_columns;--(通过表名或字段名查找)

第二步:查询所有存储过程内是否包含该字段

select * from all_source where type='PROCEDURE' and upper(text) like '%EMP%'

第三步:查询shared_pool内操作语句

select * from v$sql where  upper(sql_text) like '%EMP%' order by application_wait_time desc

第四步:dba_hist_*查询语句

select * from dba_hist_sqltext where upper(sql_text) like '%EMP%';
select * from dba_hist_sqltextselect * from dba_hist_sqlstatselect * from dba_hist_snapshot

以上,欢迎补充

原创粉丝点击