Oracle Zero Downtime Migration com Golden Gate Oracle Enterprise Linux 7.5 Oracle Database 11.2.0.4 e 12.2.0.1 Oracle GoldenGate 12.3.0.1 Ricardo Portilho Proni ricardo@nervinformatica.com.br Esta obra está licenciada sob a licença Creative Commons Atribuição-SemDerivados 3.0 Brasil. Para ver uma cópia desta licença, visite http://creativecommons.org/licenses/by-nd/3.0/br/.
Comandos no Treinamento Comando com o usuário root: # ls -lh Comando com um usuário oracle: $ ls -lh Comando no Oracle Database: SQL> SELECT STATUS FROM V$INSTANCE; Comando no Oracle Golden Gate: GGSCI (nerv01.localdomain) 1> INFO ALL Algo deve ser alterado de acordo com sua máquina: Hostname: nerv01.localdomain Quando algo dá errado propositalmente: O que aconteceu? 2
rlwrap # wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm # yum -y install epel-release-latest-7.noarch.rpm # yum -y install rlwrap $ rlwrap sqlplus / AS SYSDBA $ rlwrap rman TARGET / $ rlwrap lsnrctl $ rlwrap dgmgrl SYS/Nerv2017@ORCL $ cd $ORACLE_BASE/ogg-11g $ rlwrap./ggsci 3
glogin.sql $ cat $ORACLE_HOME/sqlplus/admin/glogin.sql SET PAGESIZE 1000 SET LINESIZE 220 SET TIMING ON SET TIME ON SET SQLPROMPT '&_user@&_connect_identifier> ' DEFINE _EDITOR=vi 09:08:44 SYS@ORCL> SELECT 1 FROM DUAL; 1 ---------- 1 Elapsed: 00:00:00.00 09:09:00 SYS@ORCL> 4
Ambiente Origem - HOSTNAME nerv01 - Oracle Enterprise Linux 7.5 - Oracle Enterprise Edition 11.2.0.4 - ORACLE_HOME: /u01/app/oracle/product/11.2.0.4/db_1 - Listener: Porta 1522 - Banco de Dados: LEGADO - Banco de Dados em Filesystem - Variáveis de ambiente: source /home/oracle/.bash_profile-11gr2 Destino - HOSTNAME nerv02 - Oracle Enterprise Linux 7.5 - Oracle Standard Edition 2 12.2.0.1 - ORACLE_HOME: /u01/app/oracle/product/12.2.0.1/db_2 - Listener: Porta 1523 - Banco de Dados: ORCLSE2, PDB NOVO - Banco de Dados em Filesystem - Banco de Dados em OMF - Variáveis de ambiente: source /home/oracle/.bash_profile-12cr2-se2 5
Estratégia de Migração 6
Estratégia de Migração - Manter a Aplicação funcionando; - Instalar Oracle Database Software no servidor nerv02; - Criar Instância e Banco de Dados no servidor nerv02; - Criar LISTENER no servidor nerv02; - Instalar Oracle Golden Gate 12.3.0.1 (para Oracle Database 11g) no servidor nerv01; - Instalar Oracle Golden Gate 12.3.0.1 (para Oracle Database 12c) no servidor nerv02; - Iniciar Oracle Golden Gate no servidor nerv01; - Iniciar Oracle Golden Gate no servidor nerv02; - Criar TABLESPACEs no servidor nerv02; - Criar SCHEMAs no servidor nerv02; - Exportar DDL dos objetos (exceto INDEX e CONSTRAINT) do SCHEMA no servidor nerv01; - Importar DDL dos objetos (exceto INDEX e CONSTRAINT) do SCHEMA no servidor nerv02; 7
Estratégia de Migração - Configurar EXTRACT de Extração INITIAL LOAD (EXT1) no servidor nerv01; - Configurar REPLICAT de SPECIAL RUN (REP1) no servidor nerv02; - Configurar EXTRACT de Extração de Redo Logs (EXT2) no servidor nerv01; - Configurar REPLICAT (REP2) no servidor nerv02; - Iniciar EXTRACT EXT2 no servidor nerv01; - Iniciar EXTRACT EXT1 no servidor nerv01; - Aguardar o EXTRACT EXT1 e o REPLICAT REP1 finalizarem; - Exportar DDL (apenas INDEX) dos objetos do SCHEMA no servidor nerv01; - Importar DDL (apenas INDEX) dos objetos do SCHEMA no servidor nerv02; - Iniciar o REP2; - Aguardar o REP2 estar com baixo DELAY; - Parar a Aplicação; - Aguardar o REP2 finalizar; - Parar EXTRACT EXT2; - Parar REPLICAT REP2; - Exportar DDL (só CONSTRAINTs) dos objetos do SCHEMA no servidor nerv01; - Importar DDL (só CONSTRAINTs) dos objetos do SCHEMA no servidor nerv02; - Direcionar a Aplicação para o servidor nerv02. 8
Lab 1 Instalação Golden Gate Hands On! 9 9
Lab 1.1: Instalação Golden Gate Na máquina nerv01, inicie a instalação do Golden Gate. $ cd /home/oracle/ $ source.bash_profile-11gr2 $ unzip -q 123014_fbo_ggs_Linux_x64_shiphome.zip $ cd fbo_ggs_linux_x64_shiphome/disk1 $./runinstaller 10
Lab 1.2: Instalação Golden Gate 11
Lab 1.3: Instalação Golden Gate 12
Lab 1.4: Instalação Golden Gate 13
Lab 1.5: Instalação Golden Gate 14
Lab 1.6: Instalação Golden Gate Na máquina nerv02, inicie a instalação do Golden Gate. $ cd /home/oracle/ $ source.bash_profile-12cr2-se2 $ unzip -q 123014_fbo_ggs_Linux_x64_shiphome.zip $ cd fbo_ggs_linux_x64_shiphome/disk1 $./runinstaller 15
Lab 1.7: Instalação Golden Gate 16
Lab 1.8: Instalação Golden Gate 17
Lab 1.9: Instalação Golden Gate 18
Lab 1.10: Instalação Golden Gate 19
Lab 1.11: Instalação Golden Gate Na máquina nerv01, verifique se o MANAGER do Golden Gate está ativo. $ cd $ORACLE_BASE/ogg-11g $ rlwrap./ggsci GGSCI (nerv01.localdomain) 1> INFO ALL GGSCI (nerv01.localdomain) 1> EXIT Na máquina nerv02, verifique se o MANAGER do Golden Gate está ativo. $ cd $ORACLE_BASE/ogg-12c $ rlwrap./ggsci GGSCI (nerv02.localdomain) 1> INFO ALL GGSCI (nerv02.localdomain) 1> EXIT 20
Lab 1.12: Instalação Golden Gate Na máquina nerv01, habilite os pré-requisitos do Golden Gate. $ rlwrap sqlplus / AS SYSDBA SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; SQL> ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE; SQL> ALTER SYSTEM SET RECYCLEBIN=OFF SCOPE=SPFILE; SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP; Na máquina nerv01, crie o SCHEMA para o Golden Gate. $ cd $ORACLE_BASE/ogg-11g SQL> CREATE TABLESPACE OGG DATAFILE '/u01/app/oracle/oradata/legado/ogg01.dbf' SIZE 1G; SQL> CREATE USER OGG IDENTIFIED BY Nerv2018 DEFAULT TABLESPACE OGG TEMPORARY TABLESPACE TEMP; SQL> GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO OGG; SQL> GRANT EXECUTE ON UTL_FILE TO OGG; SQL> @marker_setup.sql OGG <enter> SQL> @ddl_setup.sql OGG <enter> SQL> @role_setup.sql OGG <enter> SQL> @ddl_enable.sql 21
Lab 1.13: Instalação Golden Gate Na máquina nerv02, habilite os pré-requisitos do Golden Gate. $ rlwrap sqlplus / AS SYSDBA SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; SQL> ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH; SQL> ALTER SYSTEM SET RECYCLEBIN=OFF SCOPE=SPFILE; SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP; SQL> ALTER SESSION SET CONTAINER = NOVO; SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Na máquina nerv02, crie o SCHEMA para o Golden Gate. $ cd $ORACLE_BASE/ogg-12c $ rlwrap sqlplus / AS SYSDBA SQL> ALTER SESSION SET CONTAINER = NOVO; SQL> CREATE TABLESPACE OGG; SQL> CREATE USER OGG IDENTIFIED BY Nerv2018 DEFAULT TABLESPACE OGG TEMPORARY TABLESPACE TEMP; SQL> GRANT CONNECT, RESOURCE, UNLIMITED TABLESPACE TO OGG; SQL> GRANT EXECUTE ON UTL_FILE TO OGG; SQL> @marker_setup.sql OGG <enter> SQL> @role_setup.sql OGG <enter> 22
Lab 2 Configuração Carga Inicial Hands On! 23 23
Lab 2.1: Configuração Carga Inicial Na máquina nerv01, verifique os comandos DDL para criação do SCHEMA. SQL> SET LONG 9000 SQL> SELECT DBMS_METADATA.GET_DDL('USER','SCOTT') FROM DUAL; SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT','SCOTT') FROM DUAL; SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','SCOTT') FROM DUAL; Na máquina nerv02, execute os comandos DDL para criação do SCHEMA. 24
Lab 2.2: Configuração Carga Inicial Na máquina nerv01, copie os objetos (exceto CONSTRAINTs e INDEX) para a máquina nerv02. 25
Lab 2.3: Configuração Carga Inicial 26
Lab 2.4: Configuração Carga Inicial 27
Lab 2.5: Configuração Carga Inicial 28
Lab 2.6: Configuração Carga Inicial 29
Lab 2.7: Configuração Carga Inicial Confira o log ao término da execução. O que aconteceu? 30
Lab 2.8: Configuração Carga Inicial Na máquina nerv01, configure o processo EXTRACT de Carga Inicial. GGSCI (nerv01.localdomain) 1> ADD EXTRACT ext1, SOURCEISTABLE GGSCI (nerv01.localdomain) 1> EDIT PARAMS ext1 EXTRACT ext1 USERID OGG@LEGADO, PASSWORD Nerv2018 RMTHOST nerv02, mgrport 7810 RMTTASK REPLICAT, GROUP rep1 TABLE SCOTT.*; GGSCI (nerv01.localdomain) 1> INFO ALL Na máquina nerv02, execute o processo REPLICAT de Carga inicial. GGSCI (nerv02.localdomain) 1> ADD REPLICAT rep1, SPECIALRUN GGSCI (nerv02.localdomain) 1> EDIT PARAMS rep1 REPLICAT rep1 ASSUMETARGETDEFS USERID OGG@NOVO, PASSWORD Nerv2018 MAP SCOTT.*, TARGET SCOTT.*; GGSCI (nerv02.localdomain) 1> INFO ALL 31
Lab 3 Configuração Carga Incremental Hands On! 32 32
Lab 3.1: Config. Carga Incremental Na máquina nerv01, configure o processo EXTRACT de Carga Incremental. GGSCI (nerv01.localdomain) 1> ADD EXTRACT ext2, TRANLOG, BEGIN NOW GGSCI (nerv01.localdomain) 1> ADD EXTTRAIL /u01/app/oracle/ogg-12c/dirdat/lt, EXTRACT ext2 GGSCI (nerv01.localdomain) 1> EDIT PARAMS ext2 EXTRACT ext2 USERID OGG@LEGADO, PASSWORD Nerv2018 RMTHOST nerv02, MGRPORT 7810 RMTTRAIL /u01/app/oracle/ogg-12c/dirdat/lt TRANLOGOPTIONS EXCLUDEUSER OGG DDL INCLUDE MAPPED OBJNAME SCOTT.*; TABLE SCOTT.*; GGSCI (nerv01.localdomain) 1> INFO ALL Os dois processos EXTRACT são exibidos por este comando? GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext1 GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext2 GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext1, DETAIL GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext2, DETAIL GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext1 GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext2 33
Lab 3.2: Config. Carga Incremental Na máquina nerv02, configure o processo REPLICAT de Carga Incremental. GGSCI (nerv02.localdomain) 1> EDIT PARAMS./GLOBAL GGSCHEMA OGG CHECKPOINTTABLE OGG.CHECKPOINT GGSCI (nerv02.localdomain) 1> DBLOGIN USERID OGG@NOVO, PASSWORD Nerv2018 GGSCI (nerv02.localdomain) 1> ADD CHECKPOINTTABLE OGG.CHECKPOINT GGSCI (nerv02.localdomain) 1> ADD REPLICAT REP2, EXTTRAIL /u01/app/oracle/ogg-12c/dirdat/lt, CHECKPOINTTABLE OGG.CHECKPOINT GGSCI (nerv02.localdomain) 1> EDIT PARAMS rep2 REPLICAT rep2 HANDLECOLLISIONS ASSUMETARGETDEFS USERID OGG@NOVO, PASSWORD Nerv2018 DISCARDFILE /u01/app/oracle/ogg-12c/dircrd/rep2_discard.txt, APPEND, MEGABYTES 10 DDL map SCOTT.*, target SCOTT.*; GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep1, DETAIL GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep2, DETAIL GGSCI (nerv02.localdomain) 1> STATS REPLICAT rep1 GGSCI (nerv02.localdomain) 1> STATS REPLICAT rep2 34
Lab 4 Executar Carga Inicial Hands On! 35 35
Lab 4.1: Executar Carga Inicial Na máquina nerv01, inicie o EXTRACT Incremental, e acompanhe o Log do Golden Gate. $ tail -f /u01/app/oracle/ogg-11g/ggserr.log GGSCI (nerv01.localdomain) 1> START EXTRACT ext2 GGSCI (nerv01.localdomain) 1> INFO ALL GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext2 GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext2, DETAIL GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext2 O que aconteceu? Na máquina nerv01, execute uma alteração de dados. $ rlwrap sqlplus SCOTT/TIGER SQL> SELECT * FROM EMP; SQL> DELETE FROM EMP WHERE EMPNO IN (7369, 7499); SQL> COMMIT; SQL> SELECT * FROM EMP; GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext2 36
Lab 4.2: Executar Carga Inicial Na máquina nerv01, inicie o EXTRACT Inicial, e acompanhe o Log do Golden Gate. $ tail -f /u01/app/oracle/ogg-11g/ggserr.log GGSCI (nerv01.localdomain) 1> START EXTRACT ext1 GGSCI (nerv01.localdomain) 1> INFO ALL GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext1 GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext1, DETAIL GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext1 Na máquina nerv02, acompanhe o progresso do REPLICAT Inicial. $ tail -f /u01/app/oracle/ogg-12c/ggserr.log GGSCI (nerv02.localdomain) 1> INFO ALL GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep1 GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep1, DETAIL GGSCI (nerv02.localdomain) 1> STATS REPLICAT rep1 O que aconteceu? 37
Lab 5 Executar Carga Incremental Hands On! 38 38
Lab 5.1: Executar Carga Incremental Na máquina nerv01, após o término da da execução do REPLICAT Inicial, crie os INDEX. Confira o log ao término da execução. 39
Lab 5.2: Executar Carga Incremental Na máquina nerv02, inicie o REPLICAT Incremental. $ tail -f /u01/app/oracle/ogg-12c/ggserr.log GGSCI (nerv02.localdomain) 1> START REPLICAT rep2 GGSCI (nerv02.localdomain) 1> INFO ALL GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep2 GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep2, DETAIL GGSCI (nerv02.localdomain) 1> STATS REPLICAT rep2 Na máquina nerv01, acompanhe o progresso do EXTRACT Incremental. $ tail -f /u01/app/oracle/ogg-11g/ggserr.log GGSCI (nerv01.localdomain) 1> INFO ALL GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext2 GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext2, DETAIL GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext2 Compare os dados entre as máquinas nerv01 e nerv02. nerv01: $ rlwrap sqlplus SCOTT/TIGER@LEGADO SQL> SELECT * FROM SCOTT.EMP; nerv02: $ rlwrap sqlplus SCOTT/TIGER@NOVO SQL> SELECT * FROM SCOTT.EMP; 40
Lab 6 Finalizar Replicação Hands On! 41 41
Lab 6.1: Finalizar Replicação Na máquina nerv01, pare o EXTRACT Incremental. $ tail -f /u01/app/oracle/ogg-11g/ggserr.log GGSCI (nerv01.localdomain) 1> INFO ALL GGSCI (nerv01.localdomain) 1> STOP EXTRACT ext2 GGSCI (nerv01.localdomain) 1> INFO ALL Na máquina nerv02, pare o REPLICAT incremental. $ tail -f /u01/app/oracle/ogg-12c/ggserr.log GGSCI (nerv02.localdomain) 1> INFO ALL GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep2 GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep2, DETAIL GGSCI (nerv02.localdomain) 1> STATS REPLICAT rep2 GGSCI (nerv02.localdomain) 1> SEND REPLICAT rep2 GETLAG GGSCI (nerv02.localdomain) 1> STOP REPLICAT rep2 GGSCI (nerv02.localdomain) 1> INFO ALL Compare os dados entre as máquinas nerv01 e nerv02. nerv01: $ rlwrap sqlplus SCOTT/TIGER@LEGADO SQL> SELECT * FROM SCOTT.EMP; nerv02: $ rlwrap sqlplus SCOTT/TIGER@NOVO SQL> SELECT * FROM SCOTT.EMP; 42
Lab 6.2: Finalizar Replicação Na máquina nerv01, migre as CONSTRAINTs da máquina nerv02. Confira o log ao término da execução. 43
Lab 7 Agora com um SCHEMA maior... Hands On! 44 44
Lab 7.1: Configuração Carga Inicial Na máquina nerv02, crie a tablespace SOE. $ rlwrap sqlplus / AS SYSDBA SQL> ALTER SESSION SET CONTAINER = NOVO; SQL> CREATE TABLESPACE SOE; Na máquina nerv01, verifique os comandos DDL para criação do SCHEMA. $ rlwrap sqlplus / AS SYSDBA SQL> SET LONG 9000 SQL> SELECT DBMS_METADATA.GET_DDL('USER','SOE') FROM DUAL; SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT','SOE') FROM DUAL; SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','SOE') FROM DUAL; Na máquina nerv02, execute os comandos DDL para criação do SCHEMA. 45
Lab 7.2: Configuração Carga Inicial Na máquina nerv01, copie os objetos (exceto CONSTRAINTS e INDEX) do SCHEMA SOE para a máquina nerv02. Confira o log ao término da execução. 46
Lab 7.3: Configuração Carga Inicial 47
Lab 7.8: Configuração Carga Inicial Na máquina nerv01, configure o processo EXTRACT de Carga Inicial. GGSCI (nerv01.localdomain) 1> ADD EXTRACT ext3, SOURCEISTABLE GGSCI (nerv01.localdomain) 1> EDIT PARAMS ext3 EXTRACT ext3 USERID OGG@LEGADO, PASSWORD Nerv2018 RMTHOST nerv02, MGRPORT 7810 RMTTASK REPLICAT, GROUP rep3 TABLE SOE.ORDERENTRY_METADATA; TABLE SOE.PRODUCT_DESCRIPTIONS; TABLE SOE.LOGON; TABLE SOE.PRODUCT_INFORMATION; TABLE SOE.INVENTORIES; TABLE SOE.ORDERS; TABLE SOE.ORDER_ITEMS; TABLE SOE.WAREHOUSES; TABLE SOE.CARD_DETAILS; TABLE SOE.ADDRESSES; TABLE SOE.CUSTOMERS; GGSCI (nerv01.localdomain) 1> INFO ALL 48
Lab 7.9: Configuração Carga Inicial Na máquina nerv02, configure o processo REPLICAT de Carga Inicial. GGSCI (nerv02.localdomain) 1> ADD REPLICAT rep3, SPECIALRUN GGSCI (nerv02.localdomain) 1> EDIT PARAMS rep3 REPLICAT rep3 ASSUMETARGETDEFS USERID OGG@NOVO, PASSWORD Nerv2018 map SOE.*, target SOE.*; GGSCI (nerv02.localdomain) 1> INFO ALL 49
Lab 7.10: Configuração Carga Incremental Na máquina nerv01, configure o processo EXTRACT de Carga Incremental. GGSCI (nerv01.localdomain) 1> ADD EXTRACT ext4, TRANLOG, BEGIN NOW GGSCI (nerv01.localdomain) 1> ADD EXTTRAIL /u01/app/oracle/ogg-12c/dirdat/in, EXTRACT ext4 GGSCI (nerv01.localdomain) 1> EDIT PARAMS ext4 EXTRACT ext4 USERID OGG@LEGADO, PASSWORD Nerv2018 RMTHOST nerv02, MGRPORT 7810 RMTTRAIL /u01/app/oracle/ogg-12c/dirdat/in TRANLOGOPTIONS EXCLUDEUSER OGG DDL INCLUDE MAPPED OBJNAME SOE.*; TABLE SOE.*; GGSCI (nerv01.localdomain) 1> INFO ALL GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext3, DETAIL GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext4, DETAIL GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext3 GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext4 50
Lab 7.11: Configuração Carga Incremental Na máquina nerv02, configure o processo REPLICAT de Carga Incremental. GGSCI (nerv02.localdomain) 1> ADD REPLICAT rep4, EXTTRAIL /u01/app/oracle/ogg-12c/dirdat/in, CHECKPOINTTABLE OGG.CHECKPOINT GGSCI (nerv02.localdomain) 1> EDIT PARAMS rep4 REPLICAT rep4 HANDLECOLLISIONS ASSUMETARGETDEFS USERID OGG@NOVO, PASSWORD Nerv2018 DISCARDFILE /u01/app/oracle/ogg-12c/dircrd/rep4_discard.txt, append, MEGABYTES 10 DDL MAP SOE.*, TARGET SOE.*; GGSCI (nerv02.localdomain) 1> INFO ALL GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep3, DETAIL GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep4, DETAIL GGSCI (nerv02.localdomain) 1> STATS REPLICAT rep3 GGSCI (nerv02.localdomain) 1> STATS REPLICAT rep4 51
Lab 7.12: Executar Carga Inicial Na máquina nerv01, habilite o TRANDATA. GGSCI (nerv01.localdomain as OGG@LEGADO) 1> DBLOGIN USERID OGG@LEGADO, PASSWORD Nerv2018 GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.ORDERENTRY_METADATA ALLCOLS GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.PRODUCT_DESCRIPTIONS ALLCOLS GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.LOGON ALLCOLS GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.PRODUCT_INFORMATION ALLCOLS GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.INVENTORIES ALLCOLS GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.ORDERS ALLCOLS GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.ORDER_ITEMS ALLCOLS GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.WAREHOUSES ALLCOLS GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.CARD_DETAILS ALLCOLS GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.ADDRESSES ALLCOLS GGSCI (nerv01.localdomain as OGG@LEGADO) 1> ADD TRANDATA SOE.CUSTOMERS ALLCOLS 52
Lab 7.13: Executar Carga Inicial Na máquina nerv01, inicie o EXTRACT Incremental, e acompanhe o Log do Golden Gate. $ tail -f /u01/app/oracle/ogg-11g/ggserr.log GGSCI (nerv01.localdomain) 1> START EXTRACT ext4 GGSCI (nerv01.localdomain) 1> INFO ALL GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext4 GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext4, DETAIL GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext4 Na máquina nerv01, mantenha a aplicação funcionando. $ cd /home/oracle/swingbench/bin $./charbench -uc 10 -cs //nerv02:1522/legado -c../configs/soe_server_side_v2.xml -u SOE -p SOE -min 500 -max 1000 Na máquina nerv01, acompanhe o EXTRACT Incremental. GGSCI (nerv02.localdomain) 1> STATS EXTRACT ext4 53
Lab 7.14: Executar Carga Inicial Na máquina nerv01, inicie o EXTRACT Inicial, e acompanhe o Log do Golden Gate. $ tail -f /u01/app/oracle/ogg-11g/ggserr.log GGSCI (nerv01.localdomain) 1> START EXTRACT ext3 GGSCI (nerv01.localdomain) 1> INFO ALL GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext3 GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext3, DETAIL GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext3 Na máquina nerv02, acompanhe o progresso do REPLICAT Inicial. $ tail -f /u01/app/oracle/ogg-12c/ggserr.log GGSCI (nerv02.localdomain) 1> INFO ALL GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep3 GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep3, DETAIL GGSCI (nerv02.localdomain) 1> STATS REPLICAT rep3 Nas máquinas nerv01 e nerv02, acompanhe o processamento pelo top. Na máquina nerv02, verifique o tamanho das tabelas so SCHEMA. SQL> SELECT TO_CHAR(SUM(BYTES)) FROM DBA_SEGMENTS WHERE OWNER = 'SOE' AND SEGMENT_TYPE = 'TABLE'; Na máquina nerv01, verifique o tamanho das tabelas so SCHEMA. SQL> SELECT TO_CHAR(SUM(BYTES)) FROM DBA_SEGMENTS WHERE OWNER = 'SOE' AND SEGMENT_TYPE = 'TABLE'; 54
Lab 7.15: Exec. Carga Incremental Na máquina nerv01, após o término da da execução do REPLICAT Inicial, crie os INDEX. Confira o log ao término da execução. 55
Lab 7.16: Exec. Carga Incremental Na máquina nerv02, inicie o REPLICAT Incremental. $ tail -f /u01/app/oracle/ogg-12c/ggserr.log GGSCI (nerv02.localdomain) 1> START REPLICAT rep4 GGSCI (nerv02.localdomain) 1> INFO ALL GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep4 GGSCI (nerv02.localdomain) 1> INFO REPLICAT rep4, DETAIL GGSCI (nerv02.localdomain) 1> STATS REPLICAT rep4 Na máquina nerv01, acompanhe o progresso do EXTRACT Incremental. $ tail -f /u01/app/oracle/ogg-11g/ggserr.log GGSCI (nerv01.localdomain) 1> INFO ALL GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext4 GGSCI (nerv01.localdomain) 1> INFO EXTRACT ext4, DETAIL GGSCI (nerv01.localdomain) 1> STATS EXTRACT ext4 56
Lab 7.17: Finalizar Replicação Na máquina nerv01, pare a aplicação. Na máquina nerv01, pare o EXTRACT Incremental. $ tail -f /u01/app/oracle/ogg-11g/ggserr.log GGSCI (nerv01.localdomain) 1> INFO ALL GGSCI (nerv01.localdomain) 1> STOP EXTRACT ext4 GGSCI (nerv01.localdomain) 1> INFO ALL Na máquina nerv02, espere a replicação finalizar, e pare o REPLICAT Incremental. $ tail -f /u01/app/oracle/ogg-12c/ggserr.log GGSCI (nerv02.localdomain) 1> INFO ALL GGSCI (nerv02.localdomain) 1> STATS REPLICAT rep4 GGSCI (nerv02.localdomain) 1> SEND REPLICAT rep4 GETLAG GGSCI (nerv02.localdomain) 1> STOP REPLICAT rep4 GGSCI (nerv02.localdomain) 1> INFO ALL 57
Lab 7.18: Finalizar Replicação Na máquina nerv01, migre as CONSTRAINTs da máquina nerv02. Confira o log ao término da execução. 58
Lab 7.19: Finalizar Replicação Na máquina nerv02, recompile as PACKAGES da aplicação. $ rlwrap sqlplus / AS SYSDBA SQL> ALTER SESSION SET CONTAINER = NOVO; SQL> GRANT EXECUTE ON DBMS_LOCK TO SOE; SQL> ALTER PACKAGE SOE.ORDERENTRY COMPILE; SQL> ALTER PACKAGE SOE.ORDERENTRY COMPILE BODY; Na máquina nerv02, teste a execução da aplicação. $ cd /home/oracle/swingbench/bin $./charbench -uc 10 -cs //nerv02:1523/novo -c../configs/soe_server_side_v2.xml -u SOE -p SOE -min 500 -max 1000 59
Perguntas? Ricardo Portilho Proni ricardo@nervinformatica.com.br 60