Esta página explica como migrar tabelas do Oracle que ainda não têm chaves primárias.
O Database Migration Service exige que as tabelas de destino do PostgreSQL tenham chaves primárias.
O espaço de trabalho de conversão padrão do Database Migration Service faz isso automaticamente,
criando colunas rowid
para tabelas que não têm chaves primárias.
No entanto, se você estiver usando o espaço de trabalho de conversão legado com a ferramenta de migração Ora2Pg e suas tabelas de origem do Oracle não tiverem chaves primárias, será necessário criar as chaves manualmente.
As seções a seguir oferecem opções de como criar chaves primárias para suas tabelas de origem do Oracle.
Criar uma chave primária usando colunas atuais
Talvez sua tabela já tenha uma chave primária lógica baseada em uma coluna ou em uma combinação de colunas. Por exemplo, pode haver colunas com uma restrição ou um índice exclusivo configurado. Use essas colunas para gerar uma nova chave primária no cluster de destino do AlloyDB para PostgreSQL.
Criar uma chave primária usando a coluna rowid
Os bancos de dados Oracle usam uma pseudocoluna rowid
para armazenar o local de cada linha em
uma tabela. Para migrar tabelas do Oracle que não têm chaves primárias, adicione uma nova coluna rowid
no banco de dados PostgreSQL de destino. O Database Migration Service preenche
a coluna com os valores numéricos correspondentes da pseudocoluna rowid
de origem do Oracle.
Para adicionar a coluna e defini-la como chave primária, execute o seguinte:
ALTER TABLE TABLE_NAME ADD COLUMN rowid numeric(33,0) NOT NULL; CREATE SEQUENCE TABLE_NAME_rowid_seq INCREMENT BY -1 START WITH -1 OWNED BY TABLE_NAME.rowid; ALTER TABLE TABLE_NAME ALTER COLUMN rowid SET DEFAULT nextval('TABLE_NAME_rowid_seq'); ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_NAME PRIMARY KEY (rowid);
Substitua:
- TABLE_NAME: o nome da tabela em que você quer adicionar a coluna.
- CONSTRAINT_NAME: o identificador da restrição
PRIMARY KEY
.
Criar uma chave primária usando todas as colunas
Se você não puder usar as opções descritas anteriormente e a tabela do Oracle de origem não tiver linhas duplicadas, crie uma chave primária usando todas as colunas da tabela. Não exceda o comprimento máximo da chave primária permitido pelo cluster do PostgreSQL.