English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Primero digamos el uso básico:
Primero siga11G antes de hacer
conn / as sysdba;
create user test identified by test;
ORA-65096: Nombre de usuario o nombre de rol común no válido.
Al buscar en la documentación oficial se sabe que 'al intentar crear un usuario común, es necesario usar C## o c## al inicio', en este momento puede surgir una pregunta, ¿qué es un usuario común? Por ahora, déjalo y continúa
create C##user test identified by test;
Creación exitosa
SQL>show con_name;
CON_NAME
------------------------------
CDB$ROOT
select con_id,dbid,NAME,MODOABIERTO from v$pdbs;
CON_ID DBID NAME MODOABIERTO
---------- ---------- ------------------------------ ----------
2 4066409480 PDB$SEED SOLO LECTURA
3 2270995695 PDBORCL MOUNTED
SQL>alter session set container=PDBORCL;
En este momento, es suficiente usar create user test identified by test; para crear el usuario.
CDB y PDB son ORACLE 12C una característica muy brillante, debido a su introducción, muchas ideas tradicionales de gestión de bases de datos ORACLE han cambiado, aquí se enumeran algunas de las formas más básicas de gestión de cdb y pdb
Diagrama de relaciones cdb y pdb
ORACLE 12Versión C
SQL> select * from v$version; BANNER CON_ID -------------------------------------------------------------------------------- ---------- Base de datos Oracle 12c Edición Enterprise 12.1.0.1.0 - 64Producción de bits 0 PL/Lanzamiento de SQL 12.1.0.1.0 - Producción 0 CORE 12.1.0.1.0 Producción 0 TNS para Linux: Versión 12.1.0.1.0 - Producción 0 Versión NLSRTL 12.1.0.1.0 - Producción 0
Iniciar y cerrar pdb
SQL> startup Instancia ORACLE iniciada. Área Global del Sistema Total 597098496 bytes Tamaño Fijo 2291072 bytes Tamaño Variable 272632448 bytes Buffers de Base de Datos 314572800 bytes Buffers de Redo 7602176 bytes Base de datos montada. Base de datos abierta. SQL> select con_id,dbid,NOMBRE,mmodo_abierto from v$pdbs; CON_ID DBID NOMBRE MODO ABIERTO ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED SOLO LECTURA 3 3313918585 PDB1 MONTADO 4 3872456618 PDB2 MONTADO SQL> alter PLUGGABLE database pdb1 abrir; Base de datos plugable modificada. SQL> select con_id,dbid,NOMBRE,mmodo_abierto from v$pdbs; CON_ID DBID NOMBRE MODO ABIERTO ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED SOLO LECTURA 3 3313918585 PDB1 LECTURA ESCRITURA 4 3872456618 PDB2 MONTADO SQL> alter PLUGGABLE database pdb1 cerrar; Base de datos plugable modificada. SQL> select con_id,dbid,NOMBRE,mmodo_abierto from v$pdbs; CON_ID DBID NOMBRE MODO ABIERTO ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED SOLO LECTURA 3 3313918585 PDB1 MONTADO 4 3872456618 PDB2 MONTADO SQL> alter PLUGGABLE database all open; Base de datos plugable modificada. SQL> select con_id,dbid,NOMBRE,mmodo_abierto from v$pdbs; CON_ID DBID NOMBRE MODO ABIERTO ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED SOLO LECTURA 3 3313918585 PDB1 LECTURA ESCRITURA 4 3872456618 PDB2 LECTURA ESCRITURA SQL> alter PLUGGABLE database all close; Base de datos plugable modificada. SQL> select con_id,dbid,NOMBRE,mmodo_abierto from v$pdbs; CON_ID DBID NOMBRE MODO ABIERTO ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED SOLO LECTURA 3 3313918585 PDB1 MONTADO 4 3872456618 PDB2 MONTADO SQL> alter session set container=pdb1; La sesión se ha alterado. SQL> startup Base de datos plugable abierta. SQL> select con_id,dbid,NOMBRE,mmodo_abierto from v$pdbs; CON_ID DBID NOMBRE MODO ABIERTO ---------- ---------- ------------------------------ ---------- 3 3313918585 PDB1 LECTURA ESCRITURA
La gestión de pdb puede realizarse en cdb o en pdb, si se realiza en cdb, se necesita la palabra clave PLUGGABLE, si se realiza en pdb, es directamente como una base de datos común
Iniciar sesión en pdb
[oracle@xifenfei ~]$ lsnrctl status LSNRCTL para Linux: Versión 12.1.0.1.0 - Production on 12-MAY-2013 08:07:02 Derechos de autor (c) 1991, 2013, Oracle. Todos los derechos reservados. Conectando a (DESCRIPCIÓN=(DIRECCIÓN=(PROTOCOLO=TCP)(HOST=xifenfei)(PUERTO=1521))) ESTADO del LISTENER ------------------------ Alias LISTENER Versión TNSLSNR para Linux: Versión 12.1.0.1.0 - Producción Fecha de Inicio 11-MAY-2013 18:30:54 Tiempo de Uso 0 días 13 hr. 36 min. 8 sec Nivel de Seguimiento DESACTIVADO Seguridad ACTIVADO: Autenticación del Sistema Local SNMP DESACTIVADO Archivo de Parámetros del Escuchador /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 Derechos de autor (c) 1997, 2013, Oracle. Todos los derechos reservados. 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 = pdb1))) OK (20 milisegundos) [oracle@xifenfei ~]$ sqlplus sys/xifenfei@pdb1 como sysdba SQL*Plus: Lanzamiento 12.1.0.1.0 Producción en mié 05 jun 12 08:08:02 2013 Derechos de autor (c) 1982, 2013, Oracle. Todos los derechos reservados. Conectado a: Base de datos Oracle 12c Edición Enterprise 12.1.0.1.0 - 64Producción de bits Con la partición, gestión automática de almacenamiento, OLAP, análisis avanzado y opciones de prueba de aplicación real SQL> show con_name; CON_NAME ------------------------------ PDB1 [oracle@xifenfei ~]$ sqlplus / como sysdba SQL*Plus: Lanzamiento 12.1.0.1.0 Producción en mié 05 jun 12 08:09:14 2013 Derechos de autor (c) 1982, 2013, Oracle. Todos los derechos reservados. Conectado a: Base de datos Oracle 12c Edición Enterprise 12.1.0.1.0 - 64Producción de bits Con la partición, gestión automática de almacenamiento, OLAP, análisis avanzado y opciones de prueba de aplicación real SQL> alter session set container=pdb1; La sesión se ha alterado. SQL> show con_name; CON_NAME ------------------------------ PDB1
pdb se puede ingresar a través de alter session container o directamente a través del método tns
Crear usuario
SQL> show con_name; CON_NAME ------------------------------ CDB$ROOT SQL> select con_id,dbid,NOMBRE,mmodo_abierto from v$pdbs; CON_ID DBID NOMBRE MODO ABIERTO ---------- ---------- ------------------------------ ---------- 2 4048821679 PDB$SEED SOLO LECTURA 3 3313918585 PDB1 LECTURA ESCRITURA 4 3872456618 PDB2 MONTADO SQL> create user xff identified by xifenfei; create user xff identified by xifenfei * ERROR en la línea 1: ORA-65096: nombre de usuario o rol común no válido SQL> !oerr ora 65096 65096, 00000, "nombre de usuario o rol común no válido" // *Causa: Se intentó crear un usuario o rol común con un nombre // esto no era válido para usuarios o roles comunes. Además de // las reglas habituales para los nombres de usuarios y roles, usuarios y roles comunes // los nombres deben comenzar con C## o c## y consistir solo en caracteres ASCII // caracteres. // *Acción: Especifique un nombre de usuario o rol común válido. // SQL> create user c##xff identified by xifenfei; El usuario se ha creado. 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; La sesión se ha alterado. SQL> show con_name CON_NAME ------------------------------ PDB1 SQL> create user xff identified by xifenfei; El usuario se ha creado. SQL> create user c##abc identified by xifenfei; create user c##abc identified by xifenfei * ERROR en la línea 1: ORA-65094: usuario local o nombre de rol no válido
El usuario se crea por defecto como container=all, en cdb solo se puede crear usuarios globales (con prefijo c##), se creará este usuario en cdb y en todos los pdb (pero los usuarios globales en pdb necesitan una autorización adicional para poder acceder al pdb). En pdb solo se pueden crear usuarios locales
Autorización de usuario
SQL> grant connect to c##xff; La concesión de permisos se ha realizado con éxito. 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; La concesión de permisos se ha realizado con éxito. 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
Por defecto, la autorización de usuarios solo dará al contenedor actual, en cdb también se puede especificar contenedor=all, para autorizar a todos los pdb abiertos y existentes para ese usuario
Modificar parámetros
SQL> alter system set open_cursors=;500 contenedor=todo; El sistema se ha modificado. SQL> conn sys/xifenfei@pdb1 como sysdba Conectado. SQL> show parameter open_cursors; NAME TIPO VALOR ------------------------------------ ----------- ------------------------------ open_cursors entero 500 SQL> alter system set open_cursors=;100; alter system set open_cursors=;100 * ERROR en la línea 1: ORA-01219: base de datos o base de datos enchufable no abierta: se permiten consultas en bases de datos fijas solo tablas o vistas SQL> alter database open; La base de datos se ha modificado. SQL> alter system set open_cursors=;100; El sistema se ha modificado. SQL> show parameter open_cursors; NAME TIPO VALOR ------------------------------------ ----------- ------------------------------ open_cursors entero 100 SQL> conn / como sysdba Conectado. SQL> show parameter open_cursors; NAME TIPO VALOR ------------------------------------ ----------- ------------------------------ open_cursors entero 500
Aquí se puede ver que al modificar en cdb, pdb heredará; si se modifica en pdb, se sobrescribirá la información de significado de los parámetros heredados de cdb
Declaración: El contenido de este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha subido de manera autónoma por los usuarios de Internet, este sitio web no posee los derechos de propiedad, no se ha realizado una edición humana y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#w3Avisos: El contenido de este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha subido de manera autónoma por los usuarios de Internet, este sitio web no posee los derechos de propiedad, no se ha realizado una edición humana y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#w