查看物化视图刷新情况:
select MVIEW_NAME,to_char(LAST_REFRESH_DATE,'yyyy-MM-dd HH24:mi:ss'),LAST_REFRESH_TYPE,FAST_REFRESHABLE from user_mviews;
查看主表上物化视图日志情况:
select * from ALL_REGISTERED_MVIEWS; --物化视图在主表上的注册情况
select * from DBA_BASE_TABLE_MVIEWS;
select * from dba_mview_logs --查看存在的物化视图日志
创建基于主键的物化视图
1、首先在主表上创建基于主键的物化视图日志
alter table u01.t3 add constraint pk_u03 primary key(id);
create materialized view log on u01.t3 with primary key including new values;
2、创建物化视图(十分钟刷新一次)
create materialized view u01.t3
refresh force on demand
start with sysdate next sysdate + (1/24/12)
as
select * from u01.t3@wqwq_to_eisoo;
3、删除物化视图
(1)停止物化视图job
begin
dbms_job.broken(1194,true);
commit;
end;
(2)删除物化视图job
begin
dbms_job.remove(1194);
commit;
end;
(3)删除物化视图
drop materialized view u01.t3;
注:如果要将主表上的物化视图日志一块删除,首先在主表所在的用户下执行DROP MATERIALIZED VIEW LOG ON u01.t3命令,在执行上面的删除物化视图命令。
记录一次物化视图无法删除的案例:
说明:测试环境中物化视图刷新失败,计划删除物化视图:停止物化视图job,删除job,然后删除物化视图,但是在删除物化视图时候一直挂着无法删除
1、查看正在运行的job
SQL> select * from dba_jobs_running;
SID JOB FAILURES LAST_DATE LAST_SEC THIS_DATE THIS_SEC INSTANCE
---------- ---------- ---------- --------- -------------------------------- --------- -------------------------------- ----------
219 1174
SQL> select job from dba_jobs where job=1174;
no rows selected
2、确定要停掉的job的SID,SERIAL#和系统进程id
select b.SID,b.SERIAL#,c.SPID
from dba_jobs_running a,v$session b,v$process c
where a.sid = b.sid and b.PADDR = c.ADDR;
SID SERIAL# SPID
---------- ---------- ------------------------
219 48709 2369
3、杀掉job的会话
SQL> alter system kill session '219,48709';
*
ERROR at line 1:
ORA-00031: session marked for kill
上面的命令需要时间较长于是在OS层面杀掉SPID
[oracle@pdadep ~]$ ps -ef | grep 2369
oracle 2369 1 0 Sep29 ? 00:00:00 ora_j001_pda
[oracle@pdadep ~]$ kill -9 2369
此时再次执行删除物化视图的命令,顺利删除!
select MVIEW_NAME,to_char(LAST_REFRESH_DATE,'yyyy-MM-dd HH24:mi:ss'),LAST_REFRESH_TYPE,FAST_REFRESHABLE from user_mviews;
查看主表上物化视图日志情况:
select * from ALL_REGISTERED_MVIEWS; --物化视图在主表上的注册情况
select * from DBA_BASE_TABLE_MVIEWS;
select * from dba_mview_logs --查看存在的物化视图日志
创建基于主键的物化视图
1、首先在主表上创建基于主键的物化视图日志
alter table u01.t3 add constraint pk_u03 primary key(id);
create materialized view log on u01.t3 with primary key including new values;
2、创建物化视图(十分钟刷新一次)
create materialized view u01.t3
refresh force on demand
start with sysdate next sysdate + (1/24/12)
as
select * from u01.t3@wqwq_to_eisoo;
3、删除物化视图
(1)停止物化视图job
begin
dbms_job.broken(1194,true);
commit;
end;
(2)删除物化视图job
begin
dbms_job.remove(1194);
commit;
end;
(3)删除物化视图
drop materialized view u01.t3;
注:如果要将主表上的物化视图日志一块删除,首先在主表所在的用户下执行DROP MATERIALIZED VIEW LOG ON u01.t3命令,在执行上面的删除物化视图命令。
记录一次物化视图无法删除的案例:
说明:测试环境中物化视图刷新失败,计划删除物化视图:停止物化视图job,删除job,然后删除物化视图,但是在删除物化视图时候一直挂着无法删除
1、查看正在运行的job
SQL> select * from dba_jobs_running;
SID JOB FAILURES LAST_DATE LAST_SEC THIS_DATE THIS_SEC INSTANCE
---------- ---------- ---------- --------- -------------------------------- --------- -------------------------------- ----------
219 1174
SQL> select job from dba_jobs where job=1174;
no rows selected
2、确定要停掉的job的SID,SERIAL#和系统进程id
select b.SID,b.SERIAL#,c.SPID
from dba_jobs_running a,v$session b,v$process c
where a.sid = b.sid and b.PADDR = c.ADDR;
SID SERIAL# SPID
---------- ---------- ------------------------
219 48709 2369
3、杀掉job的会话
SQL> alter system kill session '219,48709';
*
ERROR at line 1:
ORA-00031: session marked for kill
上面的命令需要时间较长于是在OS层面杀掉SPID
[oracle@pdadep ~]$ ps -ef | grep 2369
oracle 2369 1 0 Sep29 ? 00:00:00 ora_j001_pda
[oracle@pdadep ~]$ kill -9 2369
此时再次执行删除物化视图的命令,顺利删除!
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30373263/viewspace-2125832/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30373263/viewspace-2125832/