在上一篇文章中,已经点到了数据库改名时,引起该schema下物化视图会失效的问题。从表面上看,该物化视图是删也删不掉,那当然就无法重建了。以下是实验过程:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

SQL> conn yyf123/yyf123
 SQL> select s.owner,s.object_name,s.object_type,status from dba_objects  s  where object_name='EMP' ;
OWNER       OBJECT_NAME     OBJECT_TYPE STATUS
------------------------------ -----------------------------------------------------------
SCOTT EMP  TABLE VALID
SCOTT       EMP     MATERIALIZED VIEW   VALID
YYF123 EMP  TABLE VALID
YYF123       EMP     MATERIALIZED VIEW   INVALID

SQL> drop table emp purge;
ERROR at line 1:
ORA-12083: must use DROP MATERIALIZED VIEW to drop "YYF123"."EMP"

SQL> drop materialized view emp;
Materialized view dropped.

既然提示已经删除了物化视图,那尝试着重建一下看看

SQL>CREATE MATERIALIZED VIEW  emp
ON PREBUILT TABLE
REFRESH FORCE ON DEMAND
START WITH sysdate  NEXT SYSDATE + 10/1442 
as
SELECT * FROM emp@link_to_scott;
*
ERROR at line 1:
ORA-00955: name is already used by an existing object

虽然上面删除物化视图的命令已经成功执行,但是请看dba_objects里面还有记录,也就是说并没有真正的删除。

select s.owner,s.object_name,s.object_type,status from dba_objects  s  where object_name='EMP' ;
OWNER       OBJECT_NAME     OBJECT_TYPE STATUS
------------------------------ ------------------------------ ------------------- ----------
YYF123       EMP     TABLE VALID
YYF123       EMP     MATERIALIZED VIEW   INVALID

问题来了,就是因为存在对该物化视图的summary信息

SQL> select t.owner,t.summary_name,t.container_owner,t.container_name from dba_summaries t where owner='YYF123' ;
OWNER       SUMMARY_NAME     CONTAINER_OWNER    CONTAINER_NAME
------------------------------ ------------------------------ ------------------------------ ------------------------------
YYF123       EMP     YYF123    EMP
SQL> conn / as sysdba
SQL> drop summary yyf123.emp;    <------------这就是解决问题的关键

接下来验证下是否已经清楚

SQL> select t.owner,t.summary_name,t.container_owner,t.container_name from dba_summaries t where owner='YYF123' ;
no rows selected

SQL>CREATE MATERIALIZED VIEW  emp
ON PREBUILT TABLE
REFRESH FORCE ON DEMAND
START WITH sysdate  NEXT SYSDATE + 10/1442 
as
SELECT * FROM emp@link_to_scott;

Materialized view created.
SQL> select count(*) from emp;

COUNT(*)
----------
14

SQL> exec dbms_mview.refresh('emp','c

PL/SQL procedure successfully completed.

到此为止,已经顺利解决。

reference:

http://dba.stackexchange.com/questions/4235/why-in-oracle-11gr2-i-cant-drop-the-materialized-view-with-the-same-user-that-c

DBA_SUMMARIES is 'Description of the summaries accessible to dba';
DBA_SUMMARIES.OWNER is 'Owner of the summary';
DBA_SUMMARIES.SUMMARY_NAME is 'Name of the summary';
DBA_SUMMARIES.CONTAINER_OWNER is 'Owner of the container table';
DBA_SUMMARIES.CONTAINER_NAME is 'Name of the container table for this summary';
DBA_SUMMARIES.LAST_REFRESH_SCN is 'The SCN of the last transaction to refresh the summary';
DBA_SUMMARIES.LAST_REFRESH_DATE is 'The date of the last refresh of the summary';
DBA_SUMMARIES.REFRESH_METHOD is 'User declared method of refresh for the summary';
DBA_SUMMARIES.SUMMARY is 'Indicates the presence of either aggregation or a GROUP BY';
DBA_SUMMARIES.FULLREFRESHTIM is 'The time that it took to fully refresh the summary';
DBA_SUMMARIES.INCREFRESHTIM is 'The time that it took to incrementally refresh the summary';
DBA_SUMMARIES.CONTAINS_VIEWS is 'This summary contains views in the FROM clause';
DBA_SUMMARIES.UNUSABLE is 'This summary is unusable, the build was deferred';
DBA_SUMMARIES.RESTRICTED_SYNTAX is 'This summary contains restrictive syntax';
DBA_SUMMARIES.INC_REFRESHABLE is 'This summary is not restricted from being incrementally refreshed';

oracle11g rename user导致物化视图失效的处理的更多相关文章

  1. 定位导致物化视图无法快速刷新的原因 分类: H2_ORACLE 2013-08-08 23:04 335人阅读 评论(0) 收藏

    转载自:http://yangtingkun.itpub.net/post/468/13318 物化视图的快速刷新采用了增量的机制,在刷新时,只针对基表上发生变化的数据进行刷新.因此快速刷新是物化视图 ...

  2. 物化视图刷新慢--有可能是mv log被多个mv使用造成的

    同事说物化视图刷新慢,经检生产环境,发现部分物化视图刷新慢的原因是:由于同一个物化视图日志(mv log)被多个物化视图(mv)使用,不同的物化视图(mv)使用不同的刷新间隔,导致物化视图日志(mv ...

  3. ORACLE 物化视图

    最近几天,我负责的P项目环境中提供给W系统的一个视图,由于查询逻辑复杂,数据量比较大,导致每次查询视图的时候,查询速度慢,效率低下,遭到了w系统人员的投诉.想了想,还是改成物化视图吧,用了物化视图,腰 ...

  4. ORACLE物化视图(物理视图)

    百度文库 http://wenku.baidu.com/view/f78f55c68bd63186bcebbc4b.html ORACLE物化视图 一.------------------------ ...

  5. 由于物化视图定义为on commit导致update更新基表慢的解决方案

    由于物化视图定义为on commit导致update更新基表慢的解决方案 以下是模拟和解决测试过程: (模拟update慢的过程) 1.首先基于基表创建物化视图日志: create materiali ...

  6. Oracle-11g 中创建物化视图

    html,body { font-size: 15px } body { font-family: Helvetica, "Hiragino Sans GB", "微软雅 ...

  7. Oracle-11g 中两库间物化视图的同步

    html,body { font-size: 15px } body { font-family: Helvetica, "Hiragino Sans GB", "微软雅 ...

  8. Oracle物化视图的用法与总结

    物化视图(material view)是什么? 物化视图是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表. 物化视图存储基于远程表的数据,也可以称为快照(类 ...

  9. [O]ORACLE物化视图的使用

    用于数据复制的物化视图 物化视图的一个主要功能就是用于数据的复制,Oracle推出的高级复制功能分为两个部分,多主复制和物化视图复制.而物化视图复制就是利用了物化视图的功能. 物化视图复制包含只读物化 ...

随机推荐

  1. Facebook被指控通过其应用程序进行监视用户照片

    Facebook被批使用其应用程序收集有关用户及其朋友的信息,其中包括一些尚未注册社交网络,阅读短信,跟踪其位置并在手机上查看照片的人. 有关大众监督的声称是前创业公司Six4Three对该公司提起的 ...

  2. python运行windows终端程序

    其实是用python控制windows里的shell 1.windows有PowerShell,可以通过搜索打开,运行python不需要打开shell 2.用python里的subprocess函数, ...

  3. 使用C#实现网站用户登录

    我们在写灌水机器人.抓资源机器人和Web网游辅助工具的时候第一步要实现的就是用户登录.那么怎么用C#来模拟一个用户的登录拉?要实现用户的登录,那么首先就必须要了解一般网站中是怎么判断用户是否登录的.H ...

  4. Appium运行报错:No Chromedriver found that can automate Chrome '39.0.0'

    运行appium切换webview时候遇到报错:’No Chromedriver found that can automate Chrome 'xx.xx.xx' 此报错是因为Appium在运行过程 ...

  5. [CSP-S模拟测试]:weight(Kruskal+树链剖分)

    题目描述 给你一个$n$个点$m$条边的带边权的无向图(无重边,无自环),现在对于每条边,问你这条边的权值最大可以是多大,使得这条边在无向图的所有最小生成树中?(边权都是整数). 输入格式 第一行包含 ...

  6. python类与对象练习题扑克牌

    #定义一个扑克类,属性是颜色,数字.#定义一个手类,属性是扑克牌得颜色数字#定义一个人类,属性是左手,右手.类里定义一些方法,比如交换,展示 class Poker : def __init__(se ...

  7. python的迭代器(转自廖雪峰老师python基础)

    我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list.tuple.dict.set.str等:一类是generator,包括生成器和带yield的generato ...

  8. ACM中java的使用 (转)

    ACM中java的使用 这里指的java速成,只限于java语法,包括输入输出,运算处理,字符串和高精度的处理,进制之间的转换等,能解决OJ上的一些高精度题目. 1. 输入: 格式为:Scanner ...

  9. Nuget-Doc:Nuget 简介

    ylbtech-Nuget-Doc:Nuget 简介 1.返回顶部 1. NuGet 简介 2019/05/24 适用于任何现代开发平台的基本工具可充当一种机制,通过这种机制,开发人员可以创建.共享和 ...

  10. Git 内部原理

    首先要弄明白一点,从根本上来讲 Git 是一个内容寻址(content-addressable)文件系统,并在此之上提供了一个版本控制系统的用户界面. 马上你就会学到这意味着什么. git objec ...