English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
先说基本用法:
先按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.