Apa arti dari "select * from relational (owner.table)"?

8

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?

Frank Schmitt
sumber
2
Tampaknya ini adalah sesuatu yang sangat internal. Karena support.oracle.com juga hanya menampilkan informasi yang sama dengan yang sudah Anda cari di Google.
Mindaugas Riauba
2
Saya 99% yakin ini untuk menanyakan tipe data XMLTYPE, tetapi saya tidak dapat menemukan referensi karena jelas relationalmerupakan kata yang sangat sulit untuk mencari dokumentasi DB.
Gayus
1
@ Gayus Saya tidak berpikir itu terkait XMLTYPE (tabel tidak mengandung kolom XMLTYPE).
Frank Schmitt
1
Menemukan ini, dapat membantu: forums.oracle.com/thread/1042943?start=0&tstart=0
Iľja
ubah parameter undo_retention Anda
user3556458

Jawaban:

1

Tampaknya lembam. Saya menguji ini pada XE 11 dan menemukan bahwa itu tidak melakukan apa-apa.

CREATE TABLE dbausers AS SELECT * FROM dba_users;

-- Function doesn't affect result set.
SELECT * FROM dbausers
MINUS
SELECT * FROM RELATIONAL(dbausers);

SELECT * FROM RELATIONAL(dbausers)
MINUS
SELECT * FROM dbausers;
durette
sumber
0

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.

durette
sumber
0

Menurut artikel blog ini petunjuk spesifik RELATIONALmenginstruksikan Kueri Pengoptimal untuk

... mengonversi objek ke tabel relasional, mirip dengan fungsi HUBUNGAN ...

Sebuah artikel kedua di Komunitas Oracle menyatakan bahwa

Petunjuk RELATIONAL menyebabkan Oracle merusak data objek dan menyisipkan data atribut itu sendiri, bukan objek. Petunjuk yang digunakan hanya dapat digunakan oleh Oracle - itulah sebabnya mereka tidak berdokumen ...

Saya pikir ini hanya masalah permintaan yang berjalan lama, yang diekspos oleh kesalahan ORA-01555 sementara secara internal menggunakan petunjuk kueri, yang tidak berdokumen.

John alias hot2use
sumber
Petunjuk kueri bersarang di / * blok komentar * /. Ini tampaknya menjadi sesuatu yang lain.
Durette
0

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.

Gordon Hopper
sumber
2
Anda menyadari, tentu saja, bahwa pertanyaannya hampir enam tahun.
mustaccio
Saya tidak tertarik untuk memperbaiki ORA-01555 (saya tahu bagaimana melakukan itu, seperti yang saya sebutkan dalam pertanyaan saya). Saya hanya tertarik dengan fungsi panggil / sintaks aneh, tetapi rasa ingin tahu saya telah berkurang selama bertahun-tahun :-)
Frank Schmitt
1
Jika Anda tidak lagi ingin umpan balik tentang pertanyaan ini, Anda dapat menghapusnya atau menerima jawaban. Selama pertukaran tumpukan menganggap pertanyaan ini tidak terjawab, itu akan terus mendorong orang untuk membantu.
Gordon Hopper
-3

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.

Pythia Delphi
sumber
2
Jika itu adalah fungsi yang dibuat oleh pengguna, bukankah seharusnya hadir di DBA_OBJECTS?
Frank Schmitt