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

ORACLE 12Introducción a los fundamentos de mantenimiento de PDB en C

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

Te gustará