एक Oracle डेटाबेस उपयोगकर्ता की नकल करें


17

हम अपने ओरेकल डेटाबेस पर एक समीक्षा करने के लिए बाहरी ऑडिटर आ रहे हैं। वे समीक्षा करने के लिए एक उपकरण चला रहे होंगे और इसके लिए उन्हें एक उपयोगकर्ता आईडी की आवश्यकता होगी जो डेटाबेस से जुड़ सके और उससे जानकारी ले सके।

हमारे पास इसके लिए डेटाबेस में एक मौजूदा उपयोगकर्ता है। हालाँकि, यह एक प्रोडक्शन आईडी है और हम इसे बंद नहीं कर सकते। हम इस आईडी को उसकी भूमिकाओं और अधिकारों सहित क्लोन / डुप्लिकेट करना चाहेंगे।

क्या कोई ऐसा तरीका है जिससे हम Oracle में ऐसा कर सकते हैं?

जवाबों:


21

उपयोगकर्ता निर्माण:

select dbms_metadata.get_ddl( 'USER', 'PHIL' ) from dual;

डिफ़ॉल्ट भूमिका:

select dbms_metadata.get_granted_ddl( 'DEFAULT_ROLE', 'PHIL' ) from dual;

सिस्टम अनुदान:

select dbms_metadata.get_granted_ddl( 'SYSTEM_GRANT', 'PHIL' ) from  dual;

वस्तु अनुदान:

select dbms_metadata.get_granted_ddl( 'OBJECT_GRANT', 'PHIL' ) from dual;

भूमिका अनुदान:

select dbms_metadata.get_granted_ddl( 'ROLE_GRANT', 'PHIL' ) from dual;

कोटा:

select dbms_metadata.get_granted_ddl( 'TABLESPACE_QUOTA', 'PHIL' ) from dual;

यदि उपरोक्त में से कोई भी आउटपुट नहीं है, तो आपको एक अपवाद मिलेगा जो कुछ इस तरह दिखता है:

SQL> select dbms_metadata.get_granted_ddl( 'TABLESPACE_QUOTA', 'PHIL' ) from dual;
ERROR:
ORA-31608: specified object of type TABLESPACE_QUOTA not found
ORA-06512: at "SYS.DBMS_METADATA", line 4018
ORA-06512: at "SYS.DBMS_METADATA", line 5991
ORA-06512: at line 1

no rows selected

SQL>

फिर उपयोगकर्ता नाम बदलने के लिए आउटपुट पर एक खोज और बदलें।


ध्यान दें कि डीडीएल पीढ़ी मौजूदा उपयोगकर्ता को दोहरे-कोट्स में लपेटती है; यह मौजूदा उपयोगकर्ता नाम को बहुत सरल बनाता है।
एंड्रयू वोल्फ

1
ROLE_GRANT को सफल होने के लिए नया उपयोगकर्ता बनाते समय DEFAULT_ROLE कथन को पूर्ववर्ती करना होगा।
theofilos

@ Theofilos धन्यवाद, संपादित
Betlista
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.