sql >> Databáze >  >> RDS >> Oracle

ORA-1114 Spuštěný Datapatch

Mám databázi Oracle 19.3 Multitenant, na kterou se pokouším použít aktualizaci vydání 19.7. RU byl nainstalován opatchem v pořádku. Ale datapatch způsobí chybu ORA-1114. V jednom z protokolů se mi zobrazují chyby jako následující:

SQL> změnit zásuvnou databázi GOLD2020_06_18_123653 otevřít čtení zápis instance=vše;
změnit připojitelnou databázi GOLD2020_06_18_123653 otevřít čtení a zápis instance=vše
*
CHYBA na řádku 1:
ORA-65107:Při zpracování aktuální úlohy na instanci:1 došlo k chybě
ORA-17500:ODM err:Neplatný argument
ORA-01114:Chyba IO při zápisu bloku do souboru 12346 (blok č. 1)
ORA-17500:ODM err:Neplatný argument
ORA-01114:Chyba IO při zápisu bloku do souboru 12345 (blok č. 1)
ORA-17500:ODM err:Neplatný argument

Než budu moci vysvětlit, v čem je problém, dovolte mi prodiskutovat, jak používáme Multitenant v mém prostředí. Jednou týdně máme úlohu cron, která vytváří kopii naší produkční databáze (pomocí hardwarových snímků na disku). Tuto kopii produkce nazýváme naším „zlatým obrazem“. Tento zlatý obrázek je zapojen do naší databáze jako jeden z našich PNR. Název PDB má formát GOLDyyyy_mm_dd_hhmiss abychom věděli, kdy byl tento PNR vytvořen.

Všechny naše vývojářské a testovací databáze jsou pak vytvořeny z tohoto zlatého obrázku PDB. Když potřebuji obnovit DEV1 nebo TEST, jednoduše vypneme PDB pro DEV1 nebo TEST a zahodíme. Poté vytvoříme klon snímku nejnovějšího zlatého obrázku. Zlatý obrázek PDB je v režimu POUZE ke čtení, aby se usnadnil klon snímku.

Jak jsem psal zde, když je PDB použit jako zdroj pro klon snímku, Oracle změní oprávnění k souboru na 220. Toto je Oracle, který nás chrání před námi samými. Nemělo by nám být dovoleno upravovat zdroj klonu snímku, takže Oracle umožňuje datové soubory pouze pro čtení. Ať už se kdokoli v Oracle rozhodl změnit oprávnění k souborům, byl to dobrý nápad, nemluvil o tom s vývojáři datapatch.

Datapatch vidí PDB POUZE ke čtení a chce jej otevřít jako READ WRITE, opravit vnitřek PDB a poté nastavit zpět na READ ONLY. Datapatch však nemůže otevřít PDB v režimu čtení a zápisu, protože to oprávnění souboru neumožňují. Proto ty chyby, které dostávám.

Oracle mi to udělal...vynutili si oprávnění k souborům jedním způsobem a datapatch pak nemůže dělat to, co nyní chtějí.

Ještě jsem neobdržel oficiální zprávu s požadavkem na službu, ale očekávám, že se z toho stane chyba. Datapatch by měl podle mého názoru přeskakovat jakékoli PDB, které jsou zdroji pro snapshot klony.

Mezitím si to můžete projít hrubou silou. Snažil jsem se použít parametr -exclude_pdbs pro datapatch, ale nefungovalo to. Zřejmě existuje známá chyba, kdy tento parametr nefunguje, pokud váš seznam PDB obsahuje čárku. Takže jsem musel spustit datapatch následovně:\

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

Nejprve jsem spustil datapatch pro opravu CDB$ROOT. Pak jsem opravil PDB$SEED. Pak jsem opravil své dev PDB. Jen jsem neopravil své zlaté image PDB.


  1. 6 způsobů, jak přidat rok k datu v MariaDB

  2. Jak změnit řádek příkazového řádku v SQLite

  3. Jak získat kumulativní celkový počet uživatelů za den v MySQL

  4. Postgres analogie k CROSS APPLY na SQL Server