Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

विभिन्न स्कीमा पर उपयोगकर्ताओं को अनुमति देना

किसी परिवर्तन को परिनियोजित करने के लिए एकल स्क्रिप्ट का होना असामान्य नहीं है। बात यह है कि, ऐसी स्क्रिप्ट को एक पावर उपयोगकर्ता द्वारा चलाने की आवश्यकता होती है, क्योंकि इसके लिए किसी भी स्तर पर सिस्टम विशेषाधिकारों की आवश्यकता होती है। इसका आमतौर पर एक डीबीए खाता होता है, अधिमानतः एक आवेदन खाता लेकिन अन्यथा सिस्टम या एसवाईएस।

तो आप जो स्क्रिप्ट चाहते हैं वह इस तरह दिखेगी:

grant select on user_a.t23 to user_b
/
grant select on user_a.t42 to user_b
/
create view user_b.v_69 as
select t23.col1, t42.col2
from   user_a.t42
       join user_a.t23
           on (t42.id = t23.id)
/
grant select on user_b.v_69 to user_c
/

एक सामान्य परिदृश्य यह है कि हमारे पास अलग-अलग स्क्रिप्ट का एक सूट है जिसे अलग-अलग उपयोगकर्ताओं द्वारा चलाने के लिए लिखा गया है, लेकिन अब हमें एक ही परिनियोजन में बंडल करने की आवश्यकता है। मूल स्क्रिप्ट में स्कीमा नाम नहीं होते हैं, और कई अच्छे कारण हैं कि हम उन्हें स्क्रिप्ट में हार्डकोड क्यों नहीं करना चाहेंगे।

उस मास्टर स्क्रिप्ट को बनाने का एक तरीका CURRENT_SCHEMA सिंटैक्स को बदलना है:

alter session set current_schema=USER_A
/
@run_grants_to_userb.sql

alter session set current_schema=USER_B
/
@create_view69.sql
@run_grants_to_userc.sql

मास्टर स्क्रिप्ट चलाने के लिए हमें अभी भी एक डीबीए उपयोगकर्ता की आवश्यकता है। वर्तमान स्कीमा को बदलने का एक फायदा यह है कि यह हमें डेटाबेस लिंक जैसी वस्तुओं को तैनात करने की अनुमति देता है, जो कि सिंटैक्स के एक क्विक के माध्यम से उनकी घोषणा में स्कीमा नाम नहीं हो सकता है। एक गोचा यह है कि उपयोगकर्ता नहीं बदलता है, इसलिए एक स्क्रिप्ट जो USER छद्म-स्तंभ को नियोजित करती है, अवांछित परिणाम उत्पन्न कर सकती है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में लीप सेकंड्स को कैसे हैंडल करें

  2. क्या ओरेकल में जीवी $ सत्र से वर्तमान सत्र के बारे में जानकारी प्राप्त करने का कोई तरीका है?

  3. जॉइन क्लॉज बनाम WHERE कंडीशन का उपयोग क्यों करें?

  4. ओरेकल में एक इंडेक्स को मजबूर करना

  5. Oracle इवेंट काउंट क्वेरी