oracle视图问题!
发布网友
发布时间:2022-04-08 11:25
我来回答
共5个回答
懂视网
时间:2022-04-08 15:46
SELECT o.object_name,
o.object_type,
a.event,
SUM(a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, dba_objects o
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.current_obj# = o.object_id
GROUP BY o.object_name, o.object_type, a.event
ORDER BY total_wait_time;
--列出数据库中最后15分钟内最重要的等待事件
SELECT a.event,
SUM(a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
GROUP BY a.event
ORDER BY total_wait_time DESC;
--等待最多的用户
SELECT s.sid,
s.username,
SUM(a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a,v$session s
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.session_id = s.sid
GROUP BY s.sid,s.username
ORDER BY total_wait_time DESC;
--确定等待最多的sql
SELECT a.user_id,
s.sql_text,
d.username,
SUM(a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, v$sqlarea s, dba_users d
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.sql_id = s.sql_id
AND a.user_id = d.user_id
GROUP BY a.user_id, s.sql_text, d.username;
dba_hist_active_sess_history:每60分钟,MMON后台进程都要刷新过滤了得ASH数据到磁盘,使其成为按小时的AWR快照的一部分。若ASH缓冲区已满,
则MMML后台进程进行数据的刷新。ASH数据被刷新到磁盘后,就不能在v$active_session_history视图中看到它了。此时要查看历史数据,就必须通过
dba_hist_active_sess_history视图。
段级动态性能视图:使用它们可以找出哪些表和索引正在使用大量资源或具有大量的等待。
v$segstat_name
v$segstat
v$segment_statistics
oracle一视图性能问题
标签:
热心网友
时间:2022-04-08 12:54
你好,希望我的回答对你有所帮助。
因为你所创建的三个视图都依赖于同一个表userinfo,当你修改了原有表的表结构时不会出现三个视图都画红叉的错误,因为alter语句是DDL语句,已经自动提交了,所以影响了视图中的表结构,此时视图本身并没有被修改,而其所依赖的表已经修改;而在修改视图后,视图所依赖的表已经被修改,然后再修改视图,保存后当然不会出错了,你说呢?
热心网友
时间:2022-04-08 14:12
视图在使用的时候是要做“编译”处理的,你修改了视图引用的表,那视图肯定会变为不可用状态,但是只要从新修改一下视图,哪怕你不修改试图定义,但是只要描述视图的sql没有出错,那视图就重新可用了。
热心网友
时间:2022-04-08 15:47
视图的包含表在任何修改下视图会被视为无用视图,但是程序还是会访问,呗修改后会会先红叉,这是理所当然的,当程序访问时当修改不影响视图时不会出错,只有在编译视图时没有错误的情况下才回完成新的编译!
热心网友
时间:2022-04-08 17:38
修改后没有提交,你加了独占锁,这时候视图是查不到数据的,提交后就可以了