hata: ORA-65096: oracle'da geçersiz ortak kullanıcı veya rol adı


118

Oracle11g'yi yeni yükledim ve Scott şeması eksikti. Bu yüzden onu kendim oluşturmaya çalışıyorum. "Scott" şemasının sql komut dosyasını aldım, ancak "kaplan tarafından tanımlanan Scott kullanıcı oluştur" sorgusunu çalıştırmayı denediğimde; aşağıdaki hatayı görüntüler:

ORA-65096: oracle'da geçersiz ortak kullanıcı veya rol adı.

Temelde bir kullanıcı "Scott" oluşturmama izin vermiyor. Neden böyle ve sorunumu nasıl çözebilirim?


8
Buna sahip olmak imkansız 11g, devam etmelisin 12c.
Lalit Kumar B

Belki bir 11g istemcisi yüklediniz, ancak bir 12c veritabanına bağlanıyorsunuz? Tam olarak ne yüklediniz?
Alex Poole

1
Kullanıcı adının önüne C ## ekleyin.
Sathvik

Yanıtlar:


344

Hatanın% 99,9'u ORA-65096: invalid common user or role name, bir PDB'de oturum açmanız gerektiğinde CDB'de oturum açtığınız anlamına gelir.

Ancak kullanıcıları yanlış şekilde oluşturmakta ısrar ediyorsanız aşağıdaki adımları izleyin.

TEHLİKE

Bunun gibi belgelenmemiş parametrelerin ayarlanması (baştaki alt çizgiyle gösterildiği gibi) yalnızca Oracle Support'un yönergesi altında yapılmalıdır. Bu tür parametreleri bu tür bir rehberlik olmadan değiştirmek, destek sözleşmenizi geçersiz kılabilir. Bu yüzden bunu kendi sorumluluğunuzda yapın.

Özellikle, ayarlarsanız "_ORACLE_SCRIPT"=true, ORACLE_MAINTAINED sütunu 'Y' olarak ayarlanmış şekilde bazı veri sözlüğü değişiklikleri yapılacaktır. Bu kullanıcılar ve nesneler, bazı DBA komut dosyalarından yanlışlıkla hariç tutulacaktır. Ve bazı sistem betiklerine yanlış bir şekilde dahil edilebilirler.

Yukarıdaki risklerde sorun yoksa ve ortak kullanıcıları doğru şekilde oluşturmak istemiyorsanız, aşağıdaki cevabı kullanın.


Kullanıcı çalıştırmasını oluşturmadan önce:

alter session set "_ORACLE_SCRIPT"=true;  

Cevabı burada buldum


6
Unutmayın, bunun gizli bir parametredir ve yalnızca Oracle desteği tarafından önerildiğinde kullanılmalıdır.
Lalit Kumar B

5
Destek sözleşmenizi geçersiz kılabileceğinden, Üretim sistemlerinde alt çizgi (gizli) parametrelerin kullanılması tehlikelidir. Bu nedenle, insanlara uygun uyarıları vermeden onları ayarlamalarını tavsiye etmelisiniz.
APC

3
bu yanlış ve oracle'da desteklenmiyor, kullandım ve başka bir dahili soruna neden oldu.
Firas Nizam

1
Oracle Database 18c Express Edition Sürüm 18.0.0.0.0 - Üretim
Vitalie

2
@Victor - Çünkü onları yalnızca Oracle Support tarafından yönlendirildiğinde değiştirmemize izin verilir. Dediğim gibi, belgelenmemiş parametreleri kendi yarasamızdan ayarlamak destek sözleşmemizi geçersiz kılabilir. Daha genel olarak, Oracle'ın belgelenmiş ve belgelenmemiş parametreler için varsayılan ayarları genellikle tüm uygulamalar için uygundur ve değiştirilmesi gerekmez. Alt çizgi parametrelerinin ince ayarlanması, gizli erişimin heyecanını yaşayan kişilere hitap ediyor, bu da onları düzeltmenin en kötü nedenidir. Ancak endişelenecek bir destek sözleşmeniz yoksa, sisteminize istediğiniz herhangi bir şekilde zarar verme riskinde özgürsünüz ;-)
APC

56

Oracle11g'yi yeni kurdum

ORA-65096: oracle'da geçersiz ortak kullanıcı veya rol adı

Hayır, Oracle 12c'yi kurdunuz . Bu hata yalnızca açık 12colabilir ve açık olamaz 11g.

Veritabanı sürümünüzü her zaman 4 ondalık basamağa kadar kontrol edin :

SELECT banner FROM v$version WHERE ROWNUM = 1;

Oracle 12c çok kiracılı konteyner veritabanı şunları içerir:

  • bir kök kapsayıcı ( CDB )
  • ve / veya sıfır, bir veya birçok takılabilir veritabanı ( PDB ).

Veritabanını bir konteyner veritabanı olarak oluşturmuş olmalısınız . Konteynırda kullanıcı oluşturmaya çalışırken, yani CDB $ ROOT , ancak kullanıcıyı PLUGGABLE veritabanında oluşturmalısınız .

Kapta uygulamayla ilgili nesneler oluşturmanız gerekmez, kapsayıcı, takılabilir veritabanları için meta verileri tutar. Genel veritabanı işlemleriniz için takılabilir veritabanını kullanmalısınız. Aksi takdirde, onu kapsayıcı olarak oluşturmayın ve çok kiracılı kullanmayın . Ancak, 12cR2'den itibaren yine de kapsayıcı olmayan bir veritabanı oluşturamazsınız.

Ve büyük ihtimalle, örnek şemalar zaten sadece gerekir takılmış olabilir kilidini takılabilir veritabanında.

Örneğin, takılabilir veritabanını şu şekilde oluşturduysanız 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"

PDB'leri göstermek ve kök kapsayıcıdan takılabilir bir veritabanına bağlanmak için:

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 Kurulum Sonrası Zorunlu Adımları okumanızı öneririm


Not : _ORACLE_SCRIPTGizli parametrenin true olarak ayarlanmasını öneren yanıtlar , bir üretim sisteminde tehlikelidir ve ayrıca destek sözleşmenizi geçersiz kılabilir. Oracle desteğine danışmadan, gizli parametreleri KULLANMAYIN .


Bağlantının yukarısındaki "Oracle 12c Kurulum Sonrası Zorunlu Adımlar" bozuk. Yeni bağlantı: docs.oracle.com/database/121/LADBI/post_inst_task.htm#LADBI8084
Heri

@Heri Emin misin? İyi çalıştığı için Oracle 12c Kurulum Sonrası Zorunlu Adımlar
Lalit Kumar B

47

Oracle 12c ve üzeri sürümlerde iki tür veritabanımız vardır:

  1. Container DataBase (CDB) ve
  2. Takılabilir Veri Tabanı (PDB).

Bir kullanıcı oluşturmak istiyorsanız, iki seçeneğiniz vardır:

  1. Bir "kapsayıcı kullanıcı" aka "ortak kullanıcı" oluşturabilirsiniz.
    Ortak kullanıcılar, CBD'lerin yanı sıra mevcut ve gelecekteki PDB'lere aittir. Bu, atanan ayrıcalıklara göre Container DB'lerinde veya Pluggable DB'lerde işlem yapabilecekleri anlamına gelir.

    create user c##username identified by password;

  2. "Yerel kullanıcı" olarak da bilinen bir "takılabilir kullanıcı" oluşturabilirsiniz.
    Yerel kullanıcılar yalnızca tek bir PDB'ye aittir. Bu kullanıcılara yönetici ayrıcalıkları verilebilir, ancak yalnızca içinde bulundukları PDB için. Bunun için, aşağıdaki gibi takılabilir datable'a bağlanmalısınız:

    alter session set container = nameofyourpluggabledatabase;

    ve orada, genellikle şu şekilde kullanıcı oluşturabilirsiniz:

    create user username identified by password;

Kullanılacak tablo alanlarını belirtmeyi unutmayın, DB'lerinizin içe / dışa aktarılması sırasında faydalı olabilir. Bununla ilgili daha fazla bilgi için buna bakın https://docs.oracle.com/database/121/SQLRF/statements_8003.htm#SQLRF01503


Bu cevabın tarzı benim favorim, kullanımı hızlı.
Zhiyong

1
SQL> alter session set "_ORACLE_SCRIPT"=true;  
SQL> create user sec_admin identified by "Chutinhbk123@!";

-1

Veritabanı bağlantı araçlarına kullanıcı bağımlılığı oluşturun

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
Lütfen kodunuzu doğru bir şekilde biçimlendirir misiniz ve bunun sorunu neden diğer yanıtlardan daha iyi çözdüğünü biraz açıklar mısınız?
Nico Haase

-1

Olabilir, daha güvenli bir alternatif "_ORACLE_SCRIPT"=truedeğiştirmektir "_common_user_prefix"gelen C##boş bir dizeye. Boş olduğunda - ortak kullanıcı için herhangi bir isim kullanılabilir. Orada bulundu .

Bu değeri değiştirirken başka bir sorunla karşılaşabilirsiniz - ORA-02095 - parametre değiştirilemez, bu, yapılandırmanıza ( kaynak ) bağlı olarak çeşitli şekillerde düzeltilebilir .

Bu yüzden benim için çalıştı:

alter system set _common_user_prefix = ''; scope=spfile;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.