ओरेकल में भौतिक दृश्य क्या है
एक भौतिक दृश्य एक डेटाबेस ऑब्जेक्ट है जिसमें एक क्वेरी के परिणाम होते हैं। यह साधारण ओरेकल व्यू से अलग है। इन भौतिक दृश्य में डेटा संग्रहीत होता है और जब आप भौतिक दृश्य को क्वेरी करते हैं, तो यह संग्रहीत डेटा से डेटा लौटाता है। क्वेरी का FROM क्लॉज टेबल, व्यू और अन्य भौतिक विचारों को नाम दे सकता है। सामूहिक रूप से इन वस्तुओं को मास्टर टेबल (एक प्रतिकृति शब्द) या विवरण तालिका (एक डेटा वेयरहाउसिंग शब्द) कहा जाता है। यह संदर्भ स्थिरता के लिए "मास्टर टेबल" का उपयोग करता है। मास्टर टेबल वाले डेटाबेस को मास्टर डेटाबेस कहा जाता है।
जब आप एक भौतिक दृश्य बनाते हैं, तो Oracle डेटाबेस एक आंतरिक तालिका और कम से कम एक Oracle अनुक्रमणिका बनाता है, और एक दृश्य बना सकता है, सभी भौतिक दृश्य के स्कीमा में। Oracle डेटाबेस भौतिक दृश्य डेटा को बनाए रखने के लिए इन वस्तुओं का उपयोग करता है। इन वस्तुओं को बनाने के लिए आपके पास आवश्यक विशेषाधिकार होने चाहिए।
भौतिक दृश्य बनाने के लिए आवश्यक विशेषाधिकार
उपयोगकर्ता के पास भौतिकीकृत दृश्य बनाना . होना चाहिए भौतिक दृश्य बनाने के लिए
सामान्य सिंटैक्स
CREATE MATERIALIZED VIEW BUILD [IMMEDIATE | DEFERRED] REFRESH [FAST | COMPLETE | FORCE ] ON [COMMIT | DEMAND ] [[ENABLE | DISABLE] QUERY REWRITE] [ON PREBUILT TABLE] AS ;
प्रत्येक पद की व्याख्या
निर्माण [तत्काल | स्थगित] | हम तुरंत पॉप्युलेट करने के लिए निर्दिष्ट कर सकते हैं या हम पहले अनुरोधित रीफ़्रेश पर पॉप्युलेट करने के लिए DEFERRED निर्दिष्ट कर सकते हैं। |
ताज़ा करें [तेज़ | पूरा | बल] | यहां तीन विकल्प हैं। प्रत्येक को नीचे समझाया गया है 1) तेज :तेजी से रिफ्रेश करने का प्रयास किया जाता है। यदि भौतिक दृश्य लॉग पहले से स्रोत तालिकाओं के सामने मौजूद नहीं हैं, तो निर्माण विफल हो जाता है। 2) पूर्ण:भौतिक दृश्य का समर्थन करने वाले तालिका खंड को काट दिया जाता है और संबंधित क्वेरी का उपयोग करके पूरी तरह से फिर से भर दिया जाता है। 3) बल :तेजी से ताज़ा करने का प्रयास किया जाता है। यदि कोई संभव नहीं है तो एक पूर्ण रीफ्रेश किया जाता है। |
पर [कमिट | मांग ] | हम ON COMMIT को निर्दिष्ट कर सकते हैं ताकि निर्भर तालिकाओं में से एक में प्रतिबद्ध डेटा परिवर्तन द्वारा रीफ्रेश ट्रिगर किया जा सके या हम ऑन डिमांड निर्दिष्ट कर सकें ताकि मैन्युअल अनुरोध या शेड्यूल किए गए कार्य द्वारा रीफ्रेश शुरू किया जा सके। |
[[सक्षम | अक्षम करें] क्वेरी फिर से लिखें] | दृश्य क्वेरी पुनर्लेखन के लिए योग्य है |
CREATE MATERIALIZED VIEW mv_test
BUILD IMMEDIATE
REFRESH complete
ON demand AS
SELECT EMP.EMPNO,EMP.ENAME, DEPT.DEPTNO,DEPT.DNAME
FROM EMP,DEPT
where EMP.DEPTNO= DEPT.DEPTNO;
भौतिकीकृत दृश्य ताज़ा करें
हम PLSQL पैकेज DBMS_MVIEW
. के माध्यम से भौतिक दृश्य को ताज़ा कर सकते हैंDBMS_MVIEW पैकेज में रिफ्रेश ऑपरेशन करने के लिए तीन API शामिल हैं:
DBMS_MVIEW.REFRESH
एक या अधिक भौतिक विचारों को ताज़ा करें।
DBMS_MVIEW.REFRESH_ALL_MVIEWS
सभी भौतिक विचारों को ताज़ा करें।
DBMS_MVIEW.REFRESH_DEPENDENT
सभी भौतिक विचारों को ताज़ा करें जो एक निर्दिष्ट मास्टर टेबल या भौतिक दृश्य या मास्टर टेबल या भौतिक विचारों की सूची पर निर्भर करते हैं।
EXECUTE DBMS_MVIEW.REFRESH('MV_TEST','C');
Here C stands for Complete refresh
यदि आप नीचे दिए गए आदेश का उपयोग करके तेजी से ताज़ा करने का प्रयास करते हैं
EXECUTE DBMS_MVIEW.REFRESH('MV_TEST','F');
Here F stands for fast Refresh
यह त्रुटि फेंक देगा, क्योंकि कोई भौतिक दृश्य लॉग नहीं है। हम नीचे भौतिकीकृत दृश्य लॉग की जाँच करेंगे
Oracle 12c के साथ, Oracle ने ताज़ा करने के लिए नया API DBMS_SYNC_REFRESH पेश किया है
Oracle मटेरियलाइज्ड व्यू लॉग क्या है
जब DML परिवर्तन मास्टर टेबल डेटा में किए जाते हैं, तो Oracle डेटाबेस भौतिक दृश्य लॉग में उन परिवर्तनों का वर्णन करने वाली पंक्तियों को संग्रहीत करता है और फिर मास्टर टेबल के आधार पर भौतिक दृश्यों को ताज़ा करने के लिए भौतिक दृश्य लॉग का उपयोग करता है। इस प्रक्रिया को इंक्रीमेंटल या फास्ट रिफ्रेश कहा जाता है। भौतिक दृश्य लॉग के बिना, Oracle डेटाबेस को भौतिक दृश्य को ताज़ा करने के लिए भौतिक दृश्य क्वेरी को फिर से निष्पादित करना होगा। इस प्रक्रिया को पूर्ण ताज़ा कहा जाता है। आमतौर पर, एक तेज़ रीफ़्रेश पूर्ण रीफ़्रेश से कम समय लेता है।
एक भौतिक दृश्य लॉग मास्टर डेटाबेस में मास्टर तालिका के समान स्कीमा में स्थित होता है। एक मास्टर टेबल पर केवल एक भौतिक दृश्य लॉग परिभाषित किया जा सकता है। Oracle डेटाबेस इस भौतिकीकृत दृश्य लॉग का उपयोग मास्टर टेबल के आधार पर सभी तेज़-ताज़ा करने योग्य भौतिक दृश्यों के लिए तेज़ ताज़ा करने के लिए कर सकता है।
भौतिक रूप से जुड़े दृश्य को तेजी से ताज़ा करने के लिए, आपको भौतिक दृश्य द्वारा संदर्भित प्रत्येक तालिका के लिए एक भौतिक दृश्य लॉग बनाना होगा।
समूह को रीफ्रेश करें
एक ताज़ा समूह एक या एक से अधिक भौतिक विचारों का संग्रह है जो Oracle एक परमाणु लेनदेन में ताज़ा करता है, यह गारंटी देता है कि मास्टर टेबल के बीच संबंध संरक्षित हैं
उदाहरण:
CREATE MATERIALIZED VIEW mv_test
TABLESPACE test_data
BUILD IMMEDIATE
REFRESH complete ON COMMIT AS
SELECT a.name,b.salary FROM [email protected]_LINK a, [email protected]_LINK b where a.emp_id=b.emp_id;CREATE MATERIALIZED VIEW mv_test
TABLESPACE test_data
BUILD IMMEDIATE
REFRESH force ON COMMIT AS
SELECT a.name,b.salary FROM [email protected]_LINK a, [email protected]_LINK b where a.emp_id=b.emp_id;CREATE MATERIALIZED VIEW LOG ON emp;exec DBMS_REFRESH.MAKE(name=>'test_grp', -
list=>'test_mv1,test_mv2','mv_test' -
next_date => sysdate, -
interval => 'null');exec DBMS_REFRESH.REFRESH('test_grp');
भौतिक दृश्य की स्थिति की जांच कैसे करें
SELECT MVIEW_NAME, STALENESS, LAST_REFRESH_TYPE, COMPILE_STATE
FROM USER_MVIEWS ORDER BY MVIEW_NAME;
वास्तविक दृश्य के लिए आउट-ऑफ़-प्लेस रीफ़्रेश विकल्प
12c रिलीज़ 1 के साथ, भौतिक दृश्य ताज़ा प्रदर्शन और उपलब्धता को बेहतर बनाने के लिए एक नया ताज़ा विकल्प उपलब्ध है। इस रीफ्रेश विकल्प को आउट-ऑफ-प्लेस रीफ्रेश कहा जाता है क्योंकि यह मौजूदा "इन-प्लेस" रीफ्रेश के विपरीत रीफ्रेश के दौरान बाहरी टेबल का उपयोग करता है जो सीधे भौतिक दृश्य कंटेनर तालिका में परिवर्तन लागू करता है। आउट-ऑफ-द-प्लेस रीफ्रेश विकल्प सभी मौजूदा रीफ्रेश विधियों, जैसे फास्ट ('एफ'), पूर्ण ('सी'), पीसीटी ('पी'), और फोर्स ('?') के साथ काम करता है।
बड़ी मात्रा में डेटा परिवर्तनों के साथ स्थितियों को संभालते समय आउट-ऑफ-प्लेस रीफ्रेश विशेष रूप से प्रभावी होता है, जहां पारंपरिक डीएमएल स्टेटमेंट अच्छी तरह से स्केल नहीं करते हैं। यह आपको बहुत उच्च स्तर की उपलब्धता प्राप्त करने में भी सक्षम बनाता है क्योंकि ताज़ा किए जा रहे भौतिक विचारों का उपयोग रीफ्रेश स्टेटमेंट के निष्पादन के दौरान सीधी पहुंच और क्वेरी पुनर्लेखन के लिए किया जा सकता है।
आउट-ऑफ़-प्लेस रीफ़्रेश में, भौतिक दृश्य के संपूर्ण या प्रभावित हिस्से की गणना एक या अधिक बाहरी तालिकाओं में की जाती है।
exec dbms_mview.refresh('MV_TEST', out_of_place=>true, atomic_refresh=>false) ;
भौतिक दृश्य और Oracle दृश्य के बीच अंतर
जैसा कि ऊपर बताया गया है भौतिक दृश्य डिस्क आधारित हैं और समय-समय पर क्वेरी परिभाषा के आधार पर अपडेट किए जाते हैं। भौतिक दृश्य में, परिणाम सेट को भौतिक दृश्य तालिका में संग्रहीत किया जाता है
दृश्य केवल वर्चुअल हैं और हर बार एक्सेस किए जाने पर क्वेरी परिभाषा को चलाते हैं। दृश्य में कोई परिणाम सेट संग्रहीत नहीं होता है और यह हर बार दृश्य तक पहुंचने पर अंतर्निहित तालिका तक पहुंचता है
यह भी पढ़ता है
Oracle जॉइन करता है
Oracle सबक्वेरी
https://en.wikipedia.org/wiki/Materialized_view