Cette publication montre comment se servir d'un Flashback afin de faire un downgrade de base de données.
Afin d'alléger le texte, je vais laisser quelques indications de façon générale.
##############################################################
### ###
### DOWNGRADE DE LA BASE DE DONNÉES EN DATAGUARD ###
### ###
### ###
### DOWNGRADE DE LA BASE DE DONNÉES EN DATAGUARD ###
### ###
###********************************************************###
##############################################################
### Base de données Primaire : test_p ###
### Base de données Standby : test_s ###
### Home source : 11.2.0.4 ###
### Home destination : 11.2.0.1 ###
##############################################################
### Configuration du Broker : ###
### ###
### DGMGRL> show configuration ; ###
### ###
### DGMGRL> show configuration ; ###
### Configuration - evta ###
### Databases: ###
### test_p - Primary database ###
### test_s - Physical standby database ###
### ###
### Fast-Start Failover: DISABLED ###
### ###
### Configuration Status: ###
### SUCCESS ###
### ###
##############################################################
*****************************************************************
*****************************************************************
**** Flashback Database - DataGuard
*****************************************************************
*****************************************************************
Primaire :
=======
DGMGRL> show configuration ;
Configuration - evta
Protection Mode: MaxPerformance
Databases:
test_p - Primary database
test_s - Physical standby database (disabled)
Fast-Start Failover: DISABLED
Configuration Status:
SUCCESS
DGMGRL> enable database "test_s" ;
ALTER SYSTEM SWITCH LOGFILE ;
ALTER SYSTEM SWITCH LOGFILE ;
ALTER SYSTEM SWITCH LOGFILE ;
ALTER SYSTEM SWITCH LOGFILE ;
ARCHIVE LOG LIST ;
Standby :
======
ARCHIVE LOG LIST ;
--S''assurer que la synch est Ok
SELECT 'LAST APPLIED : ' LOGS, TO_CHAR(NEXT_TIME,'DD-MON-YYYY HH24:MI:SS') TIME, SEQUENCE#
FROM V$DATABASE_INCARNATION A, V$ARCHIVED_LOG C
WHERE SEQUENCE# = ( SELECT MAX(SEQUENCE#) FROM V$DATABASE_INCARNATION A, V$ARCHIVED_LOG B
WHERE A.RESETLOGS_CHANGE# = B.RESETLOGS_CHANGE# AND A.RESETLOGS_TIME = B.RESETLOGS_TIME AND
A.STATUS = 'CURRENT' AND B.APPLIED = 'YES') AND
A.RESETLOGS_CHANGE# = C.RESETLOGS_CHANGE# AND A.RESETLOGS_TIME = C.RESETLOGS_TIME AND
A.STATUS = 'CURRENT'
UNION
SELECT 'LAST RECEIVED : ' LOGS, TO_CHAR(NEXT_TIME,'DD-MON-YYYY HH24:MI:SS') TIME, SEQUENCE#
FROM V$DATABASE_INCARNATION A, V$ARCHIVED_LOG C
WHERE SEQUENCE# = ( SELECT MAX(SEQUENCE#) FROM V$DATABASE_INCARNATION A, V$ARCHIVED_LOG B
WHERE A.RESETLOGS_CHANGE# = B.RESETLOGS_CHANGE# AND A.RESETLOGS_TIME = B.RESETLOGS_TIME AND
A.STATUS = 'CURRENT' ) AND
A.RESETLOGS_CHANGE# = C.RESETLOGS_CHANGE# AND A.RESETLOGS_TIME = C.RESETLOGS_TIME AND
A.STATUS = 'CURRENT' ;
Primaire :
=======
SET LINESIZE 1000
COL NAME FORMAT A20
COL SCN FORMAT A15
COL TIME FORMAT A20
SELECT NAME, TO_CHAR(SCN) SCN, TO_CHAR(TIME,'DD/MM/YYYY HH24:MI') TIME, DATABASE_INCARNATION#,
GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE/1024/1024 MO
FROM V$RESTORE_POINT
WHERE GUARANTEE_FLASHBACK_DATABASE = 'YES' ;
NAME SCN TIME DATABASE_INCARNATION# GUA MO
-------------------- --------------- -------------------- --------------------- --- ----------
EVTA_PREUPG_PRIM 1643405 13/07/2015 23:55 3 YES 657.59375
Standby :
======
SET LINESIZE 1000
COL NAME FORMAT A20
COL SCN FORMAT A15
COL TIME FORMAT A20
SELECT NAME, TO_CHAR(SCN) SCN, TO_CHAR(TIME,'DD/MM/YYYY HH24:MI') TIME, DATABASE_INCARNATION#,
GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE/1024/1024 MO
FROM V$RESTORE_POINT
WHERE GUARANTEE_FLASHBACK_DATABASE = 'YES' ;
NAME SCN TIME DATABASE_INCARNATION# GUA MO
-------------------- --------------- -------------------- --------------------- --- ----------
EVTA_PREUPG_STBY 1642221 13/07/2015 23:42 6 YES 1307.59375
Primaire :
=======
Arrêter la bd
Arreter le listener
Repartir le listener avec la version précédente
Repartir la bd avec la version précédente
STARTUP MOUNT ;
FLASHBACK DATABASE TO RESTORE POINT EVTA_PREUPG_PRIM ;
ALTER DATABASE OPEN RESETLOGS;
SET LINESIZE 200
SET PAGESIZE 50
COL NAME FORMAT A40
COL VERSION FORMAT A20
COL COMPNAME FORMAT A30
SELECT SUBSTR(COMP_ID, 1,10) COMPID, SUBSTR(COMP_NAME,1,24) COMPNAME, STATUS,VERSION FROM DBA_REGISTRY;
COMPID COMPNAME STATUS VERSION
--------------- ------------------------------ ------------ --------------------
OWB OWB VALID 11.2.0.1.0
APEX Oracle Application Expre VALID 3.2.1.00.10
EM Oracle Enterprise Manage VALID 11.2.0.1.0
AMD OLAP Catalog VALID 11.2.0.1.0
SDO Spatial VALID 11.2.0.1.0
ORDIM Oracle Multimedia VALID 11.2.0.1.0
XDB Oracle XML Database VALID 11.2.0.1.0
CONTEXT Oracle Text VALID 11.2.0.1.0
EXF Oracle Expression Filter VALID 11.2.0.1.0
RUL Oracle Rules Manager VALID 11.2.0.1.0
OWM Oracle Workspace Manager VALID 11.2.0.1.0
CATALOG Oracle Database Catalog VALID 11.2.0.1.0
CATPROC Oracle Database Packages VALID 11.2.0.1.0
JAVAVM JServer JAVA Virtual Mac VALID 11.2.0.1.0
XML Oracle XDK VALID 11.2.0.1.0
CATJAVA Oracle Database Java Pac VALID 11.2.0.1.0
APS OLAP Analytic Workspace VALID 11.2.0.1.0
XOQ Oracle OLAP API VALID 11.2.0.1.0
dgmgrl DGMGRL> connect sys@test_p Password: Connected. DGMGRL> show configuration ; Configuration - evta Protection Mode: MaxPerformance Databases: test_p - Primary database test_s - Physical standby database Error: ORA-16810: multiple errors or warnings detected for the database Fast-Start Failover: DISABLED Configuration Status: ERROR OU DGMGRL> show configuration ; Error: ORA-16525: the Data Guard broker is not yet available Configuration details cannot be determined by DGMGRL
SHOW PARAMETER LOG_ARCHIVE_DEST_STATE_2 ;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2 string RESET
SHOW PARAMETER BROKER
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /DISK2/oracle/product/11.2.0/db_1/dbs/dr1TEST_P.dat
dg_broker_config_file2 string /DISK2/oracle/product/11.2.0/db_1/dbs/dr2TEST_P.dat
dg_broker_start boolean FALSE
Standby :
======
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
--Possible erreur
--*
--ERROR at line 1:
--ORA-16136: Managed Standby Recovery not active
FLASHBACK DATABASE TO RESTORE POINT EVTA_PREUPG_STBY;
Arrêter la bd
Arreter le listener
Repartir le listener avec la version précédente
Repartir la bd avec la version précédente
STARTUP MOUNT ;
Primaire :
=======
SHOW PARAMETER DG_BROKER_START
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /DISK2/oracle/product/11.2.0/db_1/dbs/dr1TEST_P.dat
dg_broker_config_file2 string /DISK2/oracle/product/11.2.0/db_1/dbs/dr2TEST_P.dat
dg_broker_start boolean FALSE
SHOW PARAMETER LOG_ARCHIVE_DEST_STATE_2
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest_state_2 string RESET
Standby :
======
SHOW PARAMETER DG_BROKER_START
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1 string /DISK2/oracle/product/11.2.0/db_1/dbs/dr1TEST_P.dat
dg_broker_config_file2 string /DISK2/oracle/product/11.2.0/db_1/dbs/dr2TEST_P.dat
dg_broker_start boolean FALSE
Primaire :
=======
ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH ;
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE SCOPE=BOTH ;
Standby :
======
ALTER SYSTEM SET DG_BROKER_START=TRUE SCOPE=BOTH ;
Primaire :
=======
dgmgrl
DGMGRL> connect sys@test_p
Password:
Connected.
DGMGRL> show configuration ;
Configuration - evta
Protection Mode: MaxPerformance
Databases:
test_p - Primary database
test_s - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
DGMGRL> show database "test_p"
Database - test_p
Role: PRIMARY
Intended State: TRANSPORT-OFF
Instance(s):
TEST
Database Status:
DISABLED
DGMGRL> show database "test_s"
Database - test_s
Role: PHYSICAL STANDBY
Intended State: APPLY-OFF
Transport Lag: (unknown)
Apply Lag: (unknown)
Real Time Query: OFF
Instance(s):
TEST
Database Status:
DISABLED
DGMGRL> ENABLE CONFIGURATION ;
DGMGRL> EDIT DATABASE "test_s" SET STATE='APPLY-ON';
DGMGRL> EDIT DATABASE "test_p" SET STATE='TRANSPORT-ON';
ALTER SYSTEM SWITCH LOGFILE ;
ALTER SYSTEM SWITCH LOGFILE ;
ALTER SYSTEM SWITCH LOGFILE ;
ARCHIVE LOG LIST ;
Standby :
======
ARCHIVE LOG LIST ;
--S'assurer que la synch est Ok
SELECT 'LAST APPLIED : ' LOGS, TO_CHAR(NEXT_TIME,'DD-MON-YYYY HH24:MI:SS') TIME, SEQUENCE#
FROM V$DATABASE_INCARNATION A, V$ARCHIVED_LOG C
WHERE SEQUENCE# = ( SELECT MAX(SEQUENCE#) FROM V$DATABASE_INCARNATION A, V$ARCHIVED_LOG B
WHERE A.RESETLOGS_CHANGE# = B.RESETLOGS_CHANGE# AND A.RESETLOGS_TIME = B.RESETLOGS_TIME AND
A.STATUS = 'CURRENT' AND B.APPLIED = 'YES') AND
A.RESETLOGS_CHANGE# = C.RESETLOGS_CHANGE# AND A.RESETLOGS_TIME = C.RESETLOGS_TIME AND
A.STATUS = 'CURRENT'
UNION
SELECT 'LAST RECEIVED : ' LOGS, TO_CHAR(NEXT_TIME,'DD-MON-YYYY HH24:MI:SS') TIME, SEQUENCE#
FROM V$DATABASE_INCARNATION A, V$ARCHIVED_LOG C
WHERE SEQUENCE# = ( SELECT MAX(SEQUENCE#) FROM V$DATABASE_INCARNATION A, V$ARCHIVED_LOG B
WHERE A.RESETLOGS_CHANGE# = B.RESETLOGS_CHANGE# AND A.RESETLOGS_TIME = B.RESETLOGS_TIME AND
A.STATUS = 'CURRENT' ) AND
A.RESETLOGS_CHANGE# = C.RESETLOGS_CHANGE# AND A.RESETLOGS_TIME = C.RESETLOGS_TIME AND
A.STATUS = 'CURRENT' ;
LOGS TIME SEQUENCE#
---------------- ----------------------------- ----------
LAST APPLIED : 15-JUL-2015 20:20:34 4
LAST RECEIVED : 15-JUL-2015 20:20:34 5
Primaire :
=======
dgmgrl
DGMGRL> connect sys@test_p
Password:
Connected.
DGMGRL> show configuration ;
Configuration - evta
Protection Mode: MaxPerformance
Databases:
test_p - Primary database
test_s - Physical standby database
Fast-Start Failover: DISABLED
Configuration Status:
DISABLED
DGMGRL> show database "test_p"
Database - test_p
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
TEST
Database Status:
SUCCESS
DGMGRL> show database "test_s"
Database - test_s
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds
Apply Lag: 0 seconds
Real Time Query: OFF
Instance(s):
TEST
Database Status:
SUCCESS
SET LINESIZE 1000
COL NAME FORMAT A20
COL SCN FORMAT A15
COL TIME FORMAT A20
SELECT NAME, TO_CHAR(SCN) SCN, TO_CHAR(TIME,'DD/MM/YYYY HH24:MI') TIME, DATABASE_INCARNATION#,
GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE/1024/1024 MO
FROM V$RESTORE_POINT
WHERE GUARANTEE_FLASHBACK_DATABASE = 'YES' ;
Standby :
======
SET LINESIZE 1000
COL NAME FORMAT A20
COL SCN FORMAT A15
COL TIME FORMAT A20
SELECT NAME, TO_CHAR(SCN) SCN, TO_CHAR(TIME,'DD/MM/YYYY HH24:MI') TIME, DATABASE_INCARNATION#,
GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE/1024/1024 MO
FROM V$RESTORE_POINT
WHERE GUARANTEE_FLASHBACK_DATABASE = 'YES' ;
Primaire :
=======
Tester le convert to snapshot et revenir à physical
DGMGRL> connect sys@test_p
Password:
Connected.
DGMGRL> CONVERT DATABASE TEST_S TO SNAPSHOT STANDBY ;
Standby :
=======
SELECT NAME, OPEN_MODE, DATABASE_ROLE FROM V$DATABASE ;
NAME OPEN_MODE DATABASE_ROLE
-------------------- -------------------- ----------------
TEST READ WRITE SNAPSHOT STANDBY
SET LINESIZE 200
SET PAGESIZE 50
COL NAME FORMAT A40
COL VERSION FORMAT A20
COL COMPNAME FORMAT A30
SELECT SUBSTR(COMP_ID, 1,10) COMPID, SUBSTR(COMP_NAME,1,24) COMPNAME, STATUS,VERSION FROM DBA_REGISTRY;
COMPID COMPNAME STATUS VERSION
------------ ------------------------------ ----------- --------------------
OWB OWB VALID 11.2.0.1.0
APEX Oracle Application Expre VALID 3.2.1.00.10
EM Oracle Enterprise Manage VALID 11.2.0.1.0
AMD OLAP Catalog VALID 11.2.0.1.0
SDO Spatial VALID 11.2.0.1.0
ORDIM Oracle Multimedia VALID 11.2.0.1.0
XDB Oracle XML Database VALID 11.2.0.1.0
CONTEXT Oracle Text VALID 11.2.0.1.0
EXF Oracle Expression Filter VALID 11.2.0.1.0
RUL Oracle Rules Manager VALID 11.2.0.1.0
OWM Oracle Workspace Manager VALID 11.2.0.1.0
CATALOG Oracle Database Catalog VALID 11.2.0.1.0
CATPROC Oracle Database Packages VALID 11.2.0.1.0
JAVAVM JServer JAVA Virtual Mac VALID 11.2.0.1.0
XML Oracle XDK VALID 11.2.0.1.0
CATJAVA Oracle Database Java Pac VALID 11.2.0.1.0
APS OLAP Analytic Workspace VALID 11.2.0.1.0
XOQ Oracle OLAP API VALID 11.2.0.1.0
connect sys@test_p
CONVERT DATABASE TEST_S TO PHYSICAL STANDBY ;
Standby :
=======
SELECT NAME, OPEN_MODE, DATABASE_ROLE FROM V$DATABASE ; NAME OPEN_MODE DATABASE_ROLE -------------------- -------------------- ---------------- TEST READ WRITE PHYSICAL STANDBY
=======
SET LINESIZE 1000
COL NAME FORMAT A20
COL SCN FORMAT A15
COL TIME FORMAT A20
SELECT NAME, TO_CHAR(SCN) SCN, TO_CHAR(TIME,'DD/MM/YYYY HH24:MI') TIME, DATABASE_INCARNATION#,
GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE/1024/1024 MO
FROM V$RESTORE_POINT
WHERE GUARANTEE_FLASHBACK_DATABASE = 'YES' ;
DROP RESTORE POINT EVTA_PREUPG_PRIM ;
Standby : (À la fin du test)
======
SET LINESIZE 1000
COL NAME FORMAT A20
COL SCN FORMAT A15
COL TIME FORMAT A20
SELECT NAME, TO_CHAR(SCN) SCN, TO_CHAR(TIME,'DD/MM/YYYY HH24:MI') TIME, DATABASE_INCARNATION#,
GUARANTEE_FLASHBACK_DATABASE, STORAGE_SIZE/1024/1024 MO
FROM V$RESTORE_POINT
WHERE GUARANTEE_FLASHBACK_DATABASE = 'YES' ;
DROP RESTORE POINT EVTA_PREUPG_STBY ;
Aucun commentaire:
Enregistrer un commentaire