ASM und PDB Snapshot Copy
Mit der Multitenant Architektur können neue PDBs auf verschiedene Arten erstellt werden. Eine Variante ist, die neue PDB als sogenannten Snapshot Copy einer vorhandenen PDB zu erstellen. Dabei wird die neue PDB nicht komplett von der Quelle kopiert, sondern es wird nur die Differenz von der Quell-PDB zur Ziel-PDB gespeichert. Das spart natürlich Storage. Unterstützt das Dateisystem Snapshots, so werden diese Dateisystem-Snapshots dafür verwendet, das klappt z.B. mit ACFS. Ansonsten muss das Dateisystem sparseness unterstützen, also das Anlegen von Files in einer Größe X wobei der Platz nur reserviert, nicht aber physisch belegt wird.
Während der DOAG Konferenz 2020 kam die Frage auf, ob das auch mit Datenfiles direkt in ASM funktioniert. Probieren wir es aus.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBASM1 READ WRITE NO
SQL> show parameter clonedb
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
clonedb boolean FALSE
clonedb_dir string
SQL> select file_name from cdb_data_files;
FILE_NAME
--------------------------------------------------------------------------------
+DATA/ASMSE2/DATAFILE/undotbs1.293.1056972257
+DATA/ASMSE2/DATAFILE/system.284.1056972207
+DATA/ASMSE2/DATAFILE/sysaux.292.1056972243
+DATA/ASMSE2/DATAFILE/users.304.1056973161
+DATA/ASMSE2/B48865836FE9D1C6E0533E24100AE822/DATAFILE/system.301.1056972901
+DATA/ASMSE2/B48865836FE9D1C6E0533E24100AE822/DATAFILE/sysaux.302.1056972901
+DATA/ASMSE2/B48865836FE9D1C6E0533E24100AE822/DATAFILE/undotbs1.300.1056972901
+DATA/ASMSE2/B48865836FE9D1C6E0533E24100AE822/DATAFILE/users.305.1056973161
8 rows selected.
SQL> create pluggable database pdbasm2 from pdbasm1 snapshot copy;
create pluggable database pdbasm2 from pdbasm1 snapshot copy
*
ERROR at line 1:
ORA-65169: error encountered while attempting to copy file
+DATA/ASMSE2/B48865836FE9D1C6E0533E24100AE822/DATAFILE/users.305.1056973161
ORA-17517: Database cloning using storage snapshot failed on file
8:+DATA/ASMSE2/B48865836FE9D1C6E0533E24100AE822/DATAFILE/users.305.1056973161
Das funktioniert schon mal nicht, ist aber logisch, denn ASM selbst unterstützt keine Storage Snapshots. Das geht nur über dem Umweg ACFS. Also bleibt nur der zweite Weg. Dazu muss der Parameter "clonedb" auf "TRUE" gesetzt und die Container-Datenbank neu gestartet werden um die Änderung zu aktivieren.
SQL> alter system set clonedb=true scope=spfile;
System altered.
SQL> startup force
ORACLE instance started.
Total System Global Area 4294963760 bytes
Fixed Size 9142832 bytes
Variable Size 855638016 bytes
Database Buffers 3405774848 bytes
Redo Buffers 24408064 bytes
Database mounted.
Database opened.
SQL> show parameter clonedb
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
clonedb boolean TRUE
clonedb_dir string
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDBASM1 READ WRITE NO
SQL> create pluggable database pdbasm2 from pdbasm1 snapshot copy;
create pluggable database pdbasm2 from pdbasm1 snapshot copy
*
ERROR at line 1:
ORA-65081: database or pluggable database is not open in read only mode
Die nächste Einschränkung schlägt zu, denn ohne Storage Snapshots muss die Quell-PDB read-only geöffnet sein und darf auch während der gesamten Lebensdauer von Snapshot Copies nicht wieder read-write geöffnet werden. Also nächster Versuch:
SQL> alter pluggable database pdbasm1 close;
Pluggable database altered.
SQL> alter pluggable database pdbasm1 open read only;
Pluggable database altered.
SQL> create pluggable database pdbasm2 from pdbasm1 snapshot copy;
create pluggable database pdbasm2 from pdbasm1 snapshot copy
*
ERROR at line 1:
ORA-65169: error encountered while attempting to copy file
+DATA/ASMSE2/B48865836FE9D1C6E0533E24100AE822/DATAFILE/users.305.1056973161
ORA-17517: Database cloning using storage snapshot failed on file
8:+DATA/ASMSE2/B48865836FE9D1C6E0533E24100AE822/DATAFILE/users.305.1056973161
Aber auch das war nicht von Erfolg gekrönt. Offenbar unterstützt ASM selbst auch keine Sparseness und somit kann eine PDB auch nicht als Snapshot Copy angelegt werden.
Wenn also ASM im Einsatz ist, was ja unter anderem auf vielen Engineered Systems wie den ODAs der Fall ist, sollte man immer ACFS einsetzen um den maximalen Vorteil aus der neuen Container Architektur ziehen zu können.
Kommentare
Keine Kommentare