Datenbank-Cloning - gDBClone - ACFS Snapshot Management Script
von Sebastian Solbach ORACLE Deutschland B.V. & Co.KG
Egal ob für Testumgebungen, Entwicklungsumgebungen oder Sicherungen, das Klonen von Datenbanken hat viele Anwendungsmöglichkeiten.
Das Klonen mit der
ACFS Snapshot Funktionalität im Umfeld von Oracle 12c Multitenant
wurde auf der DBA Community in einem früheren
Tipp
schon beleuchtet.
ASM Cluster Filesystem (ACFS) für Oracle Datenbanken Die grundlegenden ASM Cluster Filesystem Funktionalitäten und Grundlagen zu ACFS Snapshots wurden im Tipp zu Datenbank-Cloning - ACFS & 12c Multitenant schon einmal ausführlich beschrieben. Deshalb sollten die generischen Voraussetzungen für einen Snapshot Klon mit ACFS und die Abhängigkeiten zur entsprechenden Grid Infrastruktur und Datenbank Release hier nochmals nachgelesen werden, wenn diese nicht mehr präsent sind. ACFS Snapshot mit gDBClone
Bei gDBClone handelt es sich um ein
frei verfügbares Perl Skript
, welches auch nach Bedarf angepasst werden kann.
Das Skript wird als Administrationsbenutzer Root ausgeführt und kann von kompletten RAC oder Single Instanz Datenbanken, die in einer Cluster Grid Infrastruktur laufen, Datenbankkopien erzeugen.
Das Environment sollte hierbei im Zielsystem, von dem aus gDBCLone aufgerufen wird, auf das ORACLE_HOME der Datenbankversion gesetzt sein, die kopiert werden sollte.
Empfehlung ist es hierbei, denselben Softwarestand installiert zu haben wie auf dem Source System.
Das Ziel kann wiederum eine RAC Instanz sein, es ist aber ebenfalls möglich die Kopie in eine Single Instanz oder RAC Datenbank zu konvertieren.
Die Funktionsfähigkeit des gDBClone Skript geht dabei davon aus, dass sowohl das Source als auch das Zielsystem mit einer Clusterversion der Grid Infrastruktur installiert ist.
]# ./gDBClone usage: gDBClone clone -sdbname
./gDBClone clone -sdbname ssdb -sdbhost bumucsvm1-scan -tdbname sclone -acfs /u01/app/oracle/oradata 2015-10-15 23:16:57: I Checking source host bumucsvm1-scan... 2015-10-15 23:16:57: I Getting host info... 2015-10-15 23:16:57: I Starting..... 2015-10-15 23:16:57: I Validating environment..... Enter the source ssdb SYSDBA password: 2015-10-15 23:17:02: I Checking SCAN listener bumucsvm1-scan:1521... 2015-10-15 23:17:05: I Getting OH version... 2015-10-15 23:17:25: I Checking SCAN listener bumucsvm1.de.oracle.com:1521... 2015-10-15 23:17:27: I Checking registered instance SCLONE ... 2015-10-15 23:17:34: I Checking if the /u01/app/oracle/oradata is an ACFS file system 2015-10-15 23:17:34: I Setting up clone environment.... 2015-10-15 23:17:35: I Starting auxiliary listener.... 2015-10-15 23:18:37: I Creating base ACFS snapshot..... 2015-10-15 23:18:38: I Creating dynamic scripts..... 2015-10-15 23:18:38: I Cloning to target ACFS from host bumucsvm1-scan 2015-10-15 23:18:38: I Spfile to target ACFS 2015-10-15 23:18:39: I Instantiating clone database..... 2015-10-15 23:18:39: I please wait (this can take a while depending on database size and/or network speed) 2015-10-16 07:56:29: I Successfully created clone "SCLONE" databasegDBCLone verwendet beim Klonen von Datenbanken, wie oben bereits erwähnt, die ganz normale RMAN Duplicate Funktionalität. Allerdings übernimmt das Script alle notwendigen Voraussetzungen, die sonst manuell aufzusetzen wären. Einen Eindruck der dazu notwendigen einzelnen Schritte, kann der Tipp "Standby Datenbank in 5 Minuten" geben. Im Gegensatz zur herkömmlichen Kopie ist dabei, dass ein eigener ACFS Snapshot erstellt wird, selbst wenn es sich um die erste orginäre Kopie handelt. Dies ist notwendig, um auch beim Kopieren mehrerer Datenbanken in dasselbe ACFS Filesystem, eine Granularität für spätere ACFS Snapshots zu erhalten, ohne dass alle anderen unnötigen Dateien anderen Datenbanken mit gesnapped werden müssten. Nichts desto trotz kann überlegt werden gDBClone auch zu verwenden um eine Standby Datenbank automatisch zu erzeugen, ohne dass selber das RMAN Skript dazu erzeugt werden müsste. Zielsystem müsste dann allerdings ein RAC mit aktueller Grid Infrastruktur und ACFS sein. Als nächster Schritt folgt bei gDBClone dann die eigentliche Snapshot Kopie mit Hilfe eines ACFS Filesystem Snapshosts: ./gDBClone snap -sdbname sclone -tdbname DOAG 2015-10-16 08:38:36: I Getting host info... 2015-10-16 08:38:36: I Starting..... 2015-10-16 08:38:36: I Validating environment..... Enter the source SCLONE SYSDBA password: 2015-10-16 08:38:43: I Getting OH version... 2015-10-16 08:39:05: I Checking SCAN listener bumucsvm1.de.oracle.com:1521... 2015-10-16 08:39:06: I Checking database DOAG existence... 2015-10-16 08:39:07: I Checking registered instance DOAG ... 2015-10-16 08:39:21: I Checking if the Source Database SCLONE it's on ASM 2015-10-16 08:39:21: I Source Database SCLONE it's on ACFS 2015-10-16 08:39:21: I Checking snapshot DOAG existence 2015-10-16 08:39:21: I Setting up clone environment.... 2015-10-16 08:39:22: I Starting auxiliary listener.... 2015-10-16 08:40:22: I Creating ACFS snapshot..... 2015-10-16 08:40:44: I Checking if the source database SCLONE is stored on an ACFS snapshot 2015-10-16 08:40:44: I The source database SCLONE is running on an ACFS snapshot 2015-10-16 08:41:12: I Setting up snapshot database..... 2015-10-16 08:41:13: I Creating Clone parameter files 2015-10-16 08:41:18: I Activating clone database..... 2015-10-16 08:43:40: I Successfully created clone "DOAG" databaseDabei kümmert sich gDBClone um alle notwendigen Schritte eines solchen Snapshot Klons. Dazu gehören das neu Anlegen der Redologs, die DBID mit dbnid zu ändern und die ggf. notwendigen RAC Änderungen mit der Registrierung in der Oracle Clusterware. Der Snapshot schreibt die geänderten Daten automatisch in dasselbe ACFS Filesystem, wie auch die Datenbank, von der der Snapshot erstellt wurde. Zur genauen Überwachung des Plattenplatzen wird der Befehl "acfsutil" verwendet, der im Tipp ACFS Snapshot Funktionalität im Umfeld von Oracle 12c Multitenant beschrieben ist. Sollte der Snapshot oder die Datenbank-Kopie nicht mehr benötigt werden, kann diese einfach mit gDBClone auch wieder gelöscht werden. Dieser Schritt erfordert die notwendige Sorgfalt, denn es gibt kein UNDO und funktioniert sowohl beim Snapshot, wie auch beim Master. # ./gDBClone deldb -tdbname DOAG You are going to drop the database DOAG, are you sure (Y/N)? y Connecting to database 47% complete updating network configuration files 52% complete Deleting instance and datafiles 76% complete 100% complete Look at the log file "/u01/app/oracle/cfgtoollogs/dbca/SNAP32.log" for further details. acfsutil snap delete: Snapshot operation is complete. ACFS snapshot SNAP3 on /cloudfs ACFS file system has been deleted.Es ist aber durchaus auch möglich einen "Parent" zu löschen, der davon erzeugt Snapshot wird dadurch nicht invalide. Lediglich der benötigte Speicherplatz wird von ACFS in diesem Falle nicht freigegeben. Nähere Informationen zu den einzelnen Schritten findet sich auch im veröffentlichten Whitepaper zu gDBClone. gDBClone Tipps Damit gDBClone funktioniert gibt es momentan einige zwingende Voraussetzungen:
Fazit Das ASM Cluster Filesystem ist eine performante, kostenlose Lösung um Enterprise Edition Datenbanken mit Hilfe von Copy on Write Technologie schnell zu klonen. Das Perl Skript gDBClone hilft dabei diese Technologie einfach auch mit 11gR2 als auch 12c Datenbanken zu verwenden, auch ohne die Multitenant Datenbankoption. Teuere Storage Lösungen mit vergleichbarer Funktionalität sind dabei nicht notwendig. Wer auf Graphische Benutzeroberfläche, generische Unterstützung und Komfortfunktionen, wie diese 12c Enterprise Manager Snapshot Funktion bietet, verzichten kann, findet mit ACFS und gDBClone eine passende kostengünstige Lösung. Nützliche Links und Referenzen
|