त्रुटि: ORA-65096: अमान्य सामान्य उपयोगकर्ता या भूमिका का नाम


118

मैंने अभी oracle11g स्थापित किया था, और यह स्कॉट स्कीमा को याद कर रहा था। इसलिए मैं इसे स्वयं उत्पन्न करने की कोशिश कर रहा हूं। मुझे "स्कॉट" स्कीमा की एसक्यूएल स्क्रिप्ट मिली, लेकिन जब मैं क्वेरी चलाने की कोशिश करता हूं "टाइगर द्वारा पहचाने गए उपयोगकर्ता स्कॉट बनाएं"; यह निम्नलिखित त्रुटि प्रदर्शित करता है:

ORA-65096: अमान्य सामान्य उपयोगकर्ता या भूमिका नाम।

मूल रूप से यह मुझे एक उपयोगकर्ता "स्कॉट" बनाने की अनुमति नहीं दे रहा है। ऐसा क्यों है, और मैं अपनी समस्या को कैसे ठीक कर सकता हूं?


8
यह होना असंभव है 11g, आप पर होना चाहिए 12c
ललित कुमार B

हो सकता है कि आपने 11g क्लाइंट स्थापित किया हो, लेकिन आप 12c डेटाबेस से जुड़ रहे हैं? आपने वास्तव में क्या स्थापित किया?
एलेक्स

1
उपयोगकर्ता नाम से पहले C ## संलग्न करें।
सात्विक

जवाबों:


344

खतरा

इस तरह के undocumented मापदंडों की स्थापना (जैसा कि अग्रणी अंडरस्कोर द्वारा इंगित किया गया है) केवल Oracle समर्थन की दिशा के तहत किया जाना चाहिए। इस तरह के मार्गदर्शन के बिना ऐसे मापदंडों को बदलना आपके समर्थन अनुबंध को अमान्य कर सकता है। इसलिए अपने जोखिम पर ऐसा करें।

विशेष रूप से, यदि आप सेट करते हैं "_ORACLE_SCRIPT"=true, तो कुछ डेटा शब्दकोश परिवर्तन स्तंभ '' Y '' के लिए ORACLE_MAINTAINED सेट के साथ किए जाएंगे। उन उपयोगकर्ताओं और वस्तुओं को कुछ डीबीए स्क्रिप्ट से गलत तरीके से बाहर रखा जाएगा। और उन्हें कुछ सिस्टम स्क्रिप्ट में गलत तरीके से शामिल किया जा सकता है।

यदि आप उपरोक्त जोखिमों के साथ ठीक हैं, और आम उपयोगकर्ताओं को सही तरीका नहीं बनाना चाहते हैं, तो नीचे दिए गए उत्तर का उपयोग करें।


उपयोगकर्ता चलाने से पहले:

alter session set "_ORACLE_SCRIPT"=true;  

इसका जवाब मुझे यहां मिला


6
जागरूक रहें, यह एक छिपा हुआ पैरामीटर है और केवल Oracle समर्थन द्वारा अनुशंसित होने पर उपयोग किया जाता है।
ललित कुमार B

5
उत्पादन प्रणालियों में अंडरस्कोर (छिपे हुए) मापदंडों का उपयोग करना खतरनाक है, क्योंकि यह आपके समर्थन अनुबंध को अमान्य कर सकता है। इसलिए आपको लोगों को उचित चेतावनी दिए बिना उन्हें सेट करने की सलाह देनी चाहिए।
एपीसी

3
यह गलत है और oracle में समर्थित नहीं है, मैंने इसका उपयोग किया है और इसने एक और आंतरिक मुद्दे को जन्म दिया है।
फिराज़ निज़ाम

1
यह Oracle डेटाबेस 18c एक्सप्रेस एडिशन रिलीज़ 18.0.0.0.0 - उत्पादन
विटाली

2
@ विक्टर - क्योंकि हम केवल उन्हें बदलने की अनुमति देते हैं जब ओरेकल सपोर्ट द्वारा ऐसा करने का निर्देश दिया जाता है। जैसा कि मैंने कहा, हमारे स्वयं के बल्ले से अनिर्दिष्ट मापदंडों की स्थापना हमारे समर्थन अनुबंध को अमान्य कर सकती है। आमतौर पर, प्रलेखित और अनिर्दिष्ट मापदंडों के लिए ओरेकल की डिफ़ॉल्ट सेटिंग्स आमतौर पर सभी अनुप्रयोगों के लिए ध्वनि होती हैं, और उन्हें बदलने की आवश्यकता नहीं होती है। Tweaking अंडरस्कोर पैरामीटर उन लोगों से अपील करता है जो आर्कन एक्सेस के रोमांच का आनंद लेते हैं, जो उन्हें ट्विक करने का सबसे खराब कारण है। लेकिन अगर आप के बारे में चिंता करने के लिए एक समर्थन अनुबंध की जरूरत नहीं है, तो आप किसी भी तरह से आप चुन ;-) में अपने सिस्टम को नुकसान पहुँचाए जोखिम के लिए स्वतंत्र हैं
एपीसी

55

मैंने अभी oracle11g स्थापित किया है

ORA-65096: अमान्य सामान्य उपयोगकर्ता या भूमिका नाम

नहीं, आपने Oracle 12c स्थापित किया है । वह त्रुटि केवल पर हो सकती है 12c, और नहीं हो सकती है 11g

हमेशा 4 दशमलव स्थानों तक अपने डेटाबेस संस्करण की जाँच करें :

SELECT banner FROM v$version WHERE ROWNUM = 1;

ओरेकल 12 सी बहुपरत कंटेनर डेटाबेस है:

  • एक रूट कंटेनर ( CDB )
  • और / या शून्य, एक या कई प्लग करने योग्य डेटाबेस ( PDB )।

आपने डेटाबेस को एक कंटेनर डेटाबेस के रूप में बनाया होगा । हालांकि, आप कंटेनर में उपयोगकर्ता बनाने की कोशिश कर रहे हैं, यानी CDB $ ROOT , हालाँकि, आपको उपयोगकर्ता को PLUGALABLE डेटाबेस में बनाना चाहिए ।

आपको कंटेनर में एप्लिकेशन-संबंधित ऑब्जेक्ट बनाने के लिए नहीं माना जाता है, कंटेनर प्लग करने योग्य डेटाबेस के लिए मेटाडेटा रखता है। आपको सामान्य डेटाबेस संचालन के लिए प्लग करने योग्य डेटाबेस का उपयोग करना चाहिए। एल्स, इसे कंटेनर के रूप में न बनाएं, और न ही मल्टी-टेनेंसी का उपयोग करें । हालाँकि, 12cR2 आगे आप एक गैर-कंटेनर डेटाबेस वैसे भी नहीं बना सकते हैं।

और सबसे शायद, नमूना स्कीमा पहले से ही स्थापित हो सकता है, आपको बस उन्हें प्लग करने योग्य डेटाबेस में अनलॉक करने की आवश्यकता है ।

उदाहरण के लिए, यदि आपने प्‍लग करने योग्य डेटाबेस बनाया है pdborcl:

sqlplus SYS/password@PDBORCL AS SYSDBA

SQL> ALTER USER scott ACCOUNT UNLOCK IDENTIFIED BY tiger;

sqlplus scott/tiger@pdborcl

SQL> show user;
USER is "SCOTT"

PDBs दिखाने के लिए और रूट कंटेनर से एक प्लग करने योग्य डेटाबेस से कनेक्ट करने के लिए:

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

SQL> show pdbs

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB                        READ WRITE NO

SQL> alter session set container = ORCLPDB;

Session altered.

SQL> show con_name;

CON_NAME
------------------------------
ORCLPDB

मेरा सुझाव है, Oracle 12c पोस्ट इंस्टॉलेशन अनिवार्य चरण पढ़ें


नोट : उत्तर _ORACLE_SCRIPTको सही पर सेट करने के लिए छिपे हुए पैरामीटर का उपयोग करने का सुझाव देना उत्पादन प्रणाली में खतरनाक है और आपके समर्थन अनुबंध को अमान्य भी कर सकता है। ओरेकल समर्थन से परामर्श के बिना खबरदार, छिपे हुए मापदंडों का उपयोग न करें


उपरोक्त लिंक "Oracle 12c पोस्ट इंस्टॉलेशन अनिवार्य चरण" टूट गया है। नई लिंक: docs.oracle.com/database/121/LADBI/post_inst_task.htm#LADBI8084
विरासत

@ हेरी क्या आपको यकीन है? क्योंकि यह ठीक काम कर रहा है ओरेकल 12 सी पोस्ट इंस्टॉलेशन अनिवार्य कदम
ललित कुमार बी

47

Oracle 12c और इसके बाद के संस्करण में, हमारे पास दो प्रकार के डेटाबेस हैं:

  1. कंटेनर डेटाबेस (सीडीबी), और
  2. प्लग करने योग्य डेटाबेस (पीडीबी)।

यदि आप एक उपयोगकर्ता बनाना चाहते हैं, तो आपके पास दो संभावनाएँ हैं:

  1. आप "कंटेनर उपयोगकर्ता" उर्फ ​​"सामान्य उपयोगकर्ता" बना सकते हैं।
    आम उपयोगकर्ता सीबीडी के साथ-साथ वर्तमान और भविष्य के पीडीबी के हैं। इसका मतलब है कि वे निर्दिष्ट विशेषाधिकार के अनुसार कंटेनर डीबी या प्लगेबल डीबी में परिचालन कर सकते हैं।

    create user c##username identified by password;

  2. आप एक "प्‍लगेबल यूजर" उर्फ ​​"लोकल यूजर" बना सकते हैं।
    स्थानीय उपयोगकर्ता केवल एक ही PDB के हैं। इन उपयोगकर्ताओं को प्रशासनिक विशेषाधिकार दिए जा सकते हैं, लेकिन केवल उस पीडीबी के लिए जिसके अंदर वे मौजूद हैं। उसके लिए, आपको उस तरह प्लग करने योग्य डेटा से कनेक्ट करना चाहिए:

    alter session set container = nameofyourpluggabledatabase;

    और वहां, आप आमतौर पर उपयोगकर्ता बना सकते हैं:

    create user username identified by password;

उपयोग करने के लिए टेबलस्पेस (एस) निर्दिष्ट करने के लिए मत भूलना, यह आपके डीबी के आयात / निर्यात के दौरान उपयोगी हो सकता है। इसके बारे में अधिक जानकारी के लिए इसे देखें https://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503


इस उत्तर की शैली मेरी पसंदीदा है, उपयोग करने के लिए त्वरित है।
१२:२०

0

परिवर्तन सत्र सेट "_ORACLE_SCRIPT" = सत्य;

"Chutinhbk123 @!" द्वारा पहचाने गए उपयोगकर्ता sec_admin बनाएँ;


-1

डेटाबेस कनेक्ट टूल पर उपयोगकर्ता निर्भरता बनाएं

sql plus
SQL> connect as sysdba;
Enter user-name: sysdba
Enter password:
Connected.
SQL> ALTER USER hr account unlock identified by hr;
User altered
 then create user on sql plus and sql developer

3
क्या आप कृपया अपने कोड को ठीक से प्रारूपित कर सकते हैं और कुछ संदर्भ दे सकते हैं कि क्यों यह समस्या को अन्य उत्तरों से बेहतर बनाता है?
निको हसे

-1

खाली स्ट्रिंग से "_ORACLE_SCRIPT"=trueबदलने के लिए अधिक सुरक्षित विकल्प हो सकता है । जब यह शून्य है - किसी भी नाम का उपयोग आम उपयोगकर्ता के लिए किया जा सकता है। वहां मिला ।"_common_user_prefix"C##

उस मान को बदलने के दौरान आपको किसी अन्य समस्या का सामना करना पड़ सकता है - ORA-02095 - पैरामीटर को संशोधित नहीं किया जा सकता है, जिसे आपके कॉन्फ़िगरेशन ( स्रोत ) के आधार पर कई तरीकों से तय किया जा सकता है ।

तो मेरे लिए यह काम किया:

alter system set _common_user_prefix = ''; scope=spfile;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.