ORACLE DRM REMASTER AN OBJECT
We can only remaster an object when DRM is enabled .
e.g on 11.2
_gc_policy_time can't be 0
Here is a test case :
Test Env: 11.2.0.3 RAC
Test Process:
1. Disable DRM:
1)Set below parameter:
SQL>alter system set "_gc_policy_time"=0 scope=spfile;
2) Must shutdown of all the instances. ****
3) Startup all of the instances and verify the parameter has been changed.
SQL>select ksppinm as "hidden parameter", ksppstvl as "value"
from x$ksppi join x$ksppcv using (indx)
where ksppinm like '\_%' escape '\' and ksppinm like '_gc_policy_time'
order by ksppinm;
2. Manually remaster:
SQL> select data_object_id from dba_objects where object_name='EMP' and owner='SCOTT';
DATA_OBJECT_ID
--------------
75315
SQL> select * from GV$GCSPFMASTER_INFO where data_object_id = 75315;
no rows selected
SQL> oradebug setmypid
Statement processed.
SQL> oradebug lkdebug -m pkey 75315 <<<<<==================Remaster object 75315
Statement processed.
SQL> select * from GV$GCSPFMASTER_INFO where data_object_id = 75315; <<<<<==================Failed
no rows selected
3. Unable to remaster the object by lkdebug.
4. From the generated trace file:
*** 2013-05-29 09:25:18.976
Processing Oradebug command 'lkdebug -f 75315'
*****************************************************************
GLOBAL ENQUEUE SERVICE DEBUG INFORMATION
----------------------------------------
There is no affinity on pkey 75315
*** 2013-05-29 09:25:38.274
Processing Oradebug command 'lkdebug -m pkey 75315'
*****************************************************************
GLOBAL ENQUEUE SERVICE DEBUG INFORMATION
----------------------------------------
* lkdebug: cannot handle affinity request for object # 75315, affinity is turned off!
SQL> alter system set "_gc_policy_time"=10 scope=spfile; <<<<<=================Enable DRM
System altered.
2. Restart all instances.
3. Run on instance1:
SQL> oradebug setmypid
Statement processed.
SQL> oradebug lkdebug -m pkey 75315 <<<<<==================Remaster object 75315 again
Statement processed.
SQL> select * from GV$GCSPFMASTER_INFO where data_object_id = 75315;
INST_ID FILE_ID DATA_OBJECT_ID GC_MASTERIN CURRENT_MASTER PREVIOUS_MASTER <<<<<==================Remastered
---------- ---------- -------------- ----------- -------------- ---------------
REMASTER_CNT
------------
2 0 75315 Affinity 0 1 2
1 0 75315 Affinity 0 1 2
在RAC環境中,使用GRD(Global Resource Service)來記錄各個RAC節點的資源資訊,具體透過GCS(Global Cache Service)和GES(Global Enqueue Service)這兩個服務進行管理。
由於在RAC中每個節點都有自己的SGA和buffer cache,為了保證Cache資源的一致性和提高效能,GCS和GES會指定RAC中的一個instance來管理Cache,這個節點這時就是Resource Master。
在10g以前,Cache資源是不能在各個節點間移動的,除非重啟或者某節點因為其他異常被RAC驅逐等情況。而10g的DRM就解決了這個問題,它可以保證cache能夠被remaster到頻繁訪問這部分資料的節點上,從而提高RAC的效能。DRM的全稱是Dynamic Resource Mastering,metalink上的Doc ID: 390483.1文件詳細介紹了DRM的資訊。
從理論上講,利用此項技術,非master節點對所需資源有頻繁訪問需求時,可以提升為master節點,從而減少大量後續的跨節點資源訪問需求。
但是,首先從根本上說,一個好的RAC應用設計,本就應該極盡所能的取避免同一資源的多節點訪問,如果不存在同一資源的多節點訪問,則DRM所要解決的問題,就根本不存在。其次,DRM本身是需要消耗資源的,並且存在諸多bug,對於一個設計較差的系統而言,頻繁的DRM,也會引發Libary cache lock而導致例項掛住。
更嚴重的,在10.2.0.3系統上,曾經遇到一個case,電信行業的巨型資料庫,rac的2號節點由於批次處理作業在非業務時間段,首先cache了一張40G的表,而到了業務時間段後,rac的1號節點的OLTP業務需要頻繁訪問該表,此時,故障發生了,由於DRM的介入,2號節點開始將記憶體內的40Gcache資料向1號節點傳輸,心跳網段千兆頻寬被耗盡,RAC陷入僵死階段,足足維持了40分鐘。
事後檢查網路流量圖,該時段內,私有網路流量持續保持在90M/s的峰值水平。
根據metalink確認,該問題確實由DRM機制引起,最終解決方案,使用隱含引數,將DRM特性遮蔽:
_gc_affinity_time=0
_gc_undo_affinity=FALSE
因此,從根本上來說,drm的出現,只是在理論上的一種緩解,而並不能在實際的大型應用中發揮其作用。就類似於Oracle自己針對RAC推出的自動負載平衡一樣,只是一種看起來很美的東西,如果真的有人用了,呵呵,那就只能等死吧。或許壓力極小的資料庫無所謂,但我沒遇到過,話又說回來,壓力極小,又何必上RAC呢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29446986/viewspace-1294958/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DRM --- RAC object remastering ( Dynamic remastering )ObjectREMAST
- Oracle RAC DRM介紹和關閉DRMOracle
- Oracle DRM原理介紹Oracle
- Oracle RAC Cache Fusion 系列十七:Oracle RAC DRMOracle
- Oracle DRM 簡介(Dynamic Resource management)Oracle
- Oracle 10g RAC中的DRMOracle 10g
- ORACLE RAC的DRM (動態資源管理)Oracle
- Oracle DRM引起的問題解決一例Oracle
- object_id 及 data_object_id (oracle)ObjectOracle
- Oracle OCP(26):其它ObjectOracleObject
- DRM - Dynamic Resource MasteringAST
- 電子書DRM破解
- [Oracle Script] check object count by userOracleObject
- oracle建立型別之objectOracle型別Object
- Oracle中object_id和data_object_id的區別OracleObject
- NoteBurner iTunes DRM Audio Converter for Mac - 蘋果DRM音訊轉換器Mac蘋果音訊
- DRM 分析及案例講解
- oracle datafile 與 object的關係OracleObject
- Oracle10g/11g動態、靜態關閉DRM特性方法Oracle
- DRM音訊清除轉換工具音訊
- 在ASP中讀取ORACLE中的BLOB型別的欄位的值,不用Oracle Object for Object (轉)Oracle型別Object
- Fairplay DRM與混淆實現AI
- 從Remaster到Remake,2020年會是重製遊戲的元年嗎?REMAST遊戲
- 【Oracle】-【許可權-ORA-04043】- object does not existOracleObject
- DRM特性引起的RAC節點當機
- 海海DRM視訊保護解密流程分析解密
- Uncaught TypeError: Object [object Object] has no method 'xxx'ErrorObject
- NoteBurner iTunes DRM Audio Converter Mac版(蘋果DRM音訊轉換器) v3.1.0啟用版Mac蘋果音訊
- Oracle報performing DMLDDL operation over object in bin案例分析OracleORMObject
- Oracle EBS 重新編譯無效物件 invalid objectOracle編譯物件Object
- Oracle11g觸發器重用OBJECT_IDOracle觸發器Object
- Fairplay DRM與混淆實現的研究AI
- DRM引起的問題解決一例
- WALMART 即將關閉其 DRM 伺服器伺服器
- objectObject
- 介面返回[object,Object]解決方法Object
- Effective Object C 2.0 『熟悉Object C』Object
- 周源:視訊加密和DRM實施實踐加密