「select * from Relational(owner.table)」の意味は何ですか?


8

最近、フォームのアラートログにエラーが発生しました

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

ORA-01555エラーの処理方法は知っていますが、などのエラーは発生しませんSELECT * FROM RELATIONAL。で調べましたがDBA_OBJECTS、そのような関数/演算子/何もありません。

「SELECT * FROM RELATIONAL」のグーグル検索では、ORA-01555に関連する質問のみが返されました。

だから、私の質問は:ここでRELATIONALキーワードの意味は何ですか?


2
これは内面的なもののようです。support.oracle.comには、すでにグーグルで検索したものと同じ情報しか表示されないためです。
Mindaugas Riauba 2013

2
これはXMLTYPEデータ型のクエリ用であると99%確信していますが、relationalDBドキュメントを検索するのは非常に難しいため、参照を見つけることができません。
ガイウス

1
@Gaius XMLTYPE関連ではないと思います(テーブルにはXMLTYPE列が含まれていません)。
フランクシュミット2013

1
これが見つかり、役立つかもしれません:forums.oracle.com/thread/1042943?start
0&

undo_retentionパラメーターを変更します
user3556458

回答:


1

それは不活性であるように見えます。XE 11でこれをテストしたところ、何も実行されないことがわかりました。

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

これは、パイプライン化された関数の今日のTABLE関数に対する非推奨のエイリアスだったと思いますが、これを説明する参照が見つかりません。


0

このブログ記事によると、特定のヒントRELATIONALはクエリオプティマイザーに

... RELATIONAL関数と同様に、オブジェクトをリレーショナルテーブルに変換します...

Oracleのコミュニティにおける第二の記事は、と述べています

RELATIONALヒントにより、Oracleはオブジェクトデータのネストを解除し、オブジェクトではなく属性データ自体を挿入します。使用されるヒントはOracleでのみ使用できます-そのため、それらは文書化されていません...

ドキュメントに記載されていないクエリヒントを内部で使用しているときに、ORA-01555エラーによって公開されている、長時間実行されるクエリの問題だと思います。


クエリヒントは、/ *コメントブロック* /にネストされます。これは別のようです。
デュレット

0

デュレットによって示されるように、これは役に立たないキャストです。ほとんどのテーブルはRELATIONALであり、それがデフォルトです。ただし、OracleはOBJECTテーブルもサポートしています(OracleのCREATE TABLEドキュメントの構文を参照)。これは、内部構文の理由を説明しています。クエリでRELATIONALを使用する理由はありませんが、失敗する理由もありません。ORA-01555の一般的な修正に集中する必要があります。ORA-01555は通常、UNDOセグメントがデータベースの変更率を処理するには不十分であることを意味します。

このエラーをオンデマンドで再現できますか?問題のクエリは失敗する前にどのように実行されますか?または、「このエラーの原因となったSQLを追跡するにはどうすればよいですか?」

また、Oracleのバージョンとパッチレベルを指定していません。


2
もちろん、問題はほぼ6年前のものであることがわかります。
mustaccio

私はORA-01555を修正することに興味がありませんでした(私の質問で述べたように、その方法を知っています)。私は奇妙なRELATIONAL関数呼び出し/構文に興味を持っていましたが、私の好奇心は何年にもわたって衰えてきました:-)
フランク・シュミット

1
この質問に対するフィードバックが不要になった場合は、それを削除するか、回答を受け入れることができます。スタック交換がこの質問に未回答であると考える限り、それは人々に助けを求めることを続けます。
ゴードンホッパー

-3

「下のSQLステートメントによって引き起こされるORA-01555」の下の行は、UNDOをスワップさせるSQLステートメントです。

したがって、RELATIONALはOracleのものではなく、ユーザーが作成したオブジェクトです。これは、owner.tableパラメータを持つ関数です。


2
それがユーザーによって作成された関数である場合、それはDBA_OBJECTSに存在すべきではありませんか?
フランクシュミット2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.