Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment résoudre un problème avec Oracle DBMS_LOB

À partir de la documentation à laquelle vous avez lié :

donc GRUPO doit correspondre à 'DIR_XML' plutôt que 'C:\XMLS' . Cela est illustré dans l'exemple de cette documentation. (Il existait un ancien mécanisme d'objet pré-répertoire basé sur un chemin stocké en tant que paramètre de la base de données, mais c'était moins sécurisé...)

Si tout ce que vous avez est le chemin, vous pouvez rechercher le nom du répertoire :

select directory_name from all_directories where directory_path = 'C:\XMLS'

en gardant à l'esprit que les chemins de répertoire ne doivent pas nécessairement être uniques, vous devrez donc peut-être gérer les doublons.

Mais comme @Matthew l'a déjà expliqué, et comme le dit la documentation (soulignement ajouté) :

La base de données ne peut voir que les fichiers de son propre système de fichiers - local ou partagé - et non ceux des systèmes de fichiers clients. Si vous exécutez également la base de données localement, il n'y a pas de différence (bien que les autorisations de répertoire et de fichier soient toujours importantes). Si vous accédez à une base de données distante, elle ne peut pas voir votre lecteur C :client, et si vous donnez le nom de l'objet de répertoire, vous obtiendrez toujours quelque chose comme :

ORA-22288: file or LOB operation FILEOPEN failed
No such file or directory

Vous devez placer vos fichiers XML dans un répertoire sur le serveur de base de données auquel le compte du système d'exploitation a accès et créer un objet de répertoire qui pointe vers cet emplacement sur le serveur ; puis faites référence au nom de l'objet répertoire, et non au chemin du système de fichiers sous-jacent.