Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-1114 Menjalankan Datapatch

Saya memiliki database Oracle 19.3 Multitenant yang saya coba terapkan Pembaruan Rilis 19.7. RU dipasang oleh opatch dengan baik. Tetapi datapatch akan menimbulkan kesalahan ORA-1114. Saya mendapatkan kesalahan seperti berikut di salah satu log:

SQL> ubah basis data yang dapat dicolokkan GOLD2020_06_18_123653 buka baca tulis instance =semua;
ubah basis data yang dapat dicolokkan GOLD2020_06_18_123653 buka baca tulis instance =semua
*
KESALAHAN pada baris 1:
ORA-65107:Terjadi kesalahan saat memproses tugas saat ini pada contoh:1
ORA-17500:ODM err:Argumen tidak valid
ORA-01114:IO error writing block ke file 12346 (block #1)
ORA-17500:ODM err:Argumen tidak valid
ORA-01114:Blok penulisan kesalahan IO ke file 12345 (blok #1)
ORA-17500:ODM err:Argumen tidak valid

Sebelum saya menjelaskan apa masalahnya, izinkan saya membahas bagaimana kami menggunakan Multitenant di lingkungan saya. Sekali seminggu, kami memiliki tugas cron yang membuat salinan basis data produksi kami (menggunakan snapshot perangkat keras berbasis disk). Kami menyebut salinan produksi ini sebagai "gambar emas" kami. Gambar emas ini dicolokkan ke database kami sebagai salah satu PDB kami. Nama PDB berformat GOLDyyyy_mm_dd_hhmiss sehingga kita tahu kapan PDB itu dibuat.

Semua database pengembangan dan pengujian kami kemudian dibuat dari PDB gambar emas ini. Ketika saya perlu me-refresh DEV1 atau TEST, kami cukup mematikan PDB untuk DEV1 atau TEST dan menjatuhkannya. Kami kemudian membuat klon snapshot dari gambar emas terbaru. PDB gambar emas dalam mode READ ONLY untuk memfasilitasi klon snapshot.

Seperti yang saya tulis di sini, ketika PDB digunakan sebagai sumber untuk klon snapshot, Oracle akan mengubah izin file menjadi 220. Ini adalah Oracle yang melindungi kita dari diri kita sendiri. Kami seharusnya tidak diizinkan untuk memodifikasi sumber klon snapshot sehingga Oracle membuat file data hanya dapat dibaca. Siapa pun di Oracle yang memutuskan untuk mengubah izin file adalah ide yang bagus, jangan membicarakannya dengan pengembang datapatch.

Datapatch melihat PDB READ ONLY dan ingin membukanya sebagai READ WRITE, menambal bagian dalam PDB, dan kemudian menyetel kembali ke READ ONLY. Namun, datapatch tidak dapat membuka PDB dalam mode baca tulis karena izin file tidak mengizinkannya. Oleh karena itu kesalahan yang saya terima.

Oracle melakukan ini kepada saya… mereka memaksakan izin file satu arah dan kemudian datapatch tidak dapat melakukan apa yang mereka inginkan sekarang.

Saya belum menerima kabar resmi dengan Permintaan Layanan saya, tetapi saya berharap ini menjadi bug. Datapatch harus melewatkan PDB apa pun yang merupakan sumber untuk klon snapshot, menurut saya.

Sementara itu, Anda dapat memaksa melalui ini. Saya mencoba menggunakan parameter -exclude_pdbs untuk datapatch tetapi tidak berhasil. Rupanya ada bug yang diketahui di mana parameter itu tidak berfungsi jika daftar PDB Anda memiliki koma. Jadi saya harus menjalankan datapatch sebagai berikut:\

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

Pertama, saya menjalankan datapatch untuk menambal CDB$ROOT. Kemudian saya menambal PDB$SEED. Kemudian saya menambal PDB dev saya. Saya hanya tidak menambal PDB gambar emas saya.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SUBSTR() Fungsi di Oracle

  2. Masukkan jika tidak ada Oracle

  3. Menghapus baris dari tabel induk dan anak

  4. Apa perbedaan antara hash join dan merge join (Oracle RDBMS )?

  5. Oracle PL/SQL:Periksa Apakah BLOB atau CLOB Kosong