Vous savez que les modifications sur la base de données Primaire vont être reflétées sur la Standby lorsque de la synchronisation est activée, cependant qu'est-ce que se passe lorsque vous travaillez sur une base de données ouverte en mode Snapshot et qu'il vous reste des heures (voir des jours) de travail avant de terminer sans pouvoir réactiver le mode Physical et que vous avez besoin de modifier les datafiles ?
Je dois avouer que je n'avais pas testé ça avant, mais dans mon cas j'ai un processus qui roule sur ma base de données Standby depuis quelques jours sans arrêt, et un de mes datafiles approche de la limite, bien évidemment je ne voulais pas tout défaire pour recommencer une autre fois, je voulais donc, tester si en modifiant directement le datafile sur ma base de données en mode Snapshot je n'aurai pas de problèmes au moment de revenir sur le mode Physical.
Ce test a été réalisé sur une petite base de données 12c configurée en DataGuard, mais ma vraie base de données a quelques Tbytes.
Note:
Il faut noter que ces modifications on été apportées et testées toujours en "Snapshot Mode".
###############
### PRIMAIRE :
###############
Voici les datafiles sur ma base de données Primaire :
DATABASE :
==========
TABLESPACE_NAME FILE_ID FILE_NAME MAXDATAF_GB DATAF_GB USED_GB
--------------- ------- ---------------------------------------------------- ----------- ---------- ---------- SYSAUX 2 +DATINXRWMYBD/QMYBD/datafile/sysaux.257.819804995 32 2.59 2.4
SYSTEM 1 +DATINXRWMYBD/QMYBD/datafile/system.258.819804995 32 1.55 1.54
UNDOTBS1 3 +DATINXRWMYBD/QMYBD/datafile/undotbs1.256.819804995 32 .67 .57
USERS 4 +DATINXRWMYBD/QMYBD/datafile/users.260.819804995 32 0 0
###############
### STANDBY :
###############
Sur la Standby, je viens de couper la synchronisation et de passe ne mode Snapshot :
(1) EN MODE SNAPSHOT :
======================
ASM :
======
Type Redund Striped Time Sys Name
DATAFILE UNPROT COARSE JUL 09 10:00:00 Y SYSAUX.271.930583965
DATAFILE UNPROT COARSE JUL 09 10:00:00 Y SYSTEM.277.930584081
DATAFILE UNPROT COARSE JUL 09 10:00:00 Y UNDOTBS1.272.930584035
DATAFILE UNPROT COARSE JUL 09 10:00:00 Y USERS.270.930583831
DATABASE :
==========
DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE FLASHBACK_ON
------------------- ------------- ---------------- -------------
MDBAD READ WRITE SNAPSHOT STANDBY YES
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
standby_file_management string AUTO
TABLESPACE_NAME FILE_ID FILE_NAME MAXDATAF_GB DATAF_GB USED_GB
--------------- ------- ---------------------------------------------------- ----------- ---------- ----------
SYSAUX 2 +DATINXRWMYBD/MMYBD/DATAFILE/sysaux.271.930583965 32 2.59 2.39
SYSTEM 1 +DATINXRWMYBD/MMYBD/DATAFILE/system.277.930584081 32 1.55 1.54
UNDOTBS1 3 +DATINXRWMYBD/MMYBD/DATAFILE/undotbs1.272.930584035 32 .67 .57
USERS 4 +DATINXRWMYBD/MMYBD/DATAFILE/users.270.930583831 32 0 0
ALTER DATABASE DATAFILE '+DATINXRWMYBD/MMYBD/DATAFILE/users.270.930583831' AUTOEXTEND ON NEXT 110M MAXSIZE 10G ;
TABLESPACE_NAME FILE_ID FILE_NAME MAXDATAF_GB DATAF_GB USED_GB
--------------- ------- ---------------------------------------------------- ----------- ---------- ----------
SYSAUX 2 +DATINXRWMYBD/MMYBD/DATAFILE/sysaux.271.930583965 32 2.59 2.39
SYSTEM 1 +DATINXRWMYBD/MMYBD/DATAFILE/system.277.930584081 32 1.55 1.54
UNDOTBS1 3 +DATINXRWMYBD/MMYBD/DATAFILE/undotbs1.272.930584035 32 .67 .57
USERS 4 +DATINXRWMYBD/MMYBD/DATAFILE/users.270.930583831 10 0 0
ALTER DATABASE DATAFILE '+DATINXRWMYBD/MMYBD/DATAFILE/users.270.930583831' RESIZE 500M ;
TABLESPACE_NAME FILE_ID FILE_NAME MAXDATAF_GB DATAF_GB USED_GB
--------------- ------- ---------------------------------------------------- ----------- ---------- ----------
SYSAUX 2 +DATINXRWMYBD/MMYBD/DATAFILE/sysaux.271.930583965 32 2.59 2.39
SYSTEM 1 +DATINXRWMYBD/MMYBD/DATAFILE/system.277.930584081 32 1.55 1.54
UNDOTBS1 3 +DATINXRWMYBD/MMYBD/DATAFILE/undotbs1.272.930584035 32 .67 .57
USERS 4 +DATINXRWMYBD/MMYBD/DATAFILE/users.270.930583831 10 .49 0
Je vais maintenant ajouter un datafile à mon Tablespace :
ALTER TABLESPACE USERS ADD DATAFILE '+DATINXRWMYBD' AUTOEXTEND ON NEXT 30M MAXSIZE 2G ;
TABLESPACE_NAME FILE_ID FILE_NAME MAXDATAF_GB DATAF_GB USED_GB
--------------- ------- ---------------------------------------------------- ----------- ---------- ----------
SYSAUX 2 +DATINXRWMYBD/MMYBD/DATAFILE/sysaux.271.930583965 32 2.59 2.39
SYSTEM 1 +DATINXRWMYBD/MMYBD/DATAFILE/system.277.930584081 32 1.55 1.54
UNDOTBS1 3 +DATINXRWMYBD/MMYBD/DATAFILE/undotbs1.272.930584035 32 .67 .57
USERS 4 +DATINXRWMYBD/MMYBD/DATAFILE/users.270.930583831 10 .49 0
USERS 10 +DATINXRWMYBD/MMYBD/DATAFILE/users.279.949315919 2 .1 0
Le datafile apparaît dans mon ASM :
ASM :
======
Type Redund Striped Time Sys Name
DATAFILE UNPROT COARSE JUL 09 10:00:00 Y SYSAUX.271.930583965
DATAFILE UNPROT COARSE JUL 09 10:00:00 Y SYSTEM.277.930584081
DATAFILE UNPROT COARSE JUL 09 10:00:00 Y UNDOTBS1.272.930584035
DATAFILE UNPROT COARSE JUL 09 10:00:00 Y USERS.270.930583831
DATAFILE UNPROT COARSE JUL 09 10:00:00 Y USERS.279.949315919
Maintenant j'ajoute une table, et je réalise quelques opérations :
DATABASE :
==========
DROP TABLE TOTO PURGE ;
CREATE TABLE TOTO ( COL_A INTEGER) TABLESPACE USERS ; CREATE INDEX IDX_TOTO ON TOTO (COL_A) TABLESPACE USERS ;
INSERT INTO TOTO (COL_A) SELECT ROWNUM R FROM DUAL CONNECT BY ROWNUM <= 1000000 ;
COMMIT ;
SELECT MAX(COL_A) FROM TOTO ;
MAX(COL_A)
----------
1000000
ALTER TABLE TOTO ADD (COL_B INTEGER) ;
UPDATE TOTO SET COL_B=COL_A+1;
COMMIT ;
TABLESPACE_NAME FILE_ID FILE_NAME MAXDATAF_GB DATAF_GB USED_GB
--------------- ------- ---------------------------------------------------- ----------- ---------- ----------
SYSAUX 2 +DATINXRWMYBD/MMYBD/DATAFILE/sysaux.271.930583965 32 2.59 2.39
SYSTEM 1 +DATINXRWMYBD/MMYBD/DATAFILE/system.277.930584081 32 1.55 1.54
UNDOTBS1 3 +DATINXRWMYBD/MMYBD/DATAFILE/undotbs1.272.930584035 32 .67 .63
USERS 4 +DATINXRWMYBD/MMYBD/DATAFILE/users.270.930583831 10 .49 .03
USERS 10 +DATINXRWMYBD/MMYBD/DATAFILE/users.279.949315919 2 .1 .03
ALTER SYSTEM ARCHIVE LOG CURRENT ;
Je reviens sur le mode Physicai pour resynchroniser la base de données :
(2) EN MODE PHYSICAL :
======================
DATABASE :
==========
DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE FLASHBACK_ON
------------------------------ -------------------- ---------------- ------------------MMYBD MOUNTED PHYSICAL STANDBY YES
SYS@MYBD>
CLIENT_P PROCESS SEQUENCE# STATUS
-------- --------- ---------- ------------
ARCH ARCH 1517 CLOSING
ARCH ARCH 0 CONNECTED
ARCH ARCH 1514 CLOSING
ARCH ARCH 1515 CLOSING
ARCH ARCH 1516 CLOSING
N/A MRP0 1518 APPLYING_LOG
ARCH RFS 0 IDLE
LGWR RFS 1518 IDLE
UNKNOWN RFS 0 IDLE
LOGS TIME SEQUENCE# INCARNATION#
---------------- -------------------- ---------- ------------
LAST APPLIED : 09-JUL-2017 11:01:33 1516 10
LAST RECEIVED : 09-JUL-2017 11:01:38 1517 10
On voit que le datafile a disparu :
NAME FILE# TS# FILENAME BLOCK_SIZE SIZE_GB STATUS
---------- ----- ---- ----------------------------------------------------- ---------- ---------- -------
SYSAUX 2 1 +DATINXRWMYBD/MMYBD/DATAFILE/sysaux.271.930583965 8192 2.59 ONLINE
SYSTEM 1 0 +DATINXRWMYBD/MMYBD/DATAFILE/system.277.930584081 8192 1.55 SYSTEM
UNDOTBS1 3 2 +DATINXRWMYBD/MMYBD/DATAFILE/undotbs1.272.930584035 8192 .67 ONLINE
USERS 4 4 +DATINXRWMYBD/MMYBD/DATAFILE/users.270.930583831 8192 0 ONLINE
Au niveau de mon ASM il a aussi disparu :
ASM :
=====
Type Redund Striped Time Sys Name
DATAFILE UNPROT COARSE JUL 09 11:00:00 Y SYSAUX.271.930583965
DATAFILE UNPROT COARSE JUL 09 11:00:00 Y SYSTEM.277.930584081
DATAFILE UNPROT COARSE JUL 09 11:00:00 Y UNDOTBS1.272.930584035
DATAFILE UNPROT COARSE JUL 09 11:00:00 Y USERS.270.930583831
La base de données ne montre pas d'erreur lors de la synchronisation de données et tout semble correct.
Est-ce qu'on peut ajouter un tablespace sans problème?
Selon mes essais, oui, j'en ai ajouté un sur mon Standby, j'ai créé des tables sur lui et après de réactiver la synchronisation, il disparaît et apparemment la vie continue :).
Aucun commentaire:
Enregistrer un commentaire