RAC_Leroy

Page 1

1.Cópia da Produção para Desenvolvimento do RAC Leroy , com rman 1. Cópia da Produção para Desenvolvimento do RAC Leroy , com rman 1 1.1 Setup Discos e TSM 2 1.1.1 Máquinas 2 1.1.2 Configuração tdpo ( máquina destino ) 2 1.1.3 Discos para usuário Oracle 3 1.1.4 ASM atribuindo discos 4 1.1.5 Checar espaços 4 1.2 Setup Oracle 5 1.2.1 Init.ora 5 1.2.2 Tnsnames 6 1.3 Cópia 7 1.3.1 Script de Duplicate 7 1.3.2 Start Duplicate 7 1.3.3 Archives após falha do Duplicate – Identificação da Necessidade 11 1.3.4 Archives após falha do Duplicate – Obtendo da Produção 13 1.3.5 Aplicação de archives após falha do Duplicate 14 1.4 Entradas de tnsnames para a nova instância 16 1.4.1 Instâncias de cada maquina 16 1.4.2 Load balancing 16 1.4.3 Para o parâmetro remote_listener 16 1.5 Habilitando a instância no segundo nó do RAC 18 1.5.1 Adicionar redologs para a thread 2. 18


1.5.2 Habilitar a thread 2 . 18 1.5.3 Shutdown no Banco 18 1.5.4 Alterar o parâmetro de cluster 18 1.5.5 Subir em mount e retirar de modo archive 18 1.5.6 Copiar o init.ora para a segunda máquina 18 1.5.7 Considerações 19

1.1Setup Discos e TSM 1.1.1Máquinas Produção - Origem HODB004Ler HODB005Ler Desenvolvimento - Destino HODB002Ler HODB003Ler 1.1.2Configuração tdpo ( máquina destino ) cat /usr/tivoli/tsm/client/oracle/bin64/tdpo_rest.opt *************************************************************************** * IBM Tivoli Storage Manager for Databases * Data Protection for Oracle * * Sample tdpo.opt for the AIX Data Protection for Oracle 64bit ********************************************************************* DSMI_ORC_CONFIG /usr/tivoli/tsm/client/api/bin64/dsm_tdp.opt DSMI_LOG /usr/tivoli/tsm/client/oracle/bin64/


*TDPO_FS orc9_db TDPO_NODE hodb004ler_tdp *TDPO_OWNER <username> *TDPO_PSWDPATH /usr/tivoli/tsm/client/oracle/bin64 *TDPO_DATE_FMT 1 *TDPO_NUM_FMT 1 *TDPO_TIME_FMT 1 *TDPO_MGMT_CLASS_2 mgmtclass2 *TDPO_MGMT_CLASS_3 mgmtclass3 *TDPO_MGMT_CLASS_4 mgmtclass4 No /usr/tivoli/tsm/client/oracle/bin64 foi copiado o arquivo de autenticação a partir da máquina hodb004ler. TDPO.hodb004ler_tdp Como os backups são disparados tanto para 004 como 005 pode ser necessário trocar acima pelo tdpo_node da 005, verificar pela log na máquina de rman de qual node foi disparado 1 ou 2. 1.1.3Discos para usuário Oracle Se for necessário alocar discos ,como foi o caso, o pessoal de SO, pode passar quais os hdisks foram adicionados. Caso não sejam passados os hdisks e sim os números como abaixo : 42916259 , 42D16259, 52C16259 Com o comando : pcmpath query essmap Exemplo : hdisk22 path0 1Z-08-02[FC] fscsi0 42916529 IBM 2105-F20 14.3GB 20 41 1401 03 Y R1-B2-H1-ZA 20 RAID5 hdisk22 path1 1n-08-02[FC] fscsi1 42916529 IBM 2105-F20 14.3GB 20 41 1401 03 Y R1-B2-H2-ZA 24 RAID5


Tirar Lock e atribuição : chdev -l hdisk22 -a reserve_policy=no_reserve chdev -l hdisk22 -a reserve_lock=no chdev -l hdisk22 -a pv=clear Colocando a nomenclatura para o ASM : Veja qual o último número do ASM ls –l /dev/asm_disk* No nosso caso o número mais alto era o asm_disk13_s1 Veja qual o major e minor de cada hdisk : root@hodb002ler:/dev # ls -ltr hdisk22 brw------- 1 root system 25, 21 Nov 23 11:00 hdisk22 Neste caso são os valores (25 e 21 ) Faça o mknod , para o próximo número de ASM mknod /dev/asm_disk14_s1 c 25 21 Atribua ao usuário Oracle : chown oracle:oinstall /dev/asm_disk14_s1 Dê permissão : chmod 660 /dev/asm_disk14_s1 ESTE procedimento do mknod , chown, e chmod deve ser feito nos dois nós 002 e 003, com atenção porque o major e minor são diferentes nas duas máquinas. 1.1.4ASM atribuindo discos Verificar na v$asm_disk se os discos novos aparecem para as duas máquinas. Alocar o espaço a um diskgroup existente ou criar um diskgroup específico : Nosso caso : create diskgroup LRGDATA external redundancy disk '/dev/asm_disk14_s1'; E ir adicionando :


alter diskgroup LRGDATA add disk '/dev/asm_disk15_s1'; 1.1.5Checar espaços Na Produção : Select sum(bytes/1024/1024) from dba_data_files; Na Instância do ASM de desenvolvimento verificar se o Diskgroup é capaz de suportar o volume de dados : SQL> select name, TOTAL_MB,FREE_MB from v$asm_diskgroup; NAME TOTAL_MB FREE_MB ------------------------------ ---------- ---------DATA 290867 25238 RECO 14305 12857 LRGDATA 128745 11813 Se necessário neste ponto devem ser adicionados mais discos.

1.2Setup Oracle 1.2.1Init.ora Copiar o init.ora da produção e ajustar o nome da nova instância de DB_NAME, bem como os caminhos para os diretórios de dump. Este passo pode ser feito inicialmente somente na máquina do restore, máquina 002. Neste ponto pode setar o parâmetro para FALSE -> *.cluster_database='FALSE' Este parâmetro determinará onde será criada a cópia : *.db_create_file_dest='+LRGDATA' Caso seja optado por mais de um diskgroup de destinho, utilizar o parametro db_file_name_convert Exemplo : [oracle@hodb002ler:/oracle/db10g/dbs]cat initimp21.ora imp21.__db_cache_size=188743680


imp21.__java_pool_size=4194304 imp21.__large_pool_size=4194304 imp21.__shared_pool_size=88080384 imp21.__streams_pool_size=0 imp22.__db_cache_size=188743680 imp22.__java_pool_size=4194304 imp22.__large_pool_size=4194304 imp22.__shared_pool_size=88080384 imp22.__streams_pool_size=0 *.audit_file_dest='/oracle/admin/imp2/adump' *.background_dump_dest='/oracle/admin/imp2/bdump' *.cluster_database_instances=2 *.cluster_database='TRUE' *.compatible='10.2.0.2.0' *.control_files='+RECO/imp2/control01.ctl','+RECO/imp2/control02.ctl','+RECO/imp2/control03.ctl' *.core_dump_dest='/oracle/admin/imp2/cdump' *.db_block_size=8192 *.db_create_file_dest='+LRGDATA' *.db_domain='' *.db_file_multiblock_read_count=16 *.db_name='imp2' *.dispatchers='(PROTOCOL=TCP) (SERVICE=imp2XDB)' imp22.instance_number=2 imp21.instance_number=1


*.job_queue_processes=10 *.open_cursors=300 *.pga_aggregate_target=96468992 *.processes=150 *.remote_listener='LISTENERS_IMP2' *.remote_login_passwordfile='exclusive' *.sga_target=290455552 imp22.thread=2 *.undo_management='AUTO' imp22.undo_tablespace='UNDOTBS2' imp21.undo_tablespace='UNDOTBS1' *.user_dump_dest='/oracle/admin/imp2/udump' 1.2.2Tnsnames Incluir as entradas para o RMAN de produção, bem como instância de produção no tnsnames de Desenvolvimento : # Adicionado para o restore rman = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.124.107.237)(PORT = 1522)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = rman) )


) LRGCP2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.124.85.205)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = lrgcp) (INSTANCE_NAME = lrgcp2) ) ) Testar conexão pelo RMAN : rman RMAN> connect target sys/*****@lrgcp1 connected to target database: LRGCP (DBID=3031888366) RMAN> connect catalog rman/*****@rman connected to recovery catalog database

1.3Cópia 1.3.1Script de Duplicate Ajustar a hora de until time para após o término do último backup isto evita a aplicação de muitos archives. cat restore.cmd connect catalog rman/SENHA@rman connect target sys/SENHA@lrgcp1 connect auxiliary / run { allocate auxiliary channel t1 type 'sbt_tape' parms 'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo_rest.opt)';


set until time "to_date('28 11 2006 02:30:00','DD MM YYYY HH24:MI:SS')"; duplicate target database to "imp2" LOGFILE GROUP 1 ( '+RECO' ) size 100M reuse, GROUP 2 ( '+RECO' ) size 100M reuse, GROUP 3 ( '+RECO' ) size 100M reuse; release channel t1; } 1.3.2Start Duplicate Iniciar a base destinho em NOMOUNT export ORACLE_SID=imp21 sqlplus “/ as sysdba” startup nomount exit colocar para rodar o rman em nohup : nohup rman cmdfile restore.cmd log restore.log & Acompanhar a log : 18> } 19> connected to recovery catalog database connected to target database: LRGCP (DBID=3031888366)


connected to auxiliary database: IMP2 (not mounted) allocated channel: t1 channel t1: sid=153 devtype=SBT_TAPE channel t1: Tivoli Data Protection for Oracle: version 5.2.0.0 executing command: SET until clause Starting Duplicate Db at 28-NOV-06 contents of Memory Script: { set until scn 8598706193; set newname for clone datafile 1 to new; set newname for clone datafile 2 to new; set newname for clone datafile 3 to new; set newname for clone datafile 4 to new; set newname for clone datafile 5 to new; set newname for clone datafile 6 to new; set newname for clone datafile 7 to new; set newname for clone datafile 8 to new; set newname for clone datafile 9 to new; ‌. set newname for clone datafile 59 to new; restore check readonly clone database ;


} executing Memory Script executing command: SET until clause executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME ‌. executing command: SET NEWNAME Starting restore at 28-NOV-06 channel t1: starting datafile backupset restore channel t1: specifying datafile(s) to restore from backup set restoring datafile 00004 to +LRGDATA restoring datafile 00007 to +LRGDATA restoring datafile 00008 to +LRGDATA restoring datafile 00009 to +LRGDATA restoring datafile 00011 to +LRGDATA ‌. restoring datafile 00054 to +LRGDATA restoring datafile 00057 to +LRGDATA restoring datafile 00059 to +LRGDATA channel t1: reading from backup piece n1i3fsnj_1_1 channel t1: restored backup piece 1 piece handle=n1i3fsnj_1_1 tag=TAG20061127T224043 channel t1: restore complete, elapsed time: 02:06:06


channel t1: starting datafile backupset restore channel t1: specifying datafile(s) to restore from backup set restoring datafile 00001 to +LRGDATA restoring datafile 00002 to +LRGDATA restoring datafile 00003 to +LRGDATA restoring datafile 00005 to +LRGDATA ‌. restoring datafile 00058 to +LRGDATA channel t1: reading from backup piece n2i3fsnm_1_1 channel t1: restored backup piece 1 piece handle=n2i3fsnm_1_1 tag=TAG20061127T224043 channel t1: restore complete, elapsed time: 01:36:55 Finished restore at 28-NOV-06 sql statement: CREATE CONTROLFILE REUSE SET DATABASE "IMP2" RESETLOGS ARCHIVELOG MAXLOGFILES 192 MAXLOGMEMBERS 3 MAXDATAFILES 1024 MAXINSTANCES 32 MAXLOGHISTORY 2920 LOGFILE GROUP 1 ( '+RECO/imp2/log01b.dbf' ) SIZE 100 M REUSE, GROUP 2 ( '+RECO/imp2/log02b.dbf' ) SIZE 100 M REUSE, GROUP 3 ( '+RECO/imp2/log03b.dbf' ) SIZE 100 M REUSE DATAFILE


'+LRGDATA/imp2/datafile/system.297.607719319' CHARACTER SET WE8ISO8859P1 contents of Memory Script: { switch clone datafile all; } executing Memory Script datafile 2 switched to datafile copy input datafile copy recid=1 stamp=607721786 filename=+LRGDATA/imp2/datafile/undotbs1.291.607715329 datafile 3 switched to datafile copy input datafile copy recid=2 stamp=607721786 filename=+LRGDATA/imp2/datafile/sysaux.293.607717861 datafile 4 switched to datafile copy input datafile copy recid=3 stamp=607721786 filename=+LRGDATA/imp2/datafile/undotbs2.263.607707843 ‌. input datafile copy recid=57 stamp=607721798 filename=+LRGDATA/imp2/datafile/data_geral.285.607715307 datafile 59 switched to datafile copy input datafile copy recid=58 stamp=607721799 filename=+LRGDATA/imp2/datafile/data_movimento_venda.261.607707827 contents of Memory Script: { set until time "to_date('28 11 2006 02:30:00','DD MM YYYY HH24:MI:SS')"; recover clone database


delete archivelog ; } executing Memory Script executing command: SET until clause Starting recover at 28-NOV-06 starting media recovery channel t1: starting archive log restore to default destination channel t1: restoring archive log archive log thread=1 sequence=20670 channel t1: restoring archive log archive log thread=1 sequence=20671 … Terminou com erro , porque o Backup de archive foi feito pelo outro nó ou porque não achou os archives : ... channel t1: reading from backup piece n6i3grdi_1_1 ORA-19870: error reading backup piece n6i3grdi_1_1 ORA-19501: read error on file "n6i3grdi_1_1", blockno 1 (blocksize=512) ORA-27190: skgfrd: sbtread2 returned error ORA-19511: Error received from media manager layer, error text: ANS1314E (RC14) File data currently unavailable on server Oracle Error: ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below ORA-01194: file 1 needs more recovery to be consistent


ORA-01110: data file 1: '+LRGDATA/imp2/datafile/system.297.607719319' released channel: t1 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of Duplicate Db command at 11/28/2006 19:47:35 RMAN-03015: error occurred in stored script Memory Script RMAN-20506: no backup of archivelog found RMAN-06053: unable to perform media recovery because of missing log RMAN-06025: no backup of log thread 1 seq 20669 lowscn 8597982340 found to restore RMAN-06025: no backup of log thread 1 seq 20668 lowscn 8597970904 found to restore RMAN-06025: no backup of log thread 1 seq 20667 lowscn 8597960266 found to restore RMAN-06025: no backup of log thread 1 seq 20666 lowscn 8597937845 found to restore RMAN-06025: no backup of log thread 1 seq 20665 lowscn 8597926494 found to restore 1.3.3Archives após falha do Duplicate – Identificação da Necessidade Verificar a seqüência pedida : Sqlplus “/ as sysdba” SQL> recover database until cancel using backup controlfile ; ORA-00279: change 8598055136 generated at 11/28/2006 02:12:03 needed for thread 1 ORA-00289: suggestion : /oracle/db10g/dbs/arch1_20677_589819502.dbf ORA-00280: change 8598055136 for thread 1 is in sequence #20677 21:42:35 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} Copiar os arquivos a partir da produção para aplicação : Para facilitar usar a seguinte query na produção :


set lines 200 set pages 100 col FIRST_CHANGE# for 9999999999999999 col NAME for a65 select THREAD#, SEQUENCE#, FIRST_CHANGE#, to_char(FIRST_TIME,'DD/MM/YYYY HH24:MI:SS'), NAME from gv$archived_log where FIRST_TIME >= to_date('11/27/2006 22:30','MM/DD/YYYY HH24:MI:SS') and FIRST_TIME < to_date('11/28/2006 03:01','MM/DD/YYYY HH24:MI:SS') ; Com isto você identifica os logsequence e a thread , para baixa-los e aplicar. 1.3.4Archives após falha do Duplicate – Obtendo da Produção Na produção pode-se obter de duas, formas, baixando da fita, ou se tiver no ASM ainda, copiando do ASM para o Filesystem : Obtendo de um cópia da fita , conectar na instância de produção, e catálogo de RMAN, na máquina onde foi feito o backup de archive , colocar uma destination onde se tenha espaço : No caso abaixo substitua 60 e 65 pelas seqüências obtidas no passo anterior. run { set archivelog destination to '/tmp'; restore archivelog from logseq=60 until logseq=65; } Pode terminar com o seguinte erro : restore not done; all files readonly, offline, or already restored Neste caso faça a cópia do ASM para o Filesystem , dentro do RMAN : copy archivelog '+RECO_GEMCO/lrgcp/archivelog_2/lrgcp_1_20691_589819502.dbf' to '/oracle/archives/lrgcp_1_20691_589819502.dbf';


copy archivelog '+RECO_GEMCO/lrgcp/archivelog_2/lrgcp_1_20662_589819502.dbf' to '/oracle/archives/lrgcp_1_20662_589819502.dbf'; copy archivelog '+RECO_GEMCO/lrgcp/archivelog_1/lrgcp_1_20663_589819502.dbf' to '/oracle/archives/lrgcp_1_20663_589819502.dbf'; copy archivelog '+RECO_GEMCO/lrgcp/archivelog_2/lrgcp_1_20664_589819502.dbf' to '/oracle/archives/lrgcp_1_20664_589819502.dbf'; copy archivelog '+RECO_GEMCO/lrgcp/archivelog_1/lrgcp_2_9423_589819502.dbf' to '/oracle/archives/lrgcp_2_9423_589819502.dbf'; copy archivelog '+RECO_GEMCO/lrgcp/archivelog_2/lrgcp_1_20665_589819502.dbf' to '/oracle/archives/lrgcp_1_20665_589819502.dbf'; Faça scp dos archives para a máquina de desenvolvimento . Faça a limpeza das cópias para Filesystem do catálogo do rman e do FS ( rm ) : Query para identificar os arquivos , script para automação , colocando o caminho do FS. set lines 200 set pages 100 col FIRST_CHANGE# for 9999999999999999 col NAME for a65 select 'change archivelog '''||NAME||''' uncatalog;' from gv$archived_log where FIRST_TIME >= to_date('11/27/2006 22:30','MM/DD/YYYY HH24:MI:SS') and FIRST_TIME < to_date('11/28/2006 03:01','MM/DD/YYYY HH24:MI:SS') and name like '/oracle/%'; Rodar o resultado no RMAN: change archivelog ‘/oracle/archives/lrgcp_1_20665_589819502.dbf’ uncatalog; change archivelog ‘/oracle/archives/lrgcp_1_20667_589819502.dbf’ uncatalog; ....


1.3.5Aplicação de archives após falha do Duplicate Na produção pode-se obter de duas, formas, baixando da fita, ou se tiver no ASM ainda, copiando do ASM para o Filesystem : Apontar para o local e nome dos arquivos copiados da produção . SQL> recover database until cancel using backup controlfile ; ORA-00279: change 8598055136 generated at 11/28/2006 02:12:03 needed for thread 1 ORA-00289: suggestion : /oracle/db10g/dbs/arch1_20677_589819502.dbf ORA-00280: change 8598055136 for thread 1 is in sequence #20677 21:42:35 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /oracle/archives/lrgcp_1_20677_589819502.dbf Atenção para a thread solicitada, neste caso temos duas threads, e o Oracle vai solicitando de uma e de outra, conforme foi gerado na produção. Neste exemplo acima é da thread 1. 21:42:46 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /oracle/lrgcp_1_20678_589819502.dbf ORA-00279: change 8598063071 generated at 11/28/2006 02:12:18 needed for thread 2 ORA-00289: suggestion : /oracle/db10g/dbs/arch2_9428_589819502.dbf ORA-00280: change 8598063071 for thread 2 is in sequence #9428 ORA-00278: log file '/oracle/lrgcp_2_9427_589819502.dbf' no longer needed for this recovery 21:42:54 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} cancel Media recovery cancelled. Acompanhar o horário, se já está após o término do backup antes de fazer o open resetlogs. 21:50:37 DB_IMP21>alter database open resetlogs; Database altered.


1.4Entradas de tnsnames para a nova inst창ncia 1.4.1Inst창ncias de cada maquina IMP22 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hodb003ler_vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = imp2) (INSTANCE_NAME = imp22) ) ) IMP21 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hodb002ler_vip)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = imp2) (INSTANCE_NAME = imp21) ) ) 1.4.2Load balancing IMP2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = hodb002ler_vip)(PORT = 1521))


(ADDRESS = (PROTOCOL = TCP)(HOST = hodb003ler_vip)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = imp2) ) ) 1.4.3Para o par창metro remote_listener LISTENERS_IMP2 = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = hodb002ler_vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = hodb003ler_vip)(PORT = 1521)) )

1.5Habilitando a inst창ncia no segundo n처 do RAC 1.5.1Adicionar redologs para a thread 2. alter database add logfile thread 2 group 3 '+LRGDATA','+RECO'; alter database add logfile thread 2 group 4 '+LRGDATA','+RECO'; alter database add logfile thread 2 group 5 '+LRGDATA','+RECO'; 1.5.2Habilitar a thread 2 . SQL> ALTER DATABASE ENABLE PUBLIC THREAD 2; 1.5.3Shutdown no Banco Shutdown immediate 1.5.4Alterar o par창metro de cluster *.cluster_database=TRUE


1.5.5Subir em mount e retirar de modo archive Startup mount Alter database noarchivelog; 1.5.6Copiar o init.ora para a segunda máquina Verificar se existem os caminhos de dump iguais, alterar o init para instância 2 imp21 para imp22. Checar os parâmetros da SGA, se serão iguais ou diferentes e ajustar. Subir a instância 2. 1.5.7Considerações Checar a tablespace de UNDO antes de subir verificando que o nome é o mesmo que está no DB. No caso foi colocado para spfile ao invés de pfile, porém ainda está em Filesystem, e pode ser copiado também para o ASM.


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.