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

ORACLE 12Présentation des connaissances de base de la maintenance de PDB en C

先说基本用法:
先按11G之前进行
conn / as sysdba;
create user test identified by test;

ORA-65096: 公用用户名或角色名无效.

查官方文档得知“试图创建一个通用用户,必需要用C##或者c##开头”,这时候心里会有疑问,什么是common user?不管先建成功了再说
create C##user test identified 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 identified by test;建立用户就可以了。

CDB和PDB是ORACLE 12C一个很亮的新特性,由于他们的引入导致传统的ORACLE数据库管理理念不少发生了改变,这里列举了部分最基本的cdb和pdb管理方式
cdb和pdb关系图

ORACLE 12C版本

SQL> select * from v$version;
BANNER                                        CON_ID
-------------------------------------------------------------------------------- ----------
Base de données Oracle 12c Edition Enterprise Release 12.1.0.1.0 - 64bit Production       0
PL/SQL Release 12.1.0.1.0 - Production                          0
CORE  12.1.0.1.0 Production                            0
TNS pour Linux : Version 12.1.0.1.0 - Production                      0
Version NLSRTL 12.1.0.1.0 - Production                          0

Démarrage et arrêt pdb

SQL> startup
Instance ORACLE démarrée.
Total System Global Area 597098496 octets
Taille fixe         2291072 octets
Taille variable       272632448 octets
Base de données Buffers     314572800 octets
Redo Buffers        7602176 octets
Base de données montée.
Base de données ouverte.
SQL> select con_id,dbid,NOM,MODE OUVERT from v$pdbs;
  CON_ID    DBID NOM              MODE OUVERT
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            LECTURE SEULE
     3 3313918585 PDB1              MOUNTED
     4 3872456618 PDB2              MOUNTED
SQL> alter PLUGGABLE database pdb1 open;
Base de données pluggable modifiée.
SQL> select con_id,dbid,NOM,MODE OUVERT from v$pdbs;
  CON_ID    DBID NOM              MODE OUVERT
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            LECTURE SEULE
     3 3313918585 PDB1              LECTURE ECRITURE
     4 3872456618 PDB2              MOUNTED
SQL> alter PLUGGABLE database pdb1 close;
Base de données pluggable modifiée.
SQL> select con_id,dbid,NOM,MODE OUVERT from v$pdbs;
  CON_ID    DBID NOM              MODE OUVERT
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            LECTURE SEULE
     3 3313918585 PDB1              MOUNTED
     4 3872456618 PDB2              MOUNTED
SQL> alter PLUGGABLE database all open;
Base de données pluggable modifiée.
SQL> select con_id,dbid,NOM,MODE OUVERT from v$pdbs;
  CON_ID    DBID NOM              MODE OUVERT
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            LECTURE SEULE
     3 3313918585 PDB1              LECTURE ECRITURE
     4 3872456618 PDB2              LECTURE ECRITURE
SQL> alter PLUGGABLE database all close;
Base de données pluggable modifiée.
SQL> select con_id,dbid,NOM,MODE OUVERT from v$pdbs;
  CON_ID    DBID NOM              MODE OUVERT
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            LECTURE SEULE
     3 3313918585 PDB1              MOUNTED
     4 3872456618 PDB2              MOUNTED
SQL> alter session set container=pdb1;
Session altered.
SQL> startup
Base de données pluggable ouverte.
SQL> select con_id,dbid,NOM,MODE OUVERT from v$pdbs;
  CON_ID    DBID NOM              MODE OUVERT
---------- ---------- ------------------------------ ----------
     3 3313918585 PDB1              LECTURE ECRITURE

La gestion de pdb peut se faire dans cdb ou dans pdb, si c'est dans cdb, il faut le mot-clé PLUGGABLE, si c'est dans pdb, il fonctionne comme une base de données ordinaire

Connexion pdb

[oracle@xifenfei ~]$ lsnrctl status
LSNRCTL pour Linux : Version 12.1.0.1.0 - Production on 12-MAY-2013 08:07:02
Copyright (c) 1991, 2013, Oracle. Tous droits réservés.
Connexion à (DESCRIPTION=(ADRESSE=(PROTOCOL=TCP)(HÔTE=xifenfei)(PORT=1521)))
STATUS de l'auditeur
------------------------
Alias           LISTENER
Version          TNSLSNR pour Linux : Version 12.1.0.1.0 - Production
Date de démarrage        11-MAY-2013 18:30:54
Uptime          0 jours 13 hr. 36 min. 8 sec
Niveau de trace        désactivé
Sécurité         ACTIVÉ : Authentification de l'OS local
SNMP           DÉSACTIVÉ
Fichier de paramètres de l'auditeur  /u01/app/grid/product/12.1/network/admin/listener.ora
Listener Log File     /u01/app/grid/diag/tnslsnr/xifenfei/listener/alert/log.xml
Listening Endpoints Summary...
 (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xifenfei)(PORT=1521)))
 (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=xifenfei)(PORT=5500))
(Security=(my_wallet_directory=/u01/oracle/12.1/db_1/admin/cdb/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "+ASM" has 1 instance(s).
 Instance "+ASM", status READY, has 1 handler(s) for this service...
Service "cdb" has 1 instance(s).
 Instance "cdb", status READY, has 1 handler(s) for this service...
Service "cdbXDB" has 1 instance(s).
 Instance "cdb", status READY, has 1 handler(s) for this service...
Service "pdb1" has 1 instance(s).
 Instance "cdb", status READY, has 1 handler(s) for this service...
Service "pdb2" has 1 instance(s).
 Instance "cdb", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@xifenfei ~]$ tnsping pdb1
TNS Ping Utility for Linux: Version 12.1.0.1.0 - Production on 12-MAY-2013 08:07:09
Copyright (c) 1997, 2013, Oracle. Tous droits réservés.
Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xifenfei))
(PORT =) 1521) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = pdb)1)))
OK (20 msec)
[oracle@xifenfei ~]$ sqlplus sys/xifenfei@pdb1 as sysdba
SQL*Plus : Release 12.1.0.1.0 Production le jeu de mai 12 08:08:02 2013
Copyright (c) 1982, 2013, Oracle. Tous droits réservés.
Connecté à :
Base de données Oracle 12c Edition Enterprise Release 12.1.0.1.0 - 64Production de bits
Avec la partitionnement, la gestion automatique du stockage, l'OLAP, l'analyse avancée
et les options de test de la Real Application
SQL> show con_name;
CON_NAME
------------------------------
PDB1
[oracle@xifenfei ~]$ sqlplus / as sysdba
SQL*Plus : Release 12.1.0.1.0 Production le jeu de mai 12 08:09:14 2013
Copyright (c) 1982, 2013, Oracle. Tous droits réservés.
Connecté à :
Base de données Oracle 12c Edition Enterprise Release 12.1.0.1.0 - 64Production de bits
Avec la partitionnement, la gestion automatique du stockage, l'OLAP, l'analyse avancée
et les options de test de la Real Application
SQL> alter session set container=pdb1;
Session altered.
SQL> show con_name;
CON_NAME
------------------------------
PDB1

le pdb peut être entré via alter session container ou directement via le mode tns

Création de l'utilisateur

SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
SQL> select con_id,dbid,NOM,MODE OUVERT from v$pdbs;
  CON_ID    DBID NOM              MODE OUVERT
---------- ---------- ------------------------------ ----------
     2 4048821679 PDB$SEED            LECTURE SEULE
     3 3313918585 PDB1              LECTURE ECRITURE
     4 3872456618 PDB2              MOUNTED
SQL> create user xff identified by xifenfei;
create user xff identifié par xifenfei
      *
ERROR at line 1:
ORA-65096: nom d'utilisateur ou rôle commun invalide
SQL> !oerr ora 65096
65096, 00000, "nom d'utilisateur ou rôle commun invalide"
// *Cause : Une tentative a été faite de créer un utilisateur ou un rôle commun avec un nom
//     ceci n'était pas valide pour les utilisateurs ou rôles communs. En plus de
//     les règles habituelles pour les noms d'utilisateur et de rôle, utilisateur et rôle commun 
//     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
      *
ERROR at line 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 the user in cdb and all pdb (but the global users in pdb need to be authorized separately to access the pdb). Users that can only be created in pdb are local users

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

Par défaut, l'autorisation utilisateur ne donne que le container actuel, dans cdb, vous pouvez également spécifier container=all, pour autoriser tous les pdb ouverts et existant pour cet utilisateur

Modification des paramètres

SQL> alter system set open_cursors=;500 container=all;
System altered.
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
*
ERROR at line 1:
ORA-01219: database or pluggable database not open: queries allowed on fixed
tables or views only
SQL> alter database open;
Database altered.
SQL> alter system set open_cursors=;100;
System altered.
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

Vous pouvez voir ici que les modifications apportées dans cdb seront héritées par pdb ; si les modifications sont apportées dans pdb, elles couvriront les paramètres de sens hérités de cdb par pdb

Déclaration : le contenu de cet article est extrait du réseau, propriété du propriétaire original, contribué et téléversé par les utilisateurs d'Internet, ce site n'a pas de propriété, n'a pas été traité par l'éditeur humain et n'assume aucune responsabilité juridique. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour faire une plainte, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.

Vous pourriez aussi aimer