Ý nghĩa của việc chọn * từ quan hệ (chủ sở hữu) có thể là gì?


8

Gần đây chúng tôi đã có một số lỗi trong nhật ký thông báo của biểu mẫu

301598: Tue Jul 16 03:58:29 2013
301599: ORA-01555 caused by SQL statement below 
301600: SELECT * FROM RELATIONAL(<owner>.<table>)

Tôi biết cách xử lý lỗi ORA-01555, nhưng tôi chưa bao giờ gặp phải điều gì như thế SELECT * FROM RELATIONAL. Tôi nhìn vào DBA_OBJECTS, nhưng không có chức năng / toán tử / cái gì như vậy.

Googling cho 'CHỌN * TỪ LIÊN QUAN' chỉ trả lại các câu hỏi liên quan đến ORA-01555.

Vì vậy, câu hỏi của tôi là: ý nghĩa của từ khóa LIÊN QUAN ở đây là gì?


2
Có vẻ như đây là một cái gì đó sâu sắc nội bộ. Bởi vì support.oracle.com cũng chỉ hiển thị cùng thông tin mà bạn đã googled.
Mindaugas Riauba

2
Tôi chắc chắn 99% điều này là để truy vấn kiểu dữ liệu XMLTYPE, nhưng tôi không thể tìm thấy tài liệu tham khảo vì rõ ràng đây relationallà một từ rất khó để tìm kiếm tài liệu DB.
Gaius

1
@Gaius Tôi không nghĩ nó liên quan đến XMLTYPE (bảng không chứa cột XMLTYPE).
Frank Schmitt

1
Tìm thấy cái này, có thể giúp: forum.oracle.com/thread/1042943?start=0&tstart=0
Iľja

thay đổi tham số undo_ret chú ý của bạn
user3556458

Câu trả lời:


1

Nó dường như trơ. Tôi đã thử nghiệm điều này trên XE 11 và thấy rằng nó không làm gì cả.

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;

0

Tôi tin rằng đây là một bí danh không dùng cho chức năng BẢNG ngày nay cho các chức năng theo đường ống, nhưng bây giờ tôi không thể tìm thấy tài liệu tham khảo của mình nói điều này.


0

Theo bài viết trên blog này , gợi ý cụ thể RELATIONALhướng dẫn Trình tối ưu hóa truy vấn

... chuyển đổi đối tượng thành một bảng quan hệ, tương tự như hàm LIÊN QUAN ...

Một bài viết thứ hai trong Cộng đồng Oracle nói rằng

Gợi ý LIÊN QUAN làm cho Oracle hủy dữ liệu đối tượng và chèn chính dữ liệu thuộc tính chứ không phải đối tượng. Các gợi ý được sử dụng chỉ có thể được sử dụng bởi Oracle - đó là lý do tại sao chúng không có giấy tờ ...

Tôi nghĩ rằng đây chỉ là một vấn đề của một truy vấn chạy dài, đang bị phơi bày bởi lỗi ORA-01555 trong khi sử dụng một gợi ý truy vấn, không được ghi nhận.


Gợi ý truy vấn được lồng trong / * khối nhận xét * /. Điều này dường như là một cái gì đó khác.
Durette

0

Như thể hiện bởi Durette, đây là một diễn viên vô dụng. Hầu hết các bảng là LIÊN QUAN, và đó là mặc định. Tuy nhiên, Oracle cũng hỗ trợ các bảng ĐỐI TƯỢNG (xem cú pháp trong các tài liệu CREATE TABLE của Oracle ), giải thích lý do cho cú pháp bên trong. Không có bất kỳ lý do nào để sử dụng LIÊN QUAN trong truy vấn nhưng cũng không có lý do gì để nó thất bại. Bạn nên tập trung vào các bản sửa lỗi chung cho ORA-01555. ORA-01555 thường có nghĩa là các phân đoạn UNDO của bạn không đủ để xử lý tốc độ thay đổi trong cơ sở dữ liệu của bạn.

Bạn có thể tái tạo lỗi này theo yêu cầu? Làm thế nào nhật ký truy vấn vi phạm chạy trước khi nó thất bại? Hoặc là câu hỏi thực sự của bạn, "Làm cách nào để theo dõi SQL gây ra lỗi này?"

Ngoài ra, bạn không chỉ định phiên bản Oracle và cấp độ bản vá.


2
Tất nhiên, bạn nhận ra rằng câu hỏi đã gần sáu tuổi.
mustaccio

Tôi không quan tâm đến việc sửa ORA-01555 (Tôi biết cách thực hiện điều đó, như tôi đã đề cập trong câu hỏi của mình). Tôi chỉ quan tâm đến cuộc gọi / cú pháp chức năng LIÊN QUAN kỳ lạ, nhưng sự tò mò của tôi đã giảm dần trong những năm qua :-)
Frank Schmitt

1
Nếu bạn không còn muốn phản hồi về câu hỏi này, bạn có thể xóa nó hoặc chấp nhận câu trả lời. Miễn là trao đổi ngăn xếp xem xét câu hỏi này chưa được trả lời, nó sẽ tiếp tục nhắc nhở mọi người giúp đỡ.
Gordon Hopper

-3

Dòng bên dưới "ORA-01555 do câu lệnh SQL bên dưới" là Câu lệnh SQL khiến UNDO hoán đổi.

Vì vậy, LIÊN QUAN không phải là một thứ của Oracle, nó là một đối tượng được tạo bởi người dùng. Đây là một hàm với tham số own.table.


2
Nếu đó là một chức năng được tạo bởi người dùng, thì nó có nên xuất hiện trong DBA_OBJECTS không?
Frank Schmitt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.