Diferenças de comando SQL no ambiente de replicação
- Você deve executar os comandos SQL no primário.
- Em uma réplica, as alterações em objetos replicados (DDL, DML, tabelas de banco de dados e sequências) fazem com que a transação seja abortada. As tabelas temporárias não são consideradas objetos replicados; portanto, você pode modificá-las.
- Todas as referências de dados, inclusive aos dados em um banco de dados não replicado ou de sistema, são suportadas. Referências a dados não replicados acionam a replicação por valor.
Além disso, as declarações não determinísticas são tratadas usando a replicação por valor (replicação de valor de alteração).
- Replicado: o comando é executado no primário e reproduzido na réplica
- Não replicado: o comando é executado no primário ou na réplica, mas não é reproduzido em outro nó
- Não suportado: o comando está impedido de ser executado
| Comando | Notas | Veja Também |
|---|---|---|
| ALTER DATABASE | Você só pode emitir esse comando em uma conexão de sessão com um banco de dados replicado ou com o banco de dados SYSTEM. Em um banco de dados replicado em um primário, o comando ALTER DATABASE é replicado para a réplica. Em uma réplica, o comando ALTER DATABASE é permitido somente em um banco de dados não replicado. | comando CREATE DATABASE |
| BEGIN e COMMIT | As transações com consultas de atualização (com os comandos correspondentes BEGIN e COMMIT ) que afetam objetos globais ou replicados são replicadas. As transações sem consultas de atualização (somente leitura, em que nenhuma alteração é feita no banco de dados) não são. | comando ROLLBACK |
| CALL, EXEC, EXECUTE, e SELECT procedimento armazenado | A replicação por SQL ou por valor é selecionada com base no fato de todos os objetos referenciados por um procedimento armazenado serem membros do conjunto de replicação. | Replicação de procedimentos armazenados |
| COPY FROM | Esse comando não é suportado. | |
| CREATE AGGREGATE, CREATE [OR REPLACE] AGGREGATE, DROP AGGREGATE | Todos os agregados definidos pelo usuário (e as funções agregadas em janelas do sistema, que não podem ser modificadas) usam replicação por valor. | |
| CREATE CATEGORY, ALTER CATEGORY e DROP CATEGORY | Há objetos globais relacionados à segurança multinível. | Objetos globais |
| CREATE COHORT, ALTER COHORT, e DROP COHORT | Há objetos globais relacionados à segurança multinível. | Objetos globais |
| CREATE DATABASE REPLICATION SET | Um subcomando do comando CREATE DATABASE, que cria um novo banco de dados replicado quando emitido no primário. | Criação de novos bancos de dados replicados |
| CREATE EXTERNAL TABLE | Um arquivo externo é criado como parte da execução do comando na réplica, que não é o arquivo exato que existia no primário. O caminho do diretório deve existir na réplica; caso contrário, a replicação será suspensa. | Criação de tabela externa |
| CREATE [OR REPLACE] FUNCTION, ALTER FUNCTION e DROP FUNCTION | Você pode especificar a opção DETERMINISTIC ou NOT DETERMINISTIC. Se você especificar a opção NOT DETERMINISTIC, a replicação por valor será selecionada quando a função for chamada. | Sincronização |
| CREATE GROUP, ALTER GROUP e DROP GROUP | Objeto global. | Objetos globais |
| CREATE HISTORY CONFIGURATION, ALTER HISTORY CONFIGURATION, DROP HISTORY CONFIGURATION, e SET HISTORY CONFIGURATION | Os comandos relacionados à configuração do histórico não são replicados. Os nós em um conjunto de replicação podem ter configurações de histórico diferentes ou não ativadas. | |
| CREATE [OR REPLACE] LIBRARY, ALTER LIBRARY e DROP LIBRARY | As bibliotecas definidas pelo usuário são objetos em um banco de dados. Os comandos usam duas cláusulas, EXTERNAL HOST OBJECT e EXTERNAL SPU OBJECT, que identificam objetos compilados no sistema de arquivos que é usado para executar o código da biblioteca no host e na SPU. É necessário definir cada biblioteca (incluindo bibliotecas dependentes opcionais) e objeto compilado em um banco de dados replicado; caso contrário, o comando falhará. | |
| CREATE MATERIALIZED VIEW | ConsulteCREATE VIEW. | |
| CREATE PROCEDURE, ALTER PROCEDURE e DROP PROCEDURE | Replicação de procedimentos armazenados | |
| CREATE SECURITY LEVEL, ALTER SECURITY LEVEL e DROP SECURITY LEVEL | Objetos globais relacionados à segurança multinível. | Objetos globais |
| CREATE SEQUENCE, ALTER SEQUENCE e DROP SEQUENCE | A replicação por valor é usada. | Consistência da sequência |
| CREATE SYNONYM, ALTER SYNONYM e DROP SYNONYM | É possível criar sinônimos entre bancos de dados. A replicação por valor é usada para referências a uma tabela não replicada. | |
| CREATE TABLE, ALTER TABLE e DROP TABLE | Os comandos são replicados somente para tabelas não temporárias em um banco de dados replicado. | |
| CREATE TABLE AS SELECT | A replicação é feita por SQL ou por valor, dependendo do fato de todos os objetos referenciados serem membros do conjunto de replicação. | |
| CREATE TEMPORARY TABLE | As tabelas temporárias se comportam de forma idêntica em bancos de dados replicados e não replicados no banco de dados primário. As tabelas temporárias não são objetos membros do conjunto de replicação, e as referências a tabelas temporárias resultam em replicação por valor. | Regras de implementação de replicação SQL |
| CREATE USER, ALTER USER e DROP USER | A execução do comando ALTER USER admin é uma operação local. Você pode emitir o comando em qualquer nó, e ele não é replicado. É necessário executar todas as outras operações de usuário no primário, e elas são replicadas com outros objetos globais. | |
| CREATE VIEW e CREATE [OR REPLACE] VIEW | O comando pode fazer referência a objetos em um banco de dados replicado ou a objetos do sistema. O comando falhará se fizer referência a um objeto em um banco de dados não replicado. | Exibições ao inicializar uma réplica |
| DROP DATABASE | Quando você emite o comando em um banco de dados replicado no primário, o banco de dados é descartado em todos os nós de replicação do conjunto. O descarte de um banco de dados durante a execução de transações replicadas simultâneas pode resultar em um deadlock. A eliminação de um banco de dados enquanto as sessões ainda estão conectadas a ele faz com que o comando falhe. | |
| EXECUTE AS e REVERT | Os comandos devem ser replicados quando estiverem em uma transação de atualização com várias declarações em relação a dados replicados ou globais. Nenhum efeito quando emitido como uma transação implícita. | |
| GRANT e REVOKE | Concessão e revogação de privilégios | |
| GENERATE STATISTICS | O comando não altera os dados, mas afeta o desempenho da consulta. Nas versões do NPS® anteriores à 7.2.0.4, o comando é sempre replicado se você o emitir no primário. No NPS 7.2.0.4 ou posterior, o comando será replicado se você o emitir no primário e o parâmetro replReplayMaintenance no arquivo replrqm.cfg estiver definido como true. O valor padrão do parâmetro é true ; altere-o somente após consultar o Suporte ao cliente. Você pode emitir o comando em um banco de dados replicado na réplica, mas o comando não é replicado. |
|
| GROOM TABLE | O comando não altera os dados, mas afeta o desempenho da consulta. Nas versões do NPS anteriores a 7.1.0.4-P2 e 7.2.0.3-P2, um comando GROOM TABLE replicado com a opção RECLAIM BACKUPSET <backupsetid> faz com que a réplica seja suspensa. No NPS 7.1.0.4-P2 e 7.2.0.3-P2 ou posterior, a réplica trata um comando GROOM TABLE replicado com a opção RECLAIM BACKUPSET <backupsetid> como um comando GROOM TABLE sem a opção RECLAIM BACKUPSET <backupsetid>. No NPS 7.2.0.4 ou posterior, o comando GROOM TABLE será replicado se você o emitir no primário e o parâmetro replReplayMaintenance no arquivo replrqm.cfg estiver definido como true. O valor padrão do parâmetro é true ; altere-o somente após consultar o Suporte ao cliente. Você pode emitir o comando GROOM TABLE em um banco de dados replicado na réplica, mas o comando não é replicado. A emissão do comando em uma tabela replicada em uma réplica não elimina os registros excluídos que talvez precisem estar visíveis para as transações replicadas subsequentes do primário ou para as transações atuais na réplica. |
|
| INSERT, UPDATE e DELETE | Os comandos são replicados se aplicados em um banco de dados replicado, exceto quando direcionados a uma tabela temporária ou externa (unload). Os comandos são permitidos em uma réplica somente em um banco de dados não replicado ou em uma tabela temporária em um banco de dados replicado. Os descarregamentos não são registrados no primário ou na réplica e, portanto, também são permitidos em uma réplica. | |
| LOCK DATABASE declaração | A instrução LOCK DATABASE não é replicada, mas é permitida no primário para evitar deadlocks e abortos de transações. | |
| LOCK TABLE declaração | Não replicado, inclusive para tabelas em um banco de dados replicado. | LOCK TABLE e o Guia do Usuário do Banco de Dados IBM Netezza. |
| ROLLBACK | Não é replicado. | BEGIN e COMMIT |
| SELECT consultas | Transações implícitas com SELECTs, transações somente leitura e instruções SELECT que fazem parte de uma transação de leitura/gravação não são replicadas. | |
| SET e RESET declarações | Com algumas exceções, não é replicado porque o estado da sessão não é preservado entre o primário e a réplica. | Variáveis de sessão do NPS |
| SHOW declaração | Não replicado. | |
| TRUNCATE TABLE | O comando não pode fazer parte de uma transação explícita. Se executado no primário, o comando será replicado se o banco de dados for replicado. |