Kami baru-baru ini mendapatkan beberapa kesalahan di log peringatan formulir kami
301598: Tue Jul 16 03:58:29 2013
301599: ORA-01555 caused by SQL statement below
301600: SELECT * FROM RELATIONAL(<owner>.<table>)
Saya tahu cara menangani kesalahan ORA-01555, tetapi saya tidak pernah menemukan sesuatu seperti itu SELECT * FROM RELATIONAL
. Saya melihat ke dalam DBA_OBJECTS
, tetapi tidak ada fungsi / operator / apa pun.
Googling untuk 'SELECT * FROM RELATIONAL' hanya mengembalikan pertanyaan yang terkait dengan ORA-01555.
Jadi, pertanyaan saya adalah: Apa arti dari kata kunci RELATIONAL di sini?
relational
merupakan kata yang sangat sulit untuk mencari dokumentasi DB.Jawaban:
Tampaknya lembam. Saya menguji ini pada XE 11 dan menemukan bahwa itu tidak melakukan apa-apa.
sumber
Saya percaya ini adalah alias usang untuk fungsi TABLE hari ini untuk fungsi pipelined, tapi sekarang saya tidak dapat menemukan referensi saya yang mengatakan ini.
sumber
Menurut artikel blog ini petunjuk spesifik
RELATIONAL
menginstruksikan Kueri Pengoptimal untukSebuah artikel kedua di Komunitas Oracle menyatakan bahwa
Saya pikir ini hanya masalah permintaan yang berjalan lama, yang diekspos oleh kesalahan ORA-01555 sementara secara internal menggunakan petunjuk kueri, yang tidak berdokumen.
sumber
Seperti yang ditunjukkan oleh durette, ini adalah pemain yang tidak berguna. Sebagian besar tabel adalah HUBUNGAN, dan itulah standarnya. Namun, Oracle juga mendukung tabel OBJECT (lihat sintaks pada dokumen CREATE TABLE Oracle ), yang menjelaskan alasan sintaksis internal. Tidak ada alasan untuk menggunakan RELATIONAL dalam kueri, tetapi juga tidak ada alasan untuk gagal. Anda harus fokus pada perbaikan umum untuk ORA-01555. ORA-01555 biasanya berarti segmen UNDO Anda tidak cukup untuk menangani tingkat perubahan dalam database Anda.
Apakah Anda dapat mereproduksi kesalahan ini saat diminta? Bagaimana log menjalankan kueri menyinggung sebelum gagal? Atau pertanyaan Anda yang sebenarnya, "Bagaimana cara melacak SQL yang menyebabkan kesalahan ini?"
Juga, Anda tidak menentukan versi Oracle dan tingkat tambalan Anda.
sumber
Baris di bawah "ORA-01555 yang disebabkan oleh pernyataan SQL di bawah" adalah Pernyataan SQL yang menyebabkan UNDO melakukan swap.
Jadi HUBUNGAN bukanlah hal yang Oracle, itu adalah objek yang dibuat oleh pengguna. Ini adalah fungsi dengan parameter owner.table.
sumber