English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

ORACLE 12Grundlegende Kenntnisse zur Wartung von C PDB

先说基本用法:
先按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.

Vielleicht gefällt dir auch