国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

Oracle的實體化視圖管理

2024-08-29 13:30:41
字體:
來源:轉載
供稿:網友

                 oracle的實體化視圖管理

作者: ccbzzp


1. 實體化視圖概念
    實體化視圖管理是用于匯總,預計算,復制或分發數據的對象, 在大型的數據庫中使用它可以提高涉及到的sum,count,avg,min,max等的表的查詢的速度,只要在實體化視圖管理上創建了統計,查詢優化器將自動的使用實體化視圖管理,這特性被稱為query rewrite(查詢重寫).與普通的視圖不同的是實體化視圖管理存儲數據,占據數據庫的物理空間的.
    創建實體化視圖管理的用戶的權限必須有: create materialzed view,create table,create view,select等,如果在其他的模式中創建的話要在表上有create any materialized view和select權限.
要查詢重引用別的模式中的實體化視圖管理的話,還要有引用的表的global query rewrite or query rewrite權限.
    如果計劃使用實體化視圖管理的話,要修改參數文件中加: query_rewrite_enable=true

2. 創建實體化視圖注意事項:
   創建之后,是否要填寫數據
   多長時間刷新一次
   使用那種刷新類型: comple(完全),fast(快速),force(強制),never(從不)

3. 創建實體化視圖
   create materialized view test3
   pctfree 0 tablespace mtest
   storage (initial 1m next 1m pctincrease 0)
   build deferred
   refresh fast on commit
   enable query rewrite
   as select emp_no,sum(qty_psc) as qty_psc from bsempms group by emp_no;

4. 刪除實體化視圖
   drop materialized view test3;

5. 管理和評估實體化視圖的工具
   要運行dbmssnap.sql和dbmssum.sql為實體化視圖創建包dbms_mview和dbms_olap
   dbms_mview用于執行管理活動的.
   dbms_olap確定實體化視圖是否能提高查詢的性能.

6. 刷新實體化視圖的方法
   execute dbms_mview.refresh('test3','c');
   其中test3為實體化視圖名稱,'c'為刷新類型中的一種.
   刷新類型有: c-完全刷新
               f-快速刷新和強制刷新
   execute dbms_mview.refresh_all
   不接受任何參數,全部刷新.

7. 實體化視圖間的完整性
   在實體化視圖互相嵌套的時候會用不同的實體化視圖的刷新的方式和時間的不同而引起的數據的完整性的問題,對于這種情況,建議把相關聯的實體化視圖放在同一個刷新組中,協調進行刷新.
   dbms_refresh軟件包中提供make過程來創建一個刷新組.
   例如:
   execute dbms_refresh.make
   (name=>'test_group',
   list=>'loc_emp,loc_dpt',
   next_date=>sysdate,
   interval=>'sysdate+7');
   上面創建一個實體化視圖刷新組test_group,刷新周期為7天一次的.
   兩個實體化視圖loc_emp和loc_dpt通過一個參數來傳遞給過程的.

8. 向刷新組中增加刷新的實體化視圖
   dbms_refresh.add
   (name in varchar2,
   list in varchar2,|
   tab in dbms_utility.unclarray,
   lax in boolean:=false);
  
9. 向刷新組中刪除刷新的實體化視圖
   dbms_refresh.subtract
   (name in varchar2,
   list in varchar2,|
   tab in dbms_utility.unclarray,
   lax in boolean:=false);

10. 手工刪除一個刷新組
   execute dbms_refresh.refresh('test_group');
   也可以
   execute dbms_refresh.destroy(name=>'test_group');
 
11. 實體化視圖的日志管理
   實體化視圖日志是一個表,保持對實體化視圖操作的歷史記錄.
   要創建實體化視圖日志必須能在表上創建after row觸發器,必須有create trigger,create table權限

   例如:
   create materialized view log on bsempms
   tablespace data_test
   storage(initial 1m next 1m pctincrease 0)
   pctfree 5 pctused 90;
   實體化視圖日志的pctfree應該很小,pctused應該很大的.
   通過alter materialized view log命令可以修改實體化視圖日志參數.
   如:
   alter materialized view log bsempms pctfree 1;
   要撤銷實體化視圖日志,可以用drop materialized view log命令
   如:
   drop materialized view log on bsempms;

12. 清除實體化視圖日志
   要減少實體化視圖日志使用的空間,可用dbms_mview軟件包中的purge_log過程,purge_log有三個參數:
   主表名稱,num變量,delete標志
   num指最近最少刷新的實體化視圖數量
   例如:
   execute dbms_mview.purge_log
   (mater=>'bsempms',
      num=>1,
      flag=>'delete');
   bsempms表的實體化視圖將清除實體化視圖最近最少使用的條目.
   要在截斷主表的時候而不丟失實體化視圖日志條目,可以用命令 
   truncate table bsempms preserve materialized view log;

13. 也可以用oem來創建和管理實體化視圖
   



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 林口县| 津南区| 双牌县| 安丘市| 甘泉县| 稻城县| 望江县| 威宁| 根河市| 开远市| 辽源市| 萨迦县| 邳州市| 安龙县| 德江县| 叶城县| 临洮县| 浪卡子县| 阜南县| 抚顺市| 富蕴县| 安多县| 阳信县| 长葛市| 彩票| 明星| 化隆| 勃利县| 云霄县| 新平| 都江堰市| 枣强县| 内江市| 亚东县| 横山县| 庐江县| 庄浪县| 大庆市| 临泽县| 丽水市| 奉节县|