Nous avons récemment obtenu quelques erreurs dans notre journal d'alertes du formulaire
301598: Tue Jul 16 03:58:29 2013
301599: ORA-01555 caused by SQL statement below
301600: SELECT * FROM RELATIONAL(<owner>.<table>)
Je sais comment gérer les erreurs ORA-01555, mais je n'ai jamais rencontré quelque chose comme SELECT * FROM RELATIONAL
. J'ai regardé DBA_OBJECTS
dedans, mais il n'y a pas une telle fonction / opérateur / quoi que ce soit.
La recherche de «SELECT * FROM RELATIONAL» sur Google n'a renvoyé que des questions liées à ORA-01555.
Donc, ma question est: Quelle est la signification du mot-clé RELATION ici?
relational
est évident que c'est un mot très difficile à rechercher dans la documentation DB.Réponses:
Il semble être inerte. J'ai testé cela sur XE 11 et j'ai constaté que cela ne faisait rien.
la source
Je crois que c'était un alias obsolète de la fonction TABLE d'aujourd'hui pour les fonctions en pipeline, mais maintenant je ne trouve pas ma référence qui le dit.
la source
Selon cet article de blog, l'indication spécifique
RELATIONAL
demande à l'Optimiseur de requête deUn deuxième article dans la communauté Oracle déclare que
Je pense que c'est juste un problème de requête longue, qui est exposée par l'erreur ORA-01555 lors de l'utilisation en interne d'un indice de requête, qui n'est pas documenté.
la source
Comme l'a démontré durette, ce casting est inutile. La plupart des tableaux sont RELATIONNELS, et c'est la valeur par défaut. Cependant, Oracle prend également en charge les tables OBJECT (voir la syntaxe dans les documents CREATE TABLE d'Oracle ), ce qui explique la raison de la syntaxe interne. Il n'y a aucune raison d'utiliser RELATIONAL dans une requête, mais il n'y a également aucune raison pour qu'elle échoue. Vous devez vous concentrer sur les correctifs généraux pour ORA-01555. ORA-01555 signifie généralement que vos segments UNDO ne sont pas suffisants pour gérer le taux de changement dans votre base de données.
Pouvez-vous reproduire cette erreur sur demande? Comment le journal s'exécute-t-il avant l'échec? Ou est votre vraie question, "Comment puis-je retrouver le SQL qui a provoqué cette erreur?"
De plus, vous n'avez pas spécifié votre version Oracle et votre niveau de correctif.
la source
La ligne ci-dessous "ORA-01555 provoqué par l'instruction SQL ci-dessous" est l'instruction SQL provoquant l'échange de l'annulation.
Donc RELATIONNEL n'est pas une chose Oracle, c'est un objet créé par un utilisateur. C'est une fonction avec le paramètre owner.table.
la source