Próbuję usunąć plik PDB w Oracle 19.3, który nie jest już potrzebny. Otrzymuję następujący błąd:
SQL> alter pluggable database DEV_PDB close immediate instances=all;
Pluggable database altered.
SQL> alter pluggable database DEV_PDB unplug into '/tmp/DEV_PDB.xml';
alter pluggable database DEV_PDB unplug into '/tmp/DEV_PDB.xml'
*
ERROR at line 1:
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5590 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5589 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5588 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5587 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5586 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5585 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5584 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5583 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5582 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5581 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5580 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5579 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5578 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5577 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-01114: IO error writing block to file 5576 (block # 1)
ORA-17500: ODM err:Invalid argument
ORA-17528: A read-only file or a file opened read-only cannot be written to:
/u01/app/oracle/oradata/DEV_PDB/data04/users01.dbf.
Hmm interesujące. Nie miałem tego problemu, gdy wykonałem ten sam proces w Oracle 12.1.0.2 (pominąłem 12.2 i 18).
Dzięki MOS Note 2419236.1 i części mojej własnej pracy (Notatka nie pasuje do mojego problemu), udało mi się rozwiązać problem. Problem polega na tym, że ten plik PDB był kiedyś podstawą sklonowanych plików PDB w moim środowisku. Tworzymy plik PDB w naszym środowisku Multitenant i klonujemy go, aby stworzyć wiele baz deweloperskich i testowych dla naszych pracowników IT. Dowiedziałem się, że w Oracle 12.2 i nowszych Oracle zmieni uprawnienia do plików na poziomie systemu operacyjnego dla dowolnego źródła PDB klonu. Uprawnienia do plików są ustawione na tylko do odczytu. Kiedy próbuję odłączyć PDB, musi zapisywać informacje w nagłówkach plików danych i otrzymujemy powyższe błędy.
Obejściem tego problemu jest po prostu zmiana uprawnień do plików danych na 640 i ponowna próba operacji odłączenia. Obejście w Nocie 2419236.1 wymaga przestoju, ale moje obejście nie.