物化视图我习惯在字段最后面加一个
to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') update_ts
来区别是否更新,也方便他人知道数据是否更新
但是有的时候因为某些原因,导致物化视图死锁了,无法自动更新,也无法删除重建
在网上找了好久也没有找到有效的解决方法,最后各种拼在一起总算是解决了。
下面是解决方法:
1、使用PL/SQL登录 sys 用户(不知道密码或者忘记的可以参考 https://www.cnblogs.com/jiangxinnju/p/7928029.html 进行重置密码)
2、select * from dba_jobs_running; 查询正在运行的工作流,应该是死锁导致一直在等待运行
3、根据第二步查询出来的sid进行查询spid
select s.sid,s.serial#,p.spid from v$session s left join v$process p on s.paddr=p.addr where sid=114;
4、删除session
alter system kill session '114,35605'; (114为第三步的sid,35605为第三步的serial#)
5、运行服务器的cmd
orakill orcl 6800 (orcl为数据库实例名,默认是orcl,6800是第三步查询出来的spid)
最终 物化视图被解锁了,想做什么操作都可以啦~