Este documento es parte de una serie que proporciona información clave y orientación relacionada con la planificación y realización de migraciones de bases de datos de Oracle® 11g/12c a Cloud SQL para PostgreSQL versión 12. Además de la sección de configuración de introducción, la serie incluye las siguientes partes:
- Migra usuarios de Oracle a Cloud SQL para PostgreSQL: terminología y funcionalidad (este documento)
- Migra usuarios de Oracle a Cloud SQL para PostgreSQL: tipos de datos, usuarios y tablas
- Migra usuarios de Oracle a Cloud SQL para PostgreSQL: consultas, procedimientos almacenados, funciones y activadores
- Migra usuarios de Oracle a Cloud SQL para PostgreSQL: seguridad, operaciones, supervisión y registro
- Migra usuarios y esquemas de base de datos de Oracle a Cloud SQL para PostgreSQL
Terminología
En esta sección, se detallan las similitudes y las diferencias en la terminología de la base de datos entre Oracle y Cloud SQL para PostgreSQL. Revisa y compara los aspectos principales de cada una de las plataformas de bases de datos. En la comparación, se hace una distinción entre las versiones 11g y 12c de Oracle debido a diferencias arquitectónicas (por ejemplo, Oracle 12c presenta la característica de multiusuarios). La versión de Cloud SQL para PostgreSQL a la que se hace referencia aquí es la 12.
En esta sección, se destacan las principales diferencias de terminología entre Oracle y Cloud SQL para PostgreSQL. Una descripción de bajo nivel se detalla más adelante en este documento.
Oracle 11g | Descripción | Cloud SQL para PostgreSQL | Diferencias clave |
---|---|---|---|
instancia | Una sola instancia de Oracle 11g puede contener solo una base de datos. | instancia | Una instancia de Cloud SQL para PostgreSQL contiene exactamente un clúster de base de datos. Un clúster de base de datos es una colección de bases de datos que se almacena en un área de datos común. |
base de datos | Una base de datos califica como una sola instancia (el nombre de la base de datos es idéntico al nombre de la instancia). | base de datos | Varias bases de datos, o una sola, entregan varias aplicaciones. |
schema | El esquema y los usuarios son idénticos porque se los considera propietarios de los objetos de la base de datos (se puede crear un usuario sin especificarlo ni asignarlo a un esquema). | schema | Una base de datos contiene uno o más esquemas. Los objetos como las tablas se encuentran contenidos dentro de los esquemas. El mismo nombre de objeto podría usarse en diferentes esquemas dentro de la misma base de datos sin que se generen conflictos. |
usuario | Es idéntico al esquema porque ambos son propietarios de objetos de base de datos, por ejemplo, instancia → base de datos → esquemas/usuarios → objetos de base de datos. | rol | Un rol puede ser un usuario de una base de datos o un grupo de usuarios de bases de datos, según cómo esté configurado. Puede ser propietario de objetos de la base de datos, como tablas.
Los roles se limitan a un clúster de base de datos completo y es posible otorgar la membresía de un rol a otro rol. |
rol | Conjunto definido de permisos de la base de datos que se puede encadenar como un grupo y se puede asignar a los usuarios de la base de datos | ||
usuarios administradores /del SISTEMA |
Usuarios administradores de Oracle con el nivel de acceso más alto:SYS
|
cloudsqlsuperuser | Cloud SQL para PostgreSQL viene con el usuario postgres predeterminado. Este usuario es parte del rol cloudsqlsuperuser y tiene los siguientes atributos (privilegios): CREATEROLE , CREATEDB y LOGIN . Debido a que Cloud SQL para PostgreSQL es un servicio administrado, restringe el acceso a ciertas tablas y procedimientos del sistema que requieren privilegios avanzados. Por lo tanto, el usuario postgres no tiene los atributos SUPERUSER ni REPLICATION . No puedes crear usuarios con atributos superuser ni tener acceso a ellos. |
diccionario/ metadatos |
Oracle usa las siguientes tablas de metadatos:USER_TableName
|
diccionario/ metadatos |
Cloud SQL para PostgreSQL usa el INFORMATION_SCHEMA estándar ANSI a fin de proporcionar información de diccionario y metadatos. |
vistas dinámicas del sistema | Vistas dinámicas de Oracle:V$ViewName |
Vistas dinámicas del sistema |
Cloud SQL para PostgreSQL tiene las siguientes vistas de estadísticas dinámicas:pg_stat_ViewName pg_statio_ViewName |
espacio de tabla | Las estructuras de almacenamiento lógicas principales de las bases de datos de Oracle; cada espacio de tabla puede contener uno o más archivos de datos. | espacio de tabla | En Cloud SQL para PostgreSQL, los archivos de datos se almacenan juntos en el directorio de datos PGDATA de un clúster de base de datos mediante una estructura de directorio predefinida. Los espacios de tablas en Cloud SQL para PostgreSQL proporcionan un mecanismo a fin de definir ubicaciones personalizadas en el sistema de archivos en el que se pueden almacenar los archivos de datos.dDebido a que Cloud SQL para PostgreSQL es un servicio administrado, Google Cloud administra el sistema de archivos subyacente de la máquina host por ti. No puedes crear espacios de tablas nuevos en Cloud SQL para PostgreSQL. |
archivos de datos | Los elementos físicos de una base de datos de Oracle que contienen los datos y se definen en un espacio de tabla específico. Un único archivo de datos se define por el tamaño inicial y el tamaño máximo, y puede contener datos para varias tablas. Los archivos de datos Oracle usan el sufijo .dbf (no es obligatorio). |
archivos de datos | Cloud SQL para PostgreSQL almacena cada base de datos en un clúster de base de datos en su propio subdirectorio. Cada índice y tabla dentro de una base de datos se almacena en un archivo separado en ese subdirectorio. |
espacio de tabla del sistema | Contiene las tablas del diccionario de datos y los objetos de vistas para toda la base de datos de Oracle. | No existe | Las tablas del diccionario de datos y los objetos de vistas se almacenan en INFORMATION_SCHEMA en el directorio de datos PGDATA del clúster de una base de datos mediante una estructura de directorio predefinida. |
espacio de tabla temporal | Contiene objetos de esquema válidos por la duración de una sesión; además, admite operaciones en ejecución que no caben en la memoria del servidor. |
archivos temporales | Los archivos temporales se usan para almacenar operaciones en ejecución que no caben en la memoria del servidor. Estos archivos se almacenan en un directorio llamado pgsql_tmp y se crean solo mientras se ejecuta la instrucción de SQL. |
Espacio de tabla para deshacer | Un tipo especial de espacio de tabla permanente que usa Oracle a fin de administrar las operaciones de reversión cuando se ejecuta la base de datos en el modo de administración para deshacer automático (predeterminado). |
No existe | Para permitir operaciones de reversión, Cloud SQL para PostgreSQL retiene las filas que se actualizan o borran dentro del archivo de datos de la tabla. El vaciado es el proceso de recuperación o reutilización del espacio en disco que ocupan las filas actualizadas o borradas. |
ASM | La Administración automática de almacenamiento de Oracle es un administrador de discos y sistema de archivos de base de datos integrado y de alto rendimiento que se ejecuta de forma automática mediante una base de datos de Oracle configurada con ASM. | No compatible | Cloud SQL para PostgreSQL depende del sistema de archivos del SO para almacenar archivos de datos y no tiene un equivalente de ASM. Sin embargo, Cloud SQL para PostgreSQL admite muchas funciones que proporcionan automatización del almacenamiento, como el aumento automático de almacenamiento, el rendimiento y la escalabilidad. |
tablas/vistas | Objetos de base de datos fundamentales creados por el usuario. | tablas/vistas | Idéntico a Oracle. |
vistas materializadas | Se definen con instrucciones de SQL específicas y se pueden actualizar de forma manual o automática según opciones de configuración específicas. |
vistas materializadas | Las vistas materializadas funcionan de manera similar a Oracle. Se actualizan de forma manual mediante declaraciones REFRESH
MATERIALIZED VIEW . |
secuencia | Generador de valor único de Oracle. | secuencia | Similar a Oracle. |
sinónimo | Objetos de base de datos de Oracle que sirven como identificadores alternativos para otros objetos de base de datos. | No compatible | Cloud SQL para PostgreSQL no ofrece sinónimos. Como solución alternativa, las vistas se pueden usar cuando se configuran los permisos correspondientes. |
partición | Oracle proporciona muchas soluciones de partición para dividir tablas grandes en partes administradas más pequeñas. | partición | Cloud SQL para PostgreSQL admite la partición declarativa y la partición mediante herencia, lo que permite una mayor flexibilidad de partición. |
Base de datos flashback | Función exclusiva de Oracle que se puede usar para inicializar una base de datos de Oracle en un momento anterior definido, lo que te permite consultar o restablecer datos que se modificaron o dañaron por error. | No compatible | Como una solución alternativa, puedes usar las copias de seguridad de Cloud SQL y la recuperación de un momento determinado a fin de restablecer una base de datos a un estado anterior (por ejemplo, restablecer antes de que se descarte una tabla). |
sqlplus | Interfaz de línea de comandos de Oracle que te permite consultar y administrar la instancia de base de datos. | psql | Interfaz de línea de comandos equivalente de Cloud SQL para PostgreSQL a fin de realizar consultas y administrar. Se puede conectar desde cualquier cliente con los permisos adecuados a Cloud SQL. |
PL/SQL | Oracle extendió el lenguaje de procedimiento a ANSI SQL. | PL/pgSQL | Cloud SQL para PostgreSQL tiene su propio lenguaje de procedimiento llamado PL/pgSQL, que es similar a PL/SQL de Oracle en muchos aspectos. Para obtener un resumen de las principales diferencias entre los dos lenguajes, consulta Portabilidad desde Oracle PL/SQL. |
paquete y cuerpo del paquete | Funcionalidad específica de Oracle para agrupar procedimientos y funciones almacenados en la misma referencia lógica. | No compatible | Cloud SQL para PostgreSQL organiza funciones mediante esquemas. |
funciones y procedimientos almacenados | Usa PL/SQL para implementar la funcionalidad de código. | Funciones y procedimientos almacenados | Cloud SQL para PostgreSQL admite la implementación de funciones y procedimientos almacenados con una variedad de lenguajes de programación, como PL/pgSQL y C. |
activador | Objeto de Oracle que se usa para controlar la implementación de DML en las tablas. | activador | Similar a Oracle. |
PFILE/SPFILE | Los parámetros del nivel de instancia y la base de datos de Oracle se guardan en un archivo binario conocido como el SPFILE (en versiones anteriores, el archivo se llamaba PFILE ), que se puede usar como un archivo de texto para configurar parámetros de forma manual. |
Marcas de base de datos de Cloud SQL para PostgreSQL | Puedes configurar o modificar los parámetros de Cloud SQL para PostgreSQL mediante la utilidad de marcas de base de datos. |
SGA/PGA/ AMM |
Parámetros de memoria de Oracle que controlan la asignación de memoria a la instancia de base de datos. | Una variedad de parámetros relacionados con la memoria | Cloud SQL para PostgreSQL tiene sus propios parámetros de memoria. Algunos parámetros similares son shared_buffers , temp_buffers y work_mem . En Cloud SQL para PostgreSQL, estos parámetros están predefinidos por el tipo de instancia elegido y el valor cambia según corresponda. Puedes ajustar algunos de estos parámetros mediante la utilidad de marcas de la base de datos. |
caché de búfer | Reduce las operaciones de E/S de SQL mediante la recuperación de los datos almacenados en caché desde la caché del búfer. Los parámetros de memoria se pueden administrar a nivel de base de datos y de sesión a través de sugerencias de consulta. | Funcionalidad similar | El tamaño de la caché del búfer de Cloud SQL para PostgreSQL se controla mediante el parámetro shared_buffer , que no se expone en Cloud SQL. Cloud SQL proporciona una métrica de uso de memoria, que se usa para ajustar el tamaño de la instancia. |
sugerencias para la base de datos | Capacidad de Oracle para proporcionar un impacto controlado en las instrucciones de SQL que afectarán el comportamiento del optimizador a fin de obtener un mejor rendimiento. Oracle tiene más de 50 sugerencias diferentes para la base de datos. | No compatible | Cloud SQL para PostgreSQL no admite sugerencias de bases de datos. Con un grado limitado, puedes controlar el planificador de consultas de Cloud SQL para PostgreSQL mediante la sintaxis de JOIN explícita. |
RMAN | Utilidad de administrador de recuperación de Oracle. Se usa para crear copias de seguridad de bases de datos con funciones extendidas que admiten varias situaciones de recuperación ante desastres y más (clonación, etcétera). | Copia de seguridad de Cloud SQL para PostgreSQL | Cloud SQL para PostgreSQL ofrece dos métodos para aplicar backups completas: copias de seguridad automáticas y a pedido. |
Volcado de datos (EXPDP/ IMPDP) |
Utilidad de generación de volcado de Oracle que se puede usar para muchas características, como exportar o importar, crear copias de seguridad de la base de datos (a nivel de esquema o de objeto), metadatos de esquema, generar archivos SQL del esquema y más opciones. | Importación y exportación de Cloud SQL para PostgreSQL | Cloud SQL para PostgreSQL ofrece dos formatos de exportación/importación y desde buckets de Cloud Storage: SQL y CSV. De manera alternativa, puedes conectarte a la instancia de base de datos mediante utilidades de importación y exportación como pg_dump. |
SQL*Loader | Herramienta que te permite subir datos desde archivos externos, como archivos de texto, CSV y muchos más. | psql \copy |
El comando \copy en el cliente psql te permite cargar archivos de texto, CSV o binarios (Oracle admite formatos de archivo adicionales) en una tabla de base de datos con una estructura correspondiente. |
Data Guard | Solución de recuperación ante desastres de Oracle mediante una instancia en espera, lo que permite a los usuarios realizar operaciones READ desde la instancia en espera. |
Alta disponibilidad y replicación de Cloud SQL para PostgreSQL | Para lograr una recuperación ante desastres o alta disponibilidad, Cloud SQL para PostgreSQL ofrece la arquitectura de réplica de conmutación por error
y las operaciones de solo lectura (separación READ /WRITE )
mediante el uso de la claseLeer réplicas. |
Active Data Guard/ GoldenGate |
Las principales soluciones de replicación de Oracle, que pueden tener varios propósitos, como instancia de solo lectura, en espera (DR), replicación bidireccional (de varias instancias principales), almacenamiento de datos y más. | Réplica de lectura de Cloud SQL para PostgreSQL | Réplica de lectura de Cloud SQL para PostgreSQL con el fin de implementar la agrupación en clústeres con separación LECTURA/ESCRITURA. En la actualidad, no hay compatibilidad con la configuración de varias instancias principales, como la replicación bidireccional de Golden Gate o heterogénea. |
RAC | Clústeres de aplicación real de Oracle. Solución de agrupamiento en clústeres, propiedad de Oracle, para proporcionar alta disponibilidad mediante la implementación de varias instancias de bases de datos con una sola unidad de almacenamiento. | No compatible | Cloud SQL para PostgreSQL no admite una arquitectura de varias instancias principales. Cloud SQL para PostgreSQL ofrece alta disponibilidad a través de una instancia en espera y mayor escalabilidad de lectura a través de réplicas de lectura. |
Grid/Cloud Control (OEM) | Software de Oracle para administrar y supervisar bases de datos y otros servicios relacionados en un formato de aplicación web. Esta herramienta es útil para el análisis de bases de datos en tiempo real a fin de comprender las cargas de trabajo altas. | consola de Google Cloud, Cloud Monitoring |
Usa Cloud SQL para PostgreSQL para la supervisión, incluidos gráficos detallados basados en el tiempo y los recursos. También usa Cloud Monitoring con el fin de almacenar métricas de supervisión específicas de Cloud SQL para PostgreSQL y análisis de registros para capacidades de supervisión avanzadas. |
Registros REDO | Registros de transacciones de Oracle que constan de dos (o más) archivos definidos asignados con anterioridad que almacenan todas las modificaciones de datos a medida que ocurren. El propósito principal del registro de rehacer es proteger la base de datos en caso de una falla de la instancia. | Registros WAL | Cloud SQL para PostgreSQL usa el registro de escritura anticipada (WAL) de manera que los cambios en los archivos de datos se envíen al almacenamiento permanente para permitir la recuperación de fallas. |
registros de archivo | Los registros de archivo brindan asistencia para operaciones de copia de seguridad y replicación, y mucho más. Oracle escribe en los registros (si están habilitados) después de cada operación de cambio de registro redo. | El archivado de WAL | Implementación de Cloud SQL para PostgreSQL de la retención de registros WAL. El archivado de WAL se usa y se habilita con la recuperación de un momento determinado. |
archivo de control | El archivo de control de Oracle contiene información sobre la base de datos, como archivos de datos, nombres y ubicaciones de registros redo, el número de secuencia de registro actual y la información sobre el punto de control de la instancia. | PGDATA and pg_control
|
La arquitectura de Cloud SQL para PostgreSQL no comparte un concepto equivalente a un archivo de control de Oracle. Los archivos relacionados con la base de datos se organizan en un directorio conocido comúnmente como PGDATA . La información de WAL relacionada con los registros y los puntos de control se almacena en pg_control . |
Número de cambio del sistema (SCN) | El SCN marca un punto específico en el tiempo en una base de datos de Oracle. | Número de secuencia de registro (LSN) | El equivalente de Cloud SQL para PostgreSQL es el LSN. Al igual que los SCN, los LSN aumentan de forma monótona con el tiempo. |
AWR | Oracle AWR (repositorio automático de cargas de trabajo) es un informe de verbosidad que proporciona información detallada sobre el rendimiento de las instancias de bases de datos de Oracle y se considera una herramienta de DBA para el diagnóstico del rendimiento. | recopilador de estadísticas | Cloud SQL para PostgreSQL no tiene un informe equivalente a Oracle AWR, pero PostgreSQL recopila datos de rendimiento recopilados por el recopilador de estadísticas. Las estadísticas recopiladas se exponen a través de las vistas pg_stat_* y pg_statio_* . |
DBMS_SCHEDULER
|
Utilidad de Oracle que se usa para establecer y determinar el tiempo de las operaciones predefinidas. | No compatible | Cloud SQL para PostgreSQL no proporciona una utilidad de programación incorporada. Google Cloud proporciona Cloud Scheduler, que te permite programar tareas de bases de datos, como las exportaciones. |
Encriptación de datos transparente | Encripta los datos almacenados en discos como protección de datos en reposo. | Estándar de encriptación avanzada de Cloud SQL | Cloud SQL para PostgreSQL usa el Estándar de encriptación avanzada (AES-256) de 256 bits para proteger los datos en reposo y en tránsito. |
Compresión avanzada | Para mejorar la huella de almacenamiento de la base de datos, reducir los costos de almacenamiento y mejorar el rendimiento de la base de datos, Oracle proporciona capacidades avanzadas de compresión de datos (tablas/índices). | TOAST | Si bien no se puede comparar directamente con la compresión avanzada de Oracle, Cloud SQL para PostgreSQL usa una infraestructura llamada TOAST para comprimir de forma automática y transparente los datos de longitud variable que son demasiado grandes para caber en una página de datos única. |
SQL Developer | La GUI de SQL gratuita de Oracle para administrar y ejecutar instrucciones de SQL o PL/SQL. | pgAdmin | La GUI de SQL gratuita de Cloud SQL para PostgreSQL a fin de administrar y ejecutar instrucciones de código de SQL y PostgreSQL. |
Registro de alerta | Registro principal de Oracle para errores y operaciones generales de la base de datos. | Informes y registros de errores de PostgreSQL | Usa el Visor de registros de Cloud Logging para inspeccionar los registros de errores de PostgreSQL. |
Tabla DUAL | Tabla especial de Oracle para recuperar valores de seudocolumnas, como SYSDATE o USER . |
No existe | Cloud SQL para PostgreSQL permite que las cláusulas FROM se omitan de las instrucciones de SQL. Por ejemplo:SELECT NOW();
es una declaración válida en PostgreSQL. |
tabla externa | Oracle permite a los usuarios crear tablas externas que tengan los datos de origen en archivos fuera de la base de datos. | No compatible | Como un servicio administrado, Cloud SQL para PostgreSQL no expone el sistema de archivos subyacente del host que ejecuta la instancia de la base de datos. Como solución alternativa, puedes importar los datos de origen a una tabla de PostgreSQL para consultar los datos. |
Objeto de escucha | Proceso de red de Oracle con tareas de escucha de las conexiones de bases de datos entrantes. | Redes autorizadas de Cloud SQL | Cloud SQL para PostgreSQL acepta conexiones de fuentes remotas una vez permitidas en la página de configuración de las redes autorizadas de Cloud SQL. |
TNSNAMES | Archivo de configuración de red de Oracle que define direcciones de bases de datos para establecer conexiones mediante el uso de alias de conexión. | No existe | Cloud SQL para PostgreSQL acepta conexiones externas mediante el nombre de conexión de la instancia de Cloud SQL o la dirección IP privada/pública. Cloud SQL Proxy es un método de acceso seguro adicional para conectarte a Cloud SQL para PostgreSQL sin tener que permitir direcciones IP específicas o configurar SSL. |
Puerto predeterminado de la instancia | 1521 | Puerto predeterminado de la instancia | 5432 |
Vínculo a la base de datos | Objetos de esquema de Oracle que se pueden usar para interactuar con objetos de bases de datos locales o remotas. | Wrapper de datos externo (FDW) | La extensión postgres_fdw en Cloud SQL para PostgreSQL permite que las tablas de otras bases de datos de PostgreSQL (“eignon”) se expongan como tablas “externas” en la base de datos actual. Esas tablas están disponibles para que se usen, casi como si fueran tablas locales. |
Diferencias en la terminología entre Oracle 12c y Cloud SQL para PostgreSQL
Oracle 12c | Descripción | Cloud SQL para PostgreSQL | Diferencias clave |
---|---|---|---|
Instancia | La capacidad multiusuario incluida en Oracle 12c permite que una instancia mantenga varias bases de datos como bases de datos conectables (PDB), en lugar de Oracle 11g, en la que una instancia de Oracle puede alojar una sola base de datos. | Instancia | Una instancia de Cloud SQL para PostgreSQL contiene exactamente un clúster de base de datos. Un clúster de base de datos es una colección de bases de datos que se almacena en un área de datos común. |
CDB | Una base de datos de contenedores multiusuario (CDB) puede admitir una o más PDB, mientras que se pueden crear objetos globales de CDB (afecta a todas las PDB), como las funciones. | Instancia de PostgreSQL | La instancia de Cloud SQL para PostgreSQL es comparable con la CDB de Oracle. Ambas proporcionan una capa de sistema para las bases de datos alojadas. |
PDB | Las PDB (bases de datos conectables) se pueden usar para aislar servicios y aplicaciones entre sí, y como una colección portátil de esquemas. | esquemas/ bases de datos PostgreSQL |
Una base de datos de Cloud SQL para PostgreSQL puede entregar varios servicios y aplicaciones, así como muchos usuarios de bases de datos. |
Secuencias de sesión | A partir de Oracle 12c, las secuencias se pueden crear a nivel de sesión (solo muestran valores únicos dentro de una sesión) o a nivel global (por ejemplo, cuando se usan tablas temporales). | Secuencia temporal | La secuencia temporal se crea para la sesión de base de datos actual y se descarta automáticamente cuando se cierra la sesión. |
Columnas de identidad | El tipo IDENTITY de Oracle 12c genera una secuencia y la asocia con una columna de tabla sin necesidad de crear de forma manual un objeto de secuencia por separado. |
Columna SERIAL | Cuando defines el tipo de datos de una columna como SERIAL, Cloud SQL para PostgreSQL crea de forma automática una secuencia y propaga el valor de la columna con esa secuencia cuando se insertan filas nuevas en la tabla. |
Fragmentación | La fragmentación de Oracle es una solución en la que una base de datos de Oracle se particiona en varias bases de datos más pequeñas (fragmentos) a fin de permitir la escalabilidad, la disponibilidad y la distribución geográfica para entornos de OLTP. | No compatible (como una característica) | Cloud SQL para PostgreSQL no tiene una característica de fragmentación equivalente. La fragmentación se puede implementar con Cloud SQL para PostgreSQL (como la plataforma de datos) con una capa de aplicación compatible. |
Base de datos en memoria | Oracle proporciona un conjunto de funciones que pueden mejorar el rendimiento de la base de datos para OLTP y para cargas de trabajo mixtas. | No compatible | Cloud SQL para PostgreSQL no tiene una característica equivalente integrada. Sin embargo, puedes usar nuestro servicio administrado de Redis, Memorystore, como alternativa. |
Ocultamiento | Como parte de las características de seguridad avanzadas de Oracle, el ocultamiento puede realizar el enmascaramiento de columnas para evitar que los usuarios y las aplicaciones muestren datos sensibles. | No compatible | Cloud SQL para PostgreSQL no tiene una característica equivalente integrada. Sin embargo, la Protección de datos sensibles se puede aprovechar para desidentificar datos sensibles. |
Funcionalidad
Aunque las bases de datos de Oracle 11g o 12c y Cloud SQL para PostgreSQL se basan en diferentes arquitecturas (infraestructura y lenguajes de procedimiento extendidos), comparten los mismos aspectos fundamentales de las bases de datos relacionales. Admiten objetos de base de datos, cargas de trabajo de simultaneidad multiusuario y transacciones con propiedades de ACID. También administran las contenciones de bloqueo con varios niveles de aislamiento (según las necesidades de la aplicación) y cumplen con los requisitos constantes de las aplicaciones para las operaciones de procesamiento de transacciones en línea (OLTP) y procesamiento analítico en línea (OLAP).
En la siguiente sección, se proporciona una descripción general de algunas de las principales diferencias funcionales entre Oracle y Cloud SQL para PostgreSQL. En algunos casos, cuando se considera necesario destacar las diferencias, la sección incluye comparaciones técnicas detalladas.
Crea y visualiza bases de datos existentes
Oracle 11g/12c | Cloud SQL para PostgreSQL 12 |
---|---|
Por lo general, puedes crear bases de datos y ver las existentes mediante la utilidad asistente de creación de base de datos (DBCA) de Oracle. Las instancias o bases de datos creadas de forma manual requieren que especifiques parámetros adicionales:SQL> CREATE DATABASE ORADB
|
Usa una declaración con el formato CREATE DATABASE Name; , como en este ejemplo:postgres=> CREATE DATABASE PGSQLDB; |
Oracle 12c | Cloud SQL para PostgreSQL 12 |
En Oracle 12c, puedes crear PDB desde el origen, ya sea desde una plantilla de base de datos de contenedores (CDB) o mediante la clonación de una PDB desde una PDB existente. Usas varios parámetros:SQL> CREATE PLUGGABLE DATABASE PDB
|
Usa una declaración con el formato CREATE DATABASE Name; , como en este ejemplo:postgres=> CREATE DATABASE PGSQLDB; |
Enumera todas las PDB:SQL> SHOW is PDBS; |
Enumera todas las bases de datos existentes:postgres=> \list |
Conéctate a otra PDB:SQL> ALTER SESSION SET CONTAINER=pdb; |
Conéctate a una base de datos diferente:postgres=> \connect databaseName;
O: postgres=> \c databaseName |
Abre o cierra una PDB específica (abierta/solo lectura):SQL> ALTER PLUGGABLE DATABASE pdb CLOSE; |
No es compatible con una sola base de datos. Todas las bases de datos están en la misma instancia de Cloud SQL para PostgreSQL; por lo tanto, todas las bases de datos están activas o inactivas. |
Administra una base de datos a través de la consola de Google Cloud
En la consola de Google Cloud, ve a Bases de datos>SQL>Instancia>(Selecciona tu instancia de PostgreSQL)>Bases de datos.
Diccionario de datos y vistas dinámicas
Las bases de datos de Oracle proporcionan un diccionario de datos junto con vistas de rendimiento dinámicas (vistas de V$
) que facilitan una variedad de tareas de mantenimiento y supervisión de bases de datos. El diccionario de datos almacena toda la información que se usa para administrar los objetos en la base de datos, mientras que las vistas de rendimiento dinámicas contienen mucha información relacionada con el rendimiento de la base de datos. Estas vistas se actualizan de forma continua mientras se ejecuta la base de datos.
Por el contrario, PostgreSQL proporciona varios catálogos de metadatos que tienen un propósito similar al diccionario de datos de Oracle y las vistas de rendimiento dinámicas:
- Catálogo de sistemas: metadatos sobre todos los objetos de la base de datos.
- Vistas de recolección estadística: Informes sobre las actividades de PostgreSQL.
- Vistas de esquema de información: Metadatos sobre todos los objetos de la base de datos informados de acuerdo con el estándar ANSI SQL.
Visualiza metadatos y vistas dinámicas del sistema
En esta sección, se proporciona una descripción general de algunas de las tablas de metadatos más comunes y las vistas dinámicas del sistema que se usaron en Oracle, así como sus objetos de base de datos correspondientes en Cloud SQL para PostgreSQL versión 12.
Oracle proporciona cientos de tablas y vistas de metadatos del sistema (por ejemplo, en algunos esquemas del sistema, por ejemplo, SYS
o SYSTEM
), mientras que PostgreSQL conserva solo varias docenas. Para cada caso, puede haber más de un objeto de base de datos con un propósito específico.
Oracle proporciona varios niveles de objetos de metadatos, cada uno de los cuales requiere privilegios diferentes:
USER_TableName
: El usuario puede verlo.ALL_TableName
: Todos los usuarios pueden verlo.DBA_TableName
: Solo pueden verlo los usuarios con el privilegio de DBA, comoSYS
ySYSTEM
.
Para las vistas de rendimiento dinámicas, Oracle usa los prefijos V$/GV$
. Por el contrario, los metadatos y las vistas de Cloud SQL para PostgreSQL residen en esquemas information_schema
y pg_catalog
.
Tipo de metadatos | Vista/Tabla de Oracle | Tabla/vista/consulta de Cloud SQL para PostgreSQL |
---|---|---|
Sesiones abiertas | V$SESSION |
pg_catalog.pg_stat_activity |
Transacciones en ejecución | V$TRANSACTION |
No compatible. Como solución alternativa, pg_locks proporciona una lista de transacciones abiertas que contienen uno o más bloqueos. |
Objetos de base de datos | DBA_OBJECTS |
pg_catalog.pg_class |
Tablas | DBA_TABLES |
pg_catalog.pg_tables |
Columnas de la tabla | DBA_TAB_COLUMNS |
pg_catalog.pg_attribute |
Privilegios de tablas y columnas | TABLE_PRIVILEGES |
information_schema.table_privileges
information_schema.column_privileges |
Particiones | DBA_TAB_PARTITIONS
DBA_TAB_SUBPARTITIONS |
pg_catalog.pg_partitioned_table |
Vistas | DBA_VIEWS |
pg_catalog.pg_views |
Limitaciones | DBA_CONSTRAINTS |
pg_catalog.pg_constraint |
Índices | DBA_INDEXES |
pg_catalog.pg_index |
Vistas materializadas | DBA_MVIEWS |
pg_catalog.pg_matviews |
Procedimientos almacenados | DBA_PROCEDURES |
pg_catalog.pg_proc |
Funciones almacenadas | DBA_PROCEDURES |
pg_catalog.pg_proc |
Activadores | DBA_TRIGGERS |
pg_catalog.pg_trigger |
Usuarios | DBA_USERS |
pg_catalog.pg_user |
Privilegios de usuario | DBA_SYS_PRIVS |
pg_catalog.pg_roles |
Trabajos/ Programador |
DBA_JOBS |
No compatible. |
Espacios de tabla | DBA_TABLESPACES |
pg_catalog.pg_tablespace |
Archivos de datos | DBA_DATA_FILES |
No compatible. |
Sinónimos | DBA_SYNONYMS |
No compatible. |
Secuencias | DBA_SEQUENCES |
pg_catalog.pg_sequence |
Vínculos a bases de datos | DBA_DB_LINKS |
pg_catalog.pg_foreign_server |
Estadísticas | DBA_TAB_STATISTICS
DBA_TAB_COL_STATISTICS
DBA_SQLTUNE_STATISTICS
DBA_CPU_USAGE_STATISTICS |
pg_catalog.pg_stats |
Bloqueos | DBA_LOCK |
pg_catalog.pg_locks |
Parámetros de base de datos | V$PARAMETER |
pg_catalog.pg_settings
show |
Segmentos | DBA_SEGMENTS |
No compatible. |
Funciones | DBA_ROLES |
pg_catalog.pg_roles |
Historial de sesiones | V$ACTIVE_SESSION_HISTORY |
No compatible. |
Versión | V$VERSION |
select version(); |
Eventos de espera | V$WAITCLASSMETRIC |
No compatible. |
Ajuste y análisis de SQL |
V$SQL |
No compatible. |
Ajuste de memoria de la instancia |
V$SGA
V$SGASTAT
V$SGAINFO
V$SGA_CURRENT_RESIZE_OPS
V$SGA_RESIZE_OPS
V$SGA_DYNAMIC_COMPONENTS
V$SGA_DYNAMIC_FREE_MEMORY
V$PGASTAT |
No está integrado en Cloud SQL para PostgreSQL. Usa la extensión pg_buffercache para examinar la caché del búfer compartido en tiempo real. |
Parámetros del sistema
Las bases de datos de Oracle y Cloud SQL para PostgreSQL pueden configurarse de manera específica para lograr cierta funcionalidad más allá de la configuración predeterminada. Para alterar los parámetros de configuración en Oracle, se requieren ciertos permisos de administración (en especial, los permisos del usuario SYS/SYSTEM
).
A continuación, se muestra un ejemplo de cómo alterar la configuración de Oracle mediante la declaración ALTER SYSTEM
. En este ejemplo, el usuario cambia el parámetro “cantidad máxima de intentos de acceso con errores” solo en el nivel de configuración spfile
(con la modificación válida solo después de un reinicio):
SQL> ALTER SYSTEM SET SEC_MAX_FAILED_LOGIN_ATTEMPTS=2 SCOPE=spfile;
En el siguiente ejemplo, el usuario solo solicita ver el valor del parámetro de Oracle:
SQL> SHOW PARAMETER SEC_MAX_FAILED_LOGIN_ATTEMPTS;
El resultado es similar al siguiente:
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ sec_max_failed_login_attempts integer 2
La modificación del parámetro de Oracle funciona en tres permisos:
- SPFILE: Las modificaciones de parámetros se escriben en el
spfile
de Oracle, con un reinicio de instancia necesario para que el parámetro surta efecto. - MEMORIA: Las modificaciones de parámetros se aplican en la capa de memoria solo cuando no se permite el cambio de parámetros estáticos.
- AMBOS: Las modificaciones de parámetros se aplican en el archivo de parámetros del servidor y en la memoria de la instancia, en la que no se permite el cambio de parámetros estáticos.
Marcas de configuración de Cloud SQL para PostgreSQL
Puedes modificar los parámetros del sistema de Cloud SQL para PostgreSQL mediante las marcas de configuración en la consola de Google Cloud, gcloud CLI o CURL. Consulta la lista completa de todos los parámetros compatibles con Cloud SQL para PostgreSQL que puedes modificar.
Los parámetros de PostgreSQL se pueden dividir en varios permisos:
- Parámetros dinámicos: se pueden modificar en el tiempo de ejecución.
- Parámetros de base de datos: se aplica solo a una base de datos específica dentro de una instancia de PostgreSQL.
- Parámetros de rol: Se aplican solo a un rol específico de la base de datos.
- Parámetros estáticos: requieren que se reinicie la instancia para surtir efecto.
- Parámetros de sesión: se pueden modificar a nivel de la sesión solo durante la vida útil de la sesión actual, aislada de otras sesiones.
- Parámetros globales: tendrán un efecto global en todas las sesiones actuales y futuras.
Ejemplos de alteración de los parámetros de Cloud SQL para PostgreSQL
Console
Usa la consola de Google Cloud para habilitar el parámetro log_connections
.
Ve a la página Edit instance (Editar instancia) de Cloud Storage.
En Marcas, haz clic en Agregar elemento y busca
log_connections
, como en la siguiente captura de pantalla.
gcloud
- Usa la CLI de gcloud para habilitar el parámetro
log_connections
:
gcloud sql instances patch INSTANCE_NAME \ --database-flags log_connections=on
Este es el resultado:
WARNING: This patch modifies database flag values, which may require your instance to be restarted. Check the list of supported flags - /sql/docs/postgres/flags - to see if your instance will be restarted when this patch is submitted. Do you want to continue (Y/n)?
Cloud SQL para PostgreSQL
Establece timezone
a nivel de sesión. Esta alteración se mantiene vigente durante la sesión actual y solo durante el ciclo de vida de la sesión.
Muestra el parámetro de configuración
timezone
:postgres=> SHOW timezone;
Verás el siguiente resultado, en el que
timezone
estáset to UTC
:TimeZone ---------- UTC (1 row)
Establece
timezone
como UTC-9:postgres=> SET timezone='UTC-9';
Muestra el parámetro de configuración
timezone
:postgres> SHOW timezone;
Verás el siguiente resultado, en el que
timezone
está configurado comoUTC-9
:TimeZone ---------- UTC-9 (1 row)
Transacciones y niveles de aislamiento
En esta sección, se describen las principales diferencias en los niveles de aislamiento y ejecución de transacciones entre Oracle y Cloud SQL para PostgreSQL.
Modo de confirmación
Oracle funciona de forma predeterminada en el modo sin confirmación automática, en el que cada transacción de DML se debe determinar con declaraciones COMMIT
/ROLLBACK
. Una de las diferencias fundamentales entre Oracle y PostgreSQL es que PostgreSQL emite de forma implícita un COMMIT
después de cada comando que no sigue a START TRANSACTION
(o BEGIN
). Otros motores de bases de datos también lo conocen como confirmación automática.
Aunque la confirmación automática está habilitada de forma predeterminada, se puede inhabilitar a nivel de la sesión mediante SET AUTOCOMMIT OFF
.
Niveles de aislamiento
El estándar ANSI/ISO de SQL (SQL:92) define cuatro niveles de aislamiento. Cada nivel proporciona un enfoque diferente para manejar la ejecución simultánea de transacciones de bases de datos:
- Lectura no confirmada: Una transacción en proceso en ese momento puede ver los datos no confirmados que realiza otra transacción. Si se realiza una reversión, todos los datos se restablecen a su estado anterior.
- Lectura confirmada: Una transacción solo ve los cambios de datos que se confirmaron; no es posible ver los cambios no confirmados (“lecturas sucias”).
- Lectura repetible: Una transacción puede ver los cambios realizados por la otra transacción solo después de que ambas transacciones emiten una
COMMIT
o ambas se revierten. - Serializable: El nivel de aislamiento más estricto y potente. Este nivel bloquea todos los registros a los que se accede, y bloquea el recurso para que no se puedan agregar registros a la tabla.
Los niveles de aislamiento de transacciones administran la visibilidad de los datos modificados según cómo lo ven otras transacciones en ejecución. Además, cuando varias transacciones simultáneas acceden a los mismos datos, el nivel de aislamiento de transacción seleccionado afecta la forma en que interactúan las diferentes transacciones.
Oracle admite los siguientes niveles de aislamiento:
- Lectura confirmada (predeterminado)
- Serializable
- Solo lectura (no es parte del estándar ANSI/ISO de SQL (SQL:92)
MVCC en Oracle (Control de simultaneidad de varias versiones):
- Oracle usa el mecanismo de VMCC para proporcionar coherencia de lectura automática en toda la base de datos y en todas las sesiones.
- Oracle depende del número de cambio del sistema (SCN) de la transacción actual para obtener una vista coherente de la base de datos. Por lo tanto, todas las consultas de bases de datos solo muestran datos confirmados con respecto al SCN al momento de la ejecución de la consulta.
- Los niveles de aislamiento se pueden cambiar a nivel de transacción y de sesión.
Este es un ejemplo de configuración de los niveles de aislamiento:
-- Transaction Level
SQL> SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SQL> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SQL> SET TRANSACTION READ ONLY;
-- Session Level
SQL> ALTER SESSION SET ISOLATION_LEVEL = SERIALIZABLE;
SQL> ALTER SESSION SET ISOLATION_LEVEL = READ COMMITTED;
Cloud SQL para PostgreSQL es compatible con los siguientes cuatro niveles de aislamiento de transacción especificados en el estándar ANSI SQL:92:
- Lectura no confirmada (equivalente a lectura confirmada)
- Lectura confirmada (predeterminado)
- Lectura repetible
- Serializable
El nivel de aislamiento predeterminado de Cloud SQL para PostgreSQL es READ COMMITTED
.
Estos niveles de aislamiento se pueden modificar a nivel de SESSION
, a nivel de TRANSACTION
y a nivel de INSTANCE
.
Para verificar los niveles de aislamiento actuales en los niveles TRANSACTION
y SESSION
, usa la siguiente declaración:
postgres=> SELECT CURRENT_SETTING('TRANSACTION_ISOLATION');
Este es el resultado:
current_setting ----------------- read committed (1 row)
Puedes modificar la sintaxis del nivel de aislamiento de la siguiente manera:
SET [SESSION CHARACTERISTICS AS] TRANSACTION ISOLATION LEVEL [ REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE]
Además, puedes modificar el nivel de aislamiento a nivel de SESIÓN:
postgres=> SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- Verify
postgres=> SELECT CURRENT_SETTING('TRANSACTION_ISOLATION');
Esta es la salida:
current_setting ----------------- repeatable read (1 row)
El nivel de aislamiento en los niveles INSTANCE
se controla mediante la marca de base de datos
default_transaction_isolation
. Para verificarlo, usa la siguiente instrucción:
postgres=> SHOW DEFAULT_TRANSACTION_ISOLATION;
Este es el resultado:
default_transaction_isolation ------------------------------- repeatable read (1 row)
¿Qué sigue?
- Obtén más información sobre las cuentas de usuario de Cloud SQL para PostgreSQL.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.