vvsantos of Scripts Oracle Adm
2/17/2017 - 4:08 PM

Procedimento Dataguard

Procedimento Dataguard

/* Parametros dataguard*/

alter database archivelog;

alter database force logging;

alter database flashback on;

ALTER SYSTEM SET LOG_ARCHIVE_DEST_1 = 'LOCATION=USE_DB_RECOVERY_FILE_DEST';

alter system set standby_file_management='AUTO';

ALTER SYSTEM SET log_archive_dest_2 ='service=BANCO02 async valid_for=(online_logfile,primary_role) db_unique_name=BANCO02';

alter system set LOG_ARCHIVE_CONFIG='DG_CONFIG=(BANCO01,BANCO02,CADREL)'; 

ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M;
ALTER DATABASE ADD STANDBY LOGFILE SIZE 50M;


/* BANCO STANDBY */

set ORACLE_SID=BANCO02

startup  nomount pfile ='C:\oracle\product\12.1.0\dbhome_1\database\pfile.ora';

/* Duplicate */

rman
connect target sys/oracle@BANCO01
connect auxiliary sys/oracle@BANCO02
run {
SET NEWNAME FOR TABLESPACE users TO NEW;
SET NEWNAME FOR DATAFILE 3 TO NEW;
SET NEWNAME FOR TEMPFILE 1 TO 'E:\oradata\BANCO02\DATAFILE\temp01';
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database
spfile
parameter_value_convert 'BANCO01','BANCO02'
set db_unique_name='BANCO02'
set control_files='E:\oradata\BANCO02\CONTROLFILE\control01.ctl', 'F:\fast_recovery_area\BANCO02\CONTROLFILE\control02.ctl'
set log_archive_max_processes='5'
set fal_client='BANCO02'
set fal_server='BANCO01'
set standby_file_management='AUTO'
set log_archive_config='dg_config=(BANCO01,BANCO02)'
set log_archive_dest_2='service=BANCO01 ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=BANCO01'
set db_create_file_dest='E:\oradata'
NOFILENAMECHECK;
}

ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;


alter system set DG_BROKER_START = true; 

ALTER SYSTEM SET log_archive_dest_2 ='';

CREATE CONFIGURATION 'DATAGUARD' AS PRIMARY DATABASE IS BANCO01 CONNECT IDENTIFIER IS BANCO01;

ADD DATABASE BANCO02 AS CONNECT IDENTIFIER IS BANCO02;


edit database banco01 set property StandbyArchiveLocation = 'USE_DB_RECOVERY_FILE_DEST';
edit database banco02 set property StandbyArchiveLocation = 'USE_DB_RECOVERY_FILE_DEST';

EDIT DATABASE BANCO01 SET PROPERTY FastStartFailoverTarget=BANCO02;
EDIT DATABASE BANCO02 SET PROPERTY FastStartFailoverTarget=BANCO01;
EDIT CONFIGURATION SET PROPERTY FastStartFailoverAutoReinstate = TRUE;
EDIT CONFIGURATION SET PROPERTY FastStartFailoverPmyShutdown = TRUE;
/* 
BANCO PRIMARIO */

begin
 dbms_service.create_service('CADDG','CADDG');
end;
/
begin
 DBMS_SERVICE.START_SERVICE('CADDG');
end;
/
   
create trigger CADDGTRIGR after startup on database
declare
 v_role varchar(30);
begin
 select database_role into v_role from v$database;
 if v_role = 'PRIMARY' then
 DBMS_SERVICE.START_SERVICE('CADDG');
 else
 DBMS_SERVICE.STOP_SERVICE('CADDG');
 end if;
end;
/

begin
 dbms_service.modify_service
 ('CADDG',
 FAILOVER_METHOD => 'BASIC',
 FAILOVER_TYPE => 'SELECT',
 FAILOVER_RETRIES => 200,
 FAILOVER_DELAY => 1);
end;
/

/* String Conexão transparent */

CADDG=
  (DESCRIPTION =
    (CONNECT TIMEOUT = 15)
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = CADDG1)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = CADDG2)(PORT = 1521))
    )
    (CONNECT_DATA =
      ( SERVICE_NAME= CADDG)
    )
  )
  
 
 /* Convert to logical*/
 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
  
/* Primario */

EXECUTE DBMS_LOGSTDBY.BUILD;  
  
ALTER SYSTEM SET undo_retention=3600;
  
/* Convert to logical*/

ALTER DATABASE RECOVER TO LOGICAL STANDBY BANCOREL;

SHUTDOWN IMMEDIATE;

STARTUP MOUNT;

ALTER DATABASE OPEN RESETLOGS;

ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

/* INICIAR A PORRA DO FLASHBACK, SENÃO DÁ MERDA */

ALTER DATABASE FLASHBACK ON;