Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

44

积分

0

好友

2

主题
1#
发表于 2013-1-25 10:15:10 | 查看: 4946| 回复: 6
为了方便,系统中常使用一些视图,为了速度又想把视图建为物化视图。
那现在问题来了:
当view变动的时候,有没有方法自动根据view的语句 重建物化视图。
用TRIGGER可行不?怎么建这个TRIGGER。
盼解惑。
2#
发表于 2013-1-25 12:28:52
我也坐等看看刘大给的解决方案

回复 只看该作者 道具 举报

3#
发表于 2013-1-25 17:13:09
当view变动的时候,有没有方法自动根据view的语句 重建物化视图。

什么变动? 结构变动? 没有听懂你的需求

回复 只看该作者 道具 举报

4#
发表于 2013-1-25 17:27:51
原思路如下,这样就可以用到物化视图的查询重写
  1. create table tb1 as select * from user_objects where rownum <= 100
  2. /
  3. create or replace view test as select tb1.object_name from tb1
  4. /
  5. /*根据view建立mview m_test*/
  6. declare
  7.   v_sql user_views.text%type;
  8. begin
  9.   select text into v_sql from user_views where view_name = upper('test');
  10.   v_sql := 'create materialized view m_test as ' || v_sql;
  11.   execute immediate v_sql;
  12. end;
  13. /
  14. create or replace view test as select object_name,object_type from tb1
  15. /*view有变动,根据这个动作重新建立mview m_test*/
  16. /
复制代码

回复 只看该作者 道具 举报

5#
发表于 2013-1-25 19:16:47
1. 这种操作 不会太频繁吧, 如果不频繁何不手动作呢?

2. 这种操作很频繁?为什么要这样设计,有必要吗? 实际这样实现 可能减少了10%的开发时间, 却会倒是DB的性能负载高许多 , 频繁的DDL操作是不推荐的!!

回复 只看该作者 道具 举报

6#
发表于 2013-1-25 20:56:06
Maclean Liu(刘相兵 发表于 2013-1-25 19:16
1. 这种操作 不会太频繁吧, 如果不频繁何不手动作呢?

2. 这种操作很频繁?为什么要这样设计,有必要吗? ...

不频繁,只是不能确定新的view被执行的时间。因为写语句的与执行语句的是不同的人。
如果不能实现,那就想其它办法

回复 只看该作者 道具 举报

7#
发表于 2013-1-26 09:30:28
26856649 发表于 2013-1-25 20:56
不频繁,只是不能确定新的view被执行的时间。因为写语句的与执行语句的是不同的人。
如果不能实现,那就 ...

实现方法已找到,有需要的可以看下,用前请考虑刘的建议
  1. CREATE OR REPLACE TRIGGER sys.ddl_audit
  2. AFTER CREATE OR alter
  3. on database
  4. begin
  5.   if (user = upper('用户名') and
  6.      ora_sysevent in (upper('CREATE'), upper('ALTER')) and
  7.      ora_dict_obj_name = upper('test')) then
  8.     /*需要执行的动作*/
  9.   end if;
  10. exception
  11.   when others then
  12.     null;
  13. end;
复制代码

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-26 12:42 , Processed in 0.048436 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569