Este documento faz parte de uma série que fornece informações importantes e orientações relacionadas ao planejamento e à realização de migrações de banco de dados Oracle® 11g/12c para o Cloud SQL para PostgreSQL versão 12. Além da parte de configuração introdutória, a série inclui as seguintes partes:
- Como migrar usuários do Oracle para o Cloud SQL para MySQL: terminologia e funcionalidade
- Como migrar usuários do Oracle para o Cloud SQL para MySQL: tipos de dados, usuários e tabelas (este documento)
- Como migrar usuários do Oracle para o Cloud SQL para MySQL: consultas, procedimentos armazenados, funções e gatilhos
- Como migrar usuários da Oracle para o Cloud SQL para MySQL: segurança, operações, monitoramento e geração de registros
- Como migrar usuários e esquemas do banco de dados da Oracle para o Cloud SQL para PostgreSQL
Tipos de dados
O Cloud SQL para PostgreSQL fornece vários tipos de dados que são totalmente equivalentes ou semelhantes aos tipos de dados fornecidos pela Oracle. A tabela a seguir lista os tipos de dados do PostgreSQL mais comuns, seguidos por uma comparação entre os tipos de dados primitivos da Oracle e os do Cloud SQL para PostgreSQL correspondentes. em que um tipo de dados não é compatível, um tipo de dados alternativo é listado.
Tipos de dados primitivos do Cloud SQL para PostgreSQL 12
Família de tipos de dados do Cloud SQL para PostgreSQL | Nome do tipo de dados do Cloud SQL para PostgreSQL | Especificação do tipo de dados |
---|---|---|
String/caractere | CHAR(n) |
Armazena exatamente n caracteres. Alias de CHARACTER(n) . |
CHARACTER(n) |
Armazena exatamente n caracteres. |
|
VARCHAR(n) |
Armazena um número variável de caracteres, até um máximo de n caracteres. Alias de CHARACTER
VARYING(n) . |
|
CHARACTER VARYING(n) |
Armazena um número variável de caracteres, até um máximo de n caracteres. |
|
TEXT |
Variante específica de VARCHAR que não exige um limite máximo para o número de caracteres. A string de caracteres mais longa possível que pode ser armazenada é de 1 GB (igual a todos os tipos de dados de caracteres de string). |
|
Numérico | SMALLINT |
O valor mínimo é -32768 | O valor máximo é 32767. |
INTEGER |
O valor mínimo é de 2147483648 | O valor máximo é 2147483647. | |
BIGINT |
O valor mínimo é de 2^63 | O valor máximo é 2^63-1. | |
REAL |
Número de ponto flutuante de precisão única (4 bytes). | |
DOUBLE PRECISION |
Número de ponto flutuante de precisão dupla (8 bytes). | |
DECIMAL (p,s) |
Capaz de armazenar qualquer valor com p dígitos e s decimais. |
|
NUMERIC(p,s) |
Capaz de armazenar qualquer valor com p dígitos e s decimais. |
|
SMALLSERIAL |
Inteiro autoincrementado. O valor mínimo é de 1 | O valor máximo é 32767. | |
SERIAL |
Inteiro autoincrementado. O valor mínimo é de 1 | O valor máximo é 2147483647. | |
BIGSERIAL |
Inteiro autoincrementado. O valor mínimo é de 1 | O valor máximo é 2^63-1. | |
Monetário | MONEY |
Valor de moeda com precisão fracionária fixa. O valor mínimo é de -92233720368547758.08 | O valor máximo é de +92233720368547758.07. |
Data e hora | DATE |
Valores com uma parte da data, mas sem parte da hora. - O intervalo aceito é de 4713 BC a 5874897 do AD com resolução de 1 dia. |
TIMESTAMP (p) |
- valores que contêm partes de data e hora. - O intervalo aceito é de 4713 BC a 294276 AD. - A resolução é de p dígitos fracionários em segundos (ou 1 microssegundo, se não especificado). |
|
TIMESTAMP (p) with time zone |
- Valores que contêm a data, a hora e o fuso horário. - O intervalo aceito é de 4713 BC a 294276 AD. - A resolução é de p dígitos fracionários em segundos (ou 1 microssegundo, se não especificado). |
|
TIME (p) |
- Valores com uma parte do tempo, mas não a parte da data. - o intervalo compatível é de 0:00:00 a 24:00:00. - A resolução tem p dígitos fracionários em segundos (ou 1 microssegundo, se não especificado). |
|
TIME (p) with time zone |
- Valores com fuso horário e hora, mas sem parte da data. - o intervalo compatível é de 0:00:00 a 24:00:00. - A resolução é de p dígitos fracionários em segundos (ou 1 microssegundo, se não especificado). |
|
INTERVAL (p) |
- Intervalo de tempo - O intervalo aceito é de -178000000 a 178000000 anos. - A resolução é de p dígitos fracionários em segundos (ou 1 microssegundo, se não especificado). |
|
JSON | JSON |
Dados JSON textuais. |
JSONB |
Dados JSON binários. | |
XML | XML |
Dados XML. |
Geométrico |
GEOMETRY |
O tipo de coluna que especifica quando você quer usar os modelos de dados a seguir. |
POINT |
Um valor (x,y) . |
|
LINE |
Uma tupla (A, B, C) em que Ax +
By + C = 0 e A e B não são ambos 0.OU Ponto 1 e ponto 2 nos seguintes formatos:
|
|
LSEG |
Um segmento de linha ((x1,y1),(x2,y2)) . |
|
BOX |
Caixa retangular ((x1,y1),(x2,y2)) . |
|
PATH |
Uma sequência de pontos ((x1,y1),...) . |
|
POLYGON |
Uma sequência de pontos, efetivamente um caminho fechado. | |
CIRCLE |
(x,y),r) (ponto central e raio) |
|
Lógica | BOOLEAN |
- Mantém um valor true, false ou null. - aceita valores como yes , true e t , on e 1 como verdadeiros. |
Bit / dados binários | BIT (n) |
String de bits com comprimento fixo. |
BYTEA |
Matriz de dados / bytes binários. | |
Tipos de endereço de rede | CIDER |
Redes IPv4 e IPv6. |
INET |
Hosts e redes IPv4 e IPv6. | |
MACADDR |
Endereços MAC. | |
MACADDR8 |
Endereços MAC (formato EUI-64). | |
Others | PG_LSN |
Número da sequência de registros do Cloud SQL para PostgreSQL. |
TSQUERY |
Consulta de pesquisa de texto. | |
TSVECTOR |
Documento de pesquisa de texto. | |
TXID_SNAPSHOT |
Snapshot do código da transação no nível do usuário. | |
UUID |
Identificador universalmente exclusivo. |
Conversão de Oracle para Cloud SQL para PostgreSQL
Família de tipos de dados do Oracle | Nome do tipo de dados do Oracle | Especificação do tipo de dados do Oracle | Cloud SQL para PostgreSQL para equivalente da Oracle | Cloud SQL para PostgreSQL correspondente/alternativa |
---|---|---|---|---|
String/caractere | CHAR(n) |
Tamanho máximo de 2.000 bytes. | Sim | CHAR(n) |
CHARACTER(n) |
Tamanho máximo de 2.000 bytes. | Sim | CHARACTER(n) |
|
NCHAR(n) |
Tamanho máximo de 2.000 bytes. | Não | CHAR(n) |
|
VARCHAR(n) |
Tamanho máximo de 2.000 bytes. | Sim | VARCHAR(n) |
|
NCHAR VARYING(n) |
String UTF-8 de comprimento variável de 4.000 bytes. |
Não | CHARACTER VARYING(n) |
|
VARCHAR2(n)
11g |
Tamanho máximo de 4.000 bytes. Tamanho máximo de 32 KB em PL/SQL. | Sim* | VARCHAR(n) |
|
VARCHAR2(n) |
Tamanho máximo de 32767 bytes MAX_STRING_SIZE= EXTENDED . |
Sim* | VARCHAR(n) |
|
NVARCHAR2(n) |
Tamanho máximo de 4.000 bytes. | Não | VARCHAR(n) |
|
LONG |
Tamanho máximo de 2 GB. | Sim* | TEXT |
|
RAW(n) |
Tamanho máximo de 2.000 bytes. | Sim* | BYTEA |
|
LONG RAW |
Tamanho máximo de 2 GB. | Sim* | BYTEA |
|
Numérico | NUMBER |
Número de ponto flutuante. | Sim* | NUMERIC(p,s) |
NUMBER(*) |
Número de ponto flutuante. | Sim* | DOUBLE PRECISION |
|
NUMERIC(p,s) |
A precisão pode variar de 1 a 38. | Sim | NUMERIC(p,s) |
|
FLOAT(p,s) |
Número de ponto flutuante. | Sim* | DOUBLE PRECISION |
|
DEC(p,s) |
Número de ponto fixo. | Sim | DEC(p,s) |
|
DECIMAL(p,s) |
Número de ponto fixo. | Sim | DECIMAL(p,s) |
|
INT |
Número inteiro de 38 dígitos. | Sim | INT |
|
INTEGER |
Número inteiro de 38 dígitos. | Sim | INTEGER |
|
SMALLINT |
Número inteiro de 38 dígitos. | Sim | SMALLINT |
|
REAL |
Número de ponto flutuante. | Sim* | DOUBLE PRECISION |
|
DOUBLE PRECISION |
Número de ponto flutuante. | Sim | DOUBLE PRECISION |
|
Data e hora | DATE |
Armazena dados de data e hora (ano, mês, dia, hora, minuto e segundo). | Sim* | TIMESTAMP(0) |
TIMESTAMP(p) |
Data e hora com fração. | Sim | TIMESTAMP(p) |
|
TIMESTAMP(p) WITH TIME ZONE |
Data e hora com fração e fuso horário. | Sim | TIMESTAMP (p) WITH TIME ZONE |
|
INTERVAL YEAR(p) TO MONTH |
Intervalo de data. | Sim* | INTERVAL YEAR TO MONTH |
|
INTERVAL DAY(p) TO SECOND(s) |
Intervalo de dia e hora. | Sim* | INTERVAL DAY TO SECOND(s) |
|
Lógica | BOOLEAN |
Valores TRUE , FALSE e NULL . Não é possível atribuir uma coluna de tabela de banco de dados. |
Sim | BOOLEAN |
XML | XMLTYPE |
Dados XML. | Não | XML |
LOB | BFILE |
Ponteiro para arquivo binário, com tamanho máximo de 4 GB. | Não | VARCHAR(255) |
CLOB |
Objeto grande de caractere com tamanho máximo de arquivo de 4GB. | Não | TEXT |
|
BLOB |
Objeto grande binário com tamanho máximo de 4GB. | Não | BYTEA |
|
NCLOB |
String Unicode de comprimento variável com tamanho máximo de arquivo de 4GB. | Não | TEXT |
|
ROWID | ROWID |
Endereço da linha física. | Não | CTID |
UROWID(n) |
ID de linha universal dos endereços de linha lógicos. | Não | CTID |
|
Espacial | SDO_ GEOMETRY |
A descrição geométrica de um objeto espacial. | Sim | O Postgres tem vários tipos de geometria, incluindo point , line , path , polygon , circle , .... |
SDO_TOPO_ GEOMETRY |
Descreve uma geometria de topologia. | Sim | O PostGIS, uma extensão amplamente usada do Postgres, fornece vários tipos de topologia. | |
SDO_GEORASTER |
Uma grade de varredura ou um objeto de imagem é armazenado em uma única linha. | Sim | O PostGIS, uma extensão amplamente usada do Postgres, oferece uma ferramenta para carregar arquivos raster no banco de dados. | |
Tipos de mídia | ORDDicom |
Compatível com o armazenamento e o gerenciamento de arquivos de imagens e comunicações digitais em medicina (DICOM, na sigla em inglês). | Sim com uma solução alternativa | O Postgres fornece um tipo binário, bytea , para armazenar objetos grandes. |
ORDDoc |
Compatível com armazenamento e gerenciamento de qualquer tipo de dados de mídia. | Sim com uma solução alternativa | O Postgres fornece um tipo binário, bytea , para armazenar objetos grandes. |
|
ORDImage |
Compatível com o armazenamento e o gerenciamento de dados de imagem. | Sim com uma solução alternativa | O Postgres fornece um tipo binário, bytea , para armazenar objetos grandes. |
|
ORDVideo |
Compatível com armazenamento e gerenciamento de dados de vídeo. | Alternativa | O Postgres fornece um tipo binário, bytea , para armazenar objetos grandes. |
* O tipo de dados correspondente no Cloud SQL para PostgreSQL é, principalmente, compatível com o Oracle, mas com um nome diferente.
Tipos definidos pelo usuário
A Oracle se refere a tipos definidos pelo usuário (UDTs, na sigla em inglês) como OBJECT TYPES
, que são gerenciados usando PL/SQL. Eses tipos permitem que o usuário crie tipos de dados complexos e dedicados a aplicativos baseados na lista de tipos de dados integrados do Oracle.
Tipos definidos pelo usuário Oracle | Visão geral ou implementação do Oracle | Suporte do Cloud SQL para PostgreSQL | Cloud SQL correspondente para solução alternativa ou alternativa |
---|---|---|---|
Tipo de dados abstratos (ADT, na sigla em inglês) | CREATE TYPE ADT_DEMO AS OBJECT ( |
Parcialmente com uma sintaxe diferente | Os tipos compostos do Cloud SQL para PostgreSQL são especificados por uma lista de nomes de atributos e tipos de dados:
|
Tipo VARRAY | CREATE TYPE VARRAY_DEMO AS VARRAY (5) OF VARCHAR2(25); |
Não | Como solução alternativa, o Cloud SQL para PostgreSQL permite definir as colunas como uma matriz:
|
Tipo de tabela aninhada | CREATE TYPE NTT_DEMO AS OBJECT ( |
Não | Como solução alternativa, use uma combinação de tipos compostos e de definições de coluna de matriz no Cloud SQL para PostgreSQL para conseguir uma funcionalidade semelhante à do tabela aninhada da Oracle.
|
Tipo incompleto | Tipos incompletos são tipos sem atributos e métodos. Elas podem ser referenciadas por outros tipos. No entanto, é necessário fornecer a definição de tipo antes de usá-la.
|
Não | N/A |
Usuários
Nesta seção, tratamos de como criar usuários e atribuir permissões a eles, além da necessidade de converter tabelas do Oracle em tabelas do Cloud SQL para MySQL.
Criação e permissões de usuários
As contas de usuário do banco de dados da Oracle (o "usuário" e o "esquema" do Oracle são idênticos) podem ser usadas para autenticar e se conectar a sessões do banco de dados. O acesso de autorização é definido no nível individual do usuário para objetos específicos do banco de dados. /permissions.
Em geral, há dois tipos de usuários de banco de dados:
- Administradores: gerenciar a instância, os usuários e os recursos do banco de dados.
- Contas de usuário: disponibilizar operações lógicas, como aplicativos.
Os administradores concedem privilégios a contas de usuário e de aplicativo para acessar os objetos do banco de dados. As permissões do banco de dados Oracle são concedidas a um usuário para operações específicas (por exemplo, criar sessão/conexão) ou objetos de banco de dados específicos (por exemplo, SELECT
em uma tabela específica ou EXECUTE
em um procedimento armazenado específico).
No Oracle, há usuários e papéis. Os usuários são usados para autenticar com o banco de dados, e os papéis fornecem o agrupamento de permissões que podem ser concedidas como um todo.
No Cloud SQL para PostgreSQL, os usuários e papéis são sinônimos. Um usuário no Cloud SQL para PostgreSQL é um papel com permissão connect
. Use a instrução CREATE USER
ou CREATE ROLE
para criar um usuário do banco de dados. Ao contrário do Oracle, no Cloud SQL para PostgreSQL, os esquemas e os usuários são criados separadamente. Um esquema é uma coleção de objetos (por exemplo, tabelas, tipos de dados, funções etc.) que pertence a um usuário.
Criar usuário Oracle | |
---|---|
CREATE USER user_name IDENTIFIED BY password; |
|
Criar usuário do Cloud SQL para PostgreSQL | |
CREATE USER user WITH PASSWORD 'password';
OU
|
Considerações sobre conversão
- Os usuários são definidos no nível raiz e são válidos para todos os bancos de dados contidos no mesmo cluster do Cloud SQL para PostgreSQL. Isso é semelhante aos "usuários comuns" no Oracle 12c.
- A sintaxe
CREATE USER
do Cloud SQL para PostgreSQL é diferente da Oracle e não pode ser migrada como está.CREATE USER
no Cloud SQL para PostgreSQL é um alias paraCREATE ROLE
, exceto que a opçãoLOGIN
é ativada por padrão.
Tabelas
As tabelas Oracle são construídas com base em muitos elementos, como tipos de dados de coluna, restrições de tabela, índices, partições, recursos reservados de tabelas Oracle e muito mais. Para migrar com êxito para as tabelas de banco de dados do Cloud SQL para PostgreSQL, todos os elementos da tabela Oracle precisam ser convertidos em tabelas do Cloud SQL para PostgreSQL. Alguns elementos são compatíveis sem nenhuma modificação, outros sofrem pequenas modificações e outros precisam ser completamente modificados.
Da perspectiva da migração, a conversão de PL/SQL para o Cloud SQL para PostgreSQL provavelmente requer mais esforço, porque a conversão de tabelas Oracle para o Cloud SQL para tabelas do PostgreSQL é um estágio crucial com importância significativa e outras implicações no desempenho. tamanho dos dados.
Veja a seguir as principais diferenças entre as tabelas Oracle e Cloud SQL para PostgreSQL e os recursos relacionados. Essas diferenças são discutidas nas partes restantes da série.
- Criar sintaxe de tabela
- Metadados de tabela e índice
- Suporte a restrições
- Compatibilidade e limitações de tipos de dados
- Índices
- Partições e gerenciamento de partições
- Gerenciamento de tabelas e índices
- Tabelas temporárias
- Visualizações
- Colunas visíveis e invisíveis (Oracle 12c)
- Conjuntos de caracteres de tabela e coluna
A seguir
- Explore mais sobre as contas de usuário do Cloud SQL para MySQL.
- Confira arquiteturas de referência, diagramas e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.