Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-1114 Laufender Datenpatch

Ich habe eine Oracle 19.3 Multitenant-Datenbank, auf die ich versuche, das 19.7 Release Update anzuwenden. Die RU wurde problemlos von opatch installiert. Bei datapatch tritt jedoch der Fehler ORA-1114 auf. In einem der Protokolle erhalte ich Fehler wie die folgenden:

SQL> austauschbare Datenbank ändern GOLD2020_06_18_123653 open read write instances=all;
austauschbare Datenbank ändern GOLD2020_06_18_123653 Lese-Schreib-Instanzen öffnen=alle
*
FEHLER in Zeile 1:
ORA-65107:Fehler beim Verarbeiten der aktuellen Aufgabe auf Instanz:1
ORA-17500:ODM-Fehler:Ungültiges Argument
ORA-01114:E/A-Fehler beim Schreiben des Blocks in Datei 12346 (Block Nr. 1)
ORA-17500:ODM-Fehler:Ungültiges Argument
ORA-01114:E/A-Fehler beim Schreiben des Blocks in Datei 12345 (Block Nr. 1)
ORA-17500:ODM-Fehler:Ungültiges Argument

Bevor ich erklären kann, was das Problem ist, lassen Sie mich erläutern, wie wir Multitenant in meiner Umgebung verwenden. Einmal pro Woche haben wir einen Cron-Job, der eine Kopie unserer Produktionsdatenbank erstellt (unter Verwendung von festplattenbasierten Hardware-Snapshots). Wir nennen diese Kopie der Produktion unser „goldenes Image“. Dieses goldene Bild wird als eines unserer PDBs in unsere Datenbank eingefügt. Der PDB-Name hat das Format GOLDyyyy_mm_dd_hhmiss damit wir wissen, wann diese PDB erstellt wurde.

Alle unsere Entwicklungs- und Testdatenbanken werden dann aus dieser Golden-Image-PDB erstellt. Wenn ich DEV1 oder TEST aktualisieren muss, fahren wir einfach die PDB für DEV1 oder TEST herunter und löschen sie. Wir erstellen dann einen Snapshot-Klon des neuesten Golden Image. Die Golden-Image-PDB befindet sich im schreibgeschützten Modus, um das Snapshot-Klonen zu erleichtern.

Wie ich hier geschrieben habe, ändert Oracle die Dateiberechtigungen auf 220, wenn eine PDB als Quelle für einen Snapshot-Klon verwendet wird. Dies ist Oracle, das uns vor uns selbst schützt. Wir sollten nicht berechtigt sein, die Quelle eines Snapshot-Klons zu ändern, damit Oracle die Datendateien schreibgeschützt macht. Wer bei Oracle entschied, dass es eine gute Idee war, die Dateiberechtigungen zu ändern, sprach nicht mit den Datapatch-Entwicklern darüber.

Datapatch sieht die READ ONLY PDB und möchte sie als READ WRITE öffnen, das Innere der PDB patchen und dann auf READ ONLY zurücksetzen. Datapatch kann die PDB jedoch nicht im Lese-/Schreibmodus öffnen, da die Dateiberechtigungen dies nicht zulassen. Daher die Fehler, die ich erhalte.

Oracle hat mir das angetan … sie haben Dateiberechtigungen auf eine Weise erzwungen und dann kann Datapatch nicht das tun, was sie jetzt wollen.

Ich habe noch keine offizielle Nachricht mit meiner Serviceanfrage erhalten, aber ich gehe davon aus, dass dies zu einem Fehler wird. Datapatch sollte meiner Meinung nach alle PDBs überspringen, die Quellen für Snapshot-Klone sind.

In der Zwischenzeit können Sie sich mit brutaler Gewalt Ihren Weg durch diese bahnen. Ich habe versucht, den Parameter -exclude_pdbs für datapatch zu verwenden, aber das hat nicht funktioniert. Anscheinend gibt es einen bekannten Fehler, bei dem dieser Parameter nicht funktioniert, wenn Ihre Liste von PDBs ein Komma enthält. Also musste ich datapatch wie folgt ausführen lassen:\

./datapatch -verbose -pdbs cdb\$root
./datapatch -verbose -pdbs pdb\$seed
./datapatch -verbose -pdbs dev1,dev2

Zuerst habe ich datapatch ausgeführt, um CDB$ROOT zu patchen. Dann habe ich PDB$SEED gepatcht. Dann habe ich meine Dev-PDBs gepatcht. Ich habe meine Golden-Image-PDBs einfach nicht gepatcht.