sql >> Database >  >> RDS >> Oracle

Hoe een probleem met Oracle DBMS_LOB op te lossen?

Van de documentatie waarnaar u hebt gelinkt :

dus GRUPO zou moeten evalueren naar 'DIR_XML' in plaats van 'C:\XMLS' . Dat blijkt uit het voorbeeld in die documentatie. (Er was een oud pre-directory-objectmechanisme gebaseerd op een pad dat was opgeslagen als een databaseparameter, maar dat was minder veilig...)

Als alles wat je hebt het pad is, kun je de mapnaam opzoeken:

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

rekening houdend met het feit dat directorypaden niet uniek hoeven te zijn, dus het kan zijn dat u te maken krijgt met duplicaten.

Maar zoals @Matthew al heeft uitgelegd, en zoals de documentatie zegt (nadruk toegevoegd):

De database kan alleen bestanden zien op zijn eigen bestandssysteem - lokaal of gedeeld - en niet die op client bestandssystemen. Als u de DB ook lokaal uitvoert, is er geen verschil (hoewel directory- en bestandsmachtigingen er nog steeds toe doen). Als u een externe DB benadert, kan deze uw client C:-station niet zien, en als u de directory-objectnaam geeft, krijgt u nog steeds zoiets als:

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

U moet uw XML-bestanden in een map op de DB-server plaatsen waartoe het besturingssysteemaccount toegang heeft, en een mapobject maken dat naar die locatie op de server verwijst; en verwijs dan naar de objectnaam van de directory, niet naar het onderliggende bestandssysteempad.



  1. De geschiedenis van databases

  2. Hoe SEC_TO_TIME() werkt in MariaDB

  3. Een nummer "unhexen" in MySQL

  4. Skip and Take werkt niet met MySQL EntityFrameworkCore