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;