English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
先说基本用法:
先按11G之前进行
conn / as sysdba;
create user test identifed by test;
ORA-65096: 公用用户名或角色名无效.
查官方文档得知“试图创建一个通用用户,必需要用C##或者c##开头”,这时候心里会有疑问,什么是common user?不管先建成功了再说
create C##user test identifed by test;
创建成功
SQL>show con_name;
CON_NAME
------------------------------
CDB$ROOT
select con_id, dbid, NAME, OPEN_MODE from v$pdbs;
CON_ID DBID NAME OPEN_MODE
---------- ---------- ------------------------------ ----------
2 4066409480 PDB$SEED READ ONLY
3 2270995695 PDBORCL MOUNTED
SQL>alter session set container=PDBORCL;
这时再用create user test identifed by test;建立用户就可以了。
CDB和PDB是ORACLE 12C一个很亮的新特性,由于他们的引入导致传统的ORACLE数据库管理理念不少发生了改变,这里列举了部分最基本的cdb和pdb管理方式
cdb和pdb关系图
ORACLE 12C版本
SQL> select * from v$version; BANNER CON_ID -------------------------------------------------------------------------------- ---------- Oracle Datenbank 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0 PL/SQL Release 12.1.0.1.0 - Produktion 0 CORE 12.1.0.1.0 Production 0 TNS für Linux: Version 12.1.0.1.0 - Produktion 0 NLSRTL Version 12.1.0.1.0 - Produktion 0
pdb starten und beenden
SQL> start ORACLE-Instanz gestartet. Gesamtgröße des Systemglobalen Bereichs 597098496 bytes Fester Größe 2291072 bytes Variabler Größe 272632448 bytes Datenbank-Puffer 314572800 bytes Redo Puffer 7602176 bytes Datenbank gemountet. Datenbank geöffnet. SQL> select con_id,dbid,NAME,ÖFFNUNGSMODUS from v$pdbs; CON_ID DBID NAME ÖFFNUNGSMODUS ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED NUR LESSEN 3 3313918585 PDB1 MOUNTED 4 3872456618 PDB2 MOUNTED SQL> ändere PLUGGABLE database pdb1 öffnen; Pluggable database geändert. SQL> select con_id,dbid,NAME,ÖFFNUNGSMODUS from v$pdbs; CON_ID DBID NAME ÖFFNUNGSMODUS ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED NUR LESSEN 3 3313918585 PDB1 LESSEN 4 3872456618 PDB2 MOUNTED SQL> ändere PLUGGABLE database pdb1 schließen; Pluggable database geändert. SQL> select con_id,dbid,NAME,ÖFFNUNGSMODUS from v$pdbs; CON_ID DBID NAME ÖFFNUNGSMODUS ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED NUR LESSEN 3 3313918585 PDB1 MOUNTED 4 3872456618 PDB2 MOUNTED SQL> ändere PLUGGABLE database alle öffnen; Pluggable database geändert. SQL> select con_id,dbid,NAME,ÖFFNUNGSMODUS from v$pdbs; CON_ID DBID NAME ÖFFNUNGSMODUS ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED NUR LESSEN 3 3313918585 PDB1 LESSEN 4 3872456618 PDB2 LESSEN SQL> ändere PLUGGABLE database alle schließen; Pluggable database geändert. SQL> select con_id,dbid,NAME,ÖFFNUNGSMODUS from v$pdbs; CON_ID DBID NAME ÖFFNUNGSMODUS ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED NUR LESSEN 3 3313918585 PDB1 MOUNTED 4 3872456618 PDB2 MOUNTED SQL> alter session set container=pdb1; Session altered. SQL> start Pluggable Database geöffnet. SQL> select con_id,dbid,NAME,ÖFFNUNGSMODUS from v$pdbs; CON_ID DBID NAME ÖFFNUNGSMODUS ---------- ---------- ------------------------------ ---------- 3 3313918585 PDB1 LESSEN
Die Verwaltung der pdb kann im cdb erfolgen, oder direkt in der pdb, falls im cdb, ist der PLUGGABLE-Schlüssel erforderlich, falls direkt in der pdb, verhält sich die pdb wie eine normale Datenbank
pdb anmelden
[oracle@xifenfei ~]$ lsnrctl status LSNRCTL für Linux: Version 12.1.0.1.0 - Produktion auf 12-MAY-2013 08:07:02 Copyright (c) 1991, 2013, Oracle. Alle Rechte vorbehalten. Verbindungsaufbau zu (BESCHREIBUNG=(ADRESSE=(PROTOCOL=TCP)(HOST=xifenfei)(PORT=1521))) STATUS des LISTENERS ------------------------ Alias LISTENER Version TNSLSNR für Linux: Version 12.1.0.1.0 - Produktion Startdatum 11-MAY-2013 18:30:54 Betriebszeit 0 Tage 13 hr. 36 min. 8 sec Verfolgungsstufe aus Sicherheit AN: Lokale OS-Authentifizierung SNMP AUS Hörer Parameterdatei /u01/app/grid/produkt/12.1/netzwerk/admin/listener.ora Hörer Protokolldatei /u01/app/grid/diag/tnslsnr/xifenfei/listener/alert/log.xml Zuhörsummary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xifenfei)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=xifenfei)(PORT=5500)) (Sicherheit=(my_wallet_directory=/u01/oracle/12.1/db_1/admin/cdb/xdb_wallet))(Präsentation=HTTP)(Sitzung=RAW)) Diensteübersicht... Dienst "+ASM" hat 1 Instanz(en). Instanz "+ASM", Status READY, hat 1 Handler(s) für diesen Dienst... Dienst "cdb" hat 1 Instanz(en). Instanz "cdb", Status READY, hat 1 Handler(s) für diesen Dienst... Dienst "cdbXDB" hat 1 Instanz(en). Instanz "cdb", Status READY, hat 1 Handler(s) für diesen Dienst... Dienst "pdb1" hat 1 Instanz(en). Instanz "cdb", Status READY, hat 1 Handler(s) für diesen Dienst... Dienst "pdb2" hat 1 Instanz(en). Instanz "cdb", Status READY, hat 1 Handler(s) für diesen Dienst... Befehl erfolgreich abgeschlossen [oracle@xifenfei ~]$ tnsping pdb1 TNS Ping Utility für Linux: Version 12.1.0.1.0 - Produktion auf 12-MAY-2013 08:07:09 Copyright (c) 1997, 2013, Oracle. Alle Rechte vorbehalten. Verwendete Parameterdateien: TNSNAMES-Adapter verwendet, um den Alias zu lösen Versuch, Verbindung mit (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xifenfei) (PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pdb1))) OK (20 msec) [oracle@xifenfei ~]$ sqlplus sys/xifenfei@pdb1 as sysdba SQL*Plus: Release 12.1.0.1.0 Production am Sun Mai 12 08:08:02 2013 Copyright (c) 1982, 2013, Oracle. Alle Rechte vorbehalten. Verbunden mit: Oracle Datenbank 12c Enterprise Edition Release 12.1.0.1.0 - 64Bit Produktion Mit Partitionierung, automatischer Speicherverwaltung, OLAP, fortgeschrittener Analyse und Optionen für Real Application Testing SQL> show con_name; CON_NAME ------------------------------ PDB1 [oracle@xifenfei ~]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production am Sun Mai 12 08:09:14 2013 Copyright (c) 1982, 2013, Oracle. Alle Rechte vorbehalten. Verbunden mit: Oracle Datenbank 12c Enterprise Edition Release 12.1.0.1.0 - 64Bit Produktion Mit Partitionierung, automatischer Speicherverwaltung, OLAP, fortgeschrittener Analyse und Optionen für Real Application Testing SQL> alter session set container=pdb1; Session altered. SQL> show con_name; CON_NAME ------------------------------ PDB1
Die PDB kann durch 'alter session container' betreten oder direkt über das TNS-Verfahren angemeldet werden
Benutzer erstellen
SQL> show con_name; CON_NAME ------------------------------ CDB$ROOT SQL> select con_id,dbid,NAME,ÖFFNUNGSMODUS from v$pdbs; CON_ID DBID NAME ÖFFNUNGSMODUS ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED NUR LESSEN 3 3313918585 PDB1 LESSEN 4 3872456618 PDB2 MOUNTED SQL> create user xff identified by xifenfei; create user xff identified by xifenfei * FEHLER in Zeile 1: ORA-65096: ungültiger Name für gemeinsamen Benutzer oder Rolle SQL> !oerr ora 65096 65096, 00000, "ungültiger Name für gemeinsamen Benutzer oder Rolle" // *Ursache: Ein Versuch wurde unternommen, einen gemeinsamen Benutzer oder eine Rolle mit einem Namen zu erstellen // Das war nicht gültig für gemeinsame Benutzer oder Rollen. Zusätzlich zu // Die üblichen Regeln für Benutzer- und Rollennamen, gemeinsame Benutzer und Rollen // names must start with C## or c## and consist only of ASCII // characters. // *Action: Specify a valid common user or role name. // SQL> create user c##xff identified by xifenfei; User created. SQL> SELECT USERNAME,CON_ID,USER_ID FROM CDB_USERS WHERE USERNAME='C##XFF'; USERNAME CON_ID USER_ID ---------- ---------- ---------- C##XFF 1 103 C##XFF 3 104 SQL> alter session set container=pdb1; Session altered. SQL> show con_name CON_NAME ------------------------------ PDB1 SQL> create user xff identified by xifenfei; User created. SQL> create user c##abc identified by xifenfei; create user c##abc identified by xifenfei * FEHLER in Zeile 1: ORA-65094: invalid local user or role name
By default, users are created with container=all, in cdb only global users (starting with c##) can be created, which will create this user in cdb and all pdb (but global users in pdb need to be authorized separately to access pdb). Only local users can be created in pdb
User authorization
SQL> grant connect to c##xff; Grant succeeded. SQL> select GRANTEE,con_id from cdb_ROLE_PRIVS where GRANTED_ROLE='CONNECT' AND GRANTEE='C##XFF'; GRANTEE CON_ID ------------------------------ ---------- C##XFF 1 SQL> grant resource to c##xff container=all; Grant succeeded. SQL> select GRANTEE,con_id from cdb_ROLE_PRIVS where GRANTED_ROLE='RESOURCE' AND GRANTEE='C##XFF'; GRANTEE CON_ID ------------------------------ ---------- C##XFF 1 C##XFF 3
Standardmäßig wird der Benutzerberechtigung nur der aktuelle container erteilt, in cdb kann auch container=all angegeben werden, um für alle geöffneten pdb und alle Benutzer, die diesen Benutzer haben, Berechtigungen zu erteilen
Parameter ändern
SQL> alter system set open_cursors=500 container=all; System geändert. SQL> conn sys/xifenfei@pdb1 as sysdba Connected. SQL> show parameter open_cursors; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 500 SQL> alter system set open_cursors=100; alter system set open_cursors=100 * FEHLER in Zeile 1: ORA-01219: Datenbank oder einsteckbare Datenbank nicht geöffnet: Abfragen sind auf festen nur Tabellen oder Ansichten SQL> alter database open; Datenbank geändert. SQL> alter system set open_cursors=100; System geändert. SQL> show parameter open_cursors; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 100 SQL> conn / as sysdba Connected. SQL> show parameter open_cursors; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ open_cursors integer 500
Hier können Sie sehen, dass Änderungen in cdb vorgenommen werden, die pdb übernehmen; wenn Änderungen in pdb vorgenommen werden, werden die Parameterbedeutungen, die pdb von cdb geerbt hat, überschrieben.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem jeweiligen Urheber. Der Inhalt wurde von Internetnutzern freiwillig bereitgestellt und hochgeladen. Diese Website besitzt keine Eigentumsrechte, hat den Inhalt nicht manuell bearbeitet und übernimmt keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige urheberrechtliche Inhalte finden, senden Sie bitte eine E-Mail an: notice#w3Hinweis: Bitte ersetzen Sie im E-Mail-Versand # durch @ und melden Sie den Verdacht auf Urheberrechtsverletzung, und fügen Sie relevante Beweise bei. Bei nachgewiesener Urheberrechtsverletzung wird diese Seite sofort die beanstandeten Inhalte löschen.