Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Central de ajuda/
GaussDB(DWS)/
Melhores práticas/
Migração de dados/
Migração de dados do Oracle para GaussDB(DWS)/
Migração de definições de tabela/
Migração de definições de tabela e sintaxe
Atualizado em 2024-05-09 GMT+08:00
Migração de definições de tabela e sintaxe
- Efetue logon no PL/SQL Developer usando uma conta com a permissão sysdba. Neste exemplo, a conta db_user01 é usada.
A seguir, o PL/SQL Developer Trial Version é usado como exemplo.
- Na barra de menus, escolha Tools > Export User Objects.
- Selecione o usuário conectado db_user01, selecione o objeto da tabela APEX2_DYNAMIC_ADD_REMAIN_TEST do usuário, selecione o caminho para o arquivo de saída (nomeie o arquivo SQL de saída como test) e clique em Export.
O arquivo DDL exportado é o seguinte:
- Coloque o arquivo DDL exportado no diretório input da pasta DSC descompactada.
- No diretório runDSC.bat, pressione Shift e clique com o botão direito do mouse. Escolha Open PowerShell window here e execute a conversão. Substitua D:\DSC\DSC\input, D:\DSC\DSC\output e D:\DSC\DSC\log pelos caminhos de DSC reais.
1
.\runDSC.bat --source-db Oracle --input-folder D:\DSC\DSC\input --output-folder D:\DSC\DSC\output --log-folder D:\DSC\DSC\log --application-lang SQL --conversion-type bulk --target-db gaussdbA
- Após a conclusão da conversão, o arquivo DDL convertido é gerado automaticamente no diretório output de DSC.
- A estrutura de definição de tabela do GaussDB(DWS) é diferente da do Oracle. Você precisa modificar manualmente a definição da tabela convertida.
Comentar fora \echo no arquivo (se você usar gsql para importar definições de tabela, você não precisa fazer isso) e altere manualmente a coluna de distribuição da tabela especificada.
A coluna de distribuição em uma tabela de hash deve atender aos seguintes requisitos, que são classificados por prioridade em ordem decrescente:
- Os valores da chave de distribuição devem ser discretos para que os dados possam ser distribuídos uniformemente em cada DN. Você pode selecionar a chave primária da tabela como a chave de distribuição. Por exemplo, para uma tabela de informações da pessoa, escolha a coluna do número de ID como a chave de distribuição.
- Não selecione a coluna onde existe um filtro constante. Por exemplo, se uma restrição constante (por exemplo, zqdh= '000001') existe na coluna zqdh em algumas consultas na tabela dwcjk, não é aconselhável usar zqdh como a chave de distribuição.
- Selecione a condição de junção como a coluna de distribuição, para que as tarefas de junção possam ser enviadas para os DNs para serem executadas, reduzindo a quantidade de dados transferidos entre os DNs.
- Crie um cluster de GaussDB(DWS). Para obter detalhes, consulte Criação de um cluster.
- Conecte-se ao cluster do GaussDB(DWS) como o administrador do sistema dbadmin. Para obter detalhes, consulte Uso do cliente da GUI do Data Studio para se conectar a um cluster. Por padrão, a primeira conexão é com o banco de dados padrão gaussdb.
- Crie um novo banco de dados de destino test e, em seguida, alterne para ele.
1
CREATE DATABASE test WITH ENCODING 'UTF-8' DBCOMPATIBILITY 'ORA' TEMPLATE template0;
- Crie um esquema e alterne para ele. O nome do esquema deve ser igual ao nome do usuário de Oracle (db_user01 neste exemplo).
1 2
CREATE SCHEMA db_user01; SET CURRENT_SCHEMA = db_user01;
- Copie as instruções DDL convertidas em 7 para Data Studio para execução.
- Se a tabela APEX2_DYNAMIC_ADD_REMAIN_TEST puder ser encontrada no esquema no banco de dados test do cluster GaussDB(DWS), a definição da tabela será migrada.
1
SELECT COUNT(*) FORM db_user01.APEX2_DYNAMIC_ADD_REMAIN_TEST;
Tópico principal: Migração de definições de tabela
Feedback
Esta página foi útil?
Deixar um comentário
Obrigado por seus comentários. Estamos trabalhando para melhorar a documentação.
O sistema está ocupado. Tente novamente mais tarde.