问题描述
我的问题已经在
https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9533980100346684832
无论如何,我不明白为什么我可以使用FOPEN在该目录中创建一个文件,为什么可以复制它,为什么可以删除它
但不能FRENAME
我可以做所有的操作,写,读一切 ..
这可能是Oracle在2个安装的网络目录之间的错误吗?
https://asktom.oracle.com/pls/apex/f?p=100:11:0::::P11_QUESTION_ID:9533980100346684832
无论如何,我不明白为什么我可以使用FOPEN在该目录中创建一个文件,为什么可以复制它,为什么可以删除它
但不能FRENAME
我可以做所有的操作,写,读一切 ..
这可能是Oracle在2个安装的网络目录之间的错误吗?
专家解答
您可以使用utl_file.frename进行操作,因为它是一个重命名命令,重命名不一定是移动操作。
从MOS 267469.1:
这是预期的行为。虽然这没有记录在 “提供的PL/SQL包和类型引用” 中,但这是一个限制。UTL_FILE.FRENAME在covers下调用UNIX rename() 函数。Unix rename() 将无法重命名来自不同文件系统的文件。
这将取决于底层操作系统在给出重命名请求时做什么。
例如,我在Windows上这样做
所以我可以在一个驱动器和几个本地驱动器中重命名。
然后我在VirtualBox上使用Linux进行了此操作,从本地到父操作系统安装的驱动器进行了交谈
所以
-本地到本地重命名很好
-远程安装到远程安装重命名很好
-本地重命名到远程安装不是
作为解决方法,您需要复制然后删除。
从MOS 267469.1:
这是预期的行为。虽然这没有记录在 “提供的PL/SQL包和类型引用” 中,但这是一个限制。UTL_FILE.FRENAME在covers下调用UNIX rename() 函数。Unix rename() 将无法重命名来自不同文件系统的文件。
这将取决于底层操作系统在给出重命名请求时做什么。
例如,我在Windows上这样做
SQL> create directory TMP1 as 'c:\tmp'; Directory created. SQL> create directory TMP2 as 'c:\temp'; Directory created. SQL> create directory TMP3 as 'd:\tmp'; Directory created. SQL> host dir > c:\tmp\my_file.dat SQL> host dir c:\tmp\my_file.dat Volume in drive C is OS Volume Serial Number is 9CB0-0212 Directory of c:\tmp 14/03/2017 11:15 AM 1,328 my_file.dat 1 File(s) 1,328 bytes 0 Dir(s) 255,950,286,848 bytes free SQL> exec utl_file.frename('TMP1','my_file.dat','TMP2','my_file2.dat', TRUE); PL/SQL procedure successfully completed. SQL> host dir c:\temp\my_file2.dat Volume in drive C is OS Volume Serial Number is 9CB0-0212 Directory of c:\temp 14/03/2017 11:15 AM 1,328 my_file2.dat 1 File(s) 1,328 bytes 0 Dir(s) 255,950,290,944 bytes free SQL> host dir > d:\tmp\my_file3.dat SQL> host dir d:\tmp\my_file3.dat Volume in drive D is TOSH2TB Volume Serial Number is 92F6-7EDE Directory of d:\tmp 14/03/2017 11:16 AM 1,328 my_file3.dat 1 File(s) 1,328 bytes 0 Dir(s) 448,014,528,512 bytes free SQL> exec utl_file.frename('TMP3','my_file3.dat','TMP3','my_file4.dat', TRUE); PL/SQL procedure successfully completed. SQL> host dir d:\tmp\my_file4.dat Volume in drive D is TOSH2TB Volume Serial Number is 92F6-7EDE Directory of d:\tmp 14/03/2017 11:16 AM 1,328 my_file4.dat 1 File(s) 1,328 bytes 0 Dir(s) 448,014,528,512 bytes free SQL> host dir c:\temp\my_file2.dat Volume in drive C is OS Volume Serial Number is 9CB0-0212 Directory of c:\temp 14/03/2017 11:15 AM 1,328 my_file2.dat 1 File(s) 1,328 bytes 0 Dir(s) 255,950,290,944 bytes free SQL> exec utl_file.frename('TMP2','my_file2.dat', 'TMP3','my_file5.dat', TRUE); PL/SQL procedure successfully completed. SQL> host dir d:\tmp\my_file5.dat Volume in drive D is TOSH2TB Volume Serial Number is 92F6-7EDE Directory of d:\tmp 14/03/2017 11:15 AM 1,328 my_file5.dat 1 File(s) 1,328 bytes 0 Dir(s) 448,014,524,416 bytes free复制
所以我可以在一个驱动器和几个本地驱动器中重命名。
然后我在VirtualBox上使用Linux进行了此操作,从本地到父操作系统安装的驱动器进行了交谈
SQL> create directory TMP1 as '/tmp'; Directory created. SQL> create directory TMP2 as '/media/sf_C_DRIVE/tmp'; Directory created. SQL> exec utl_file.frename('TMP1','my_file.dat','TMP2','my_file2.dat', TRUE); BEGIN utl_file.frename('TMP1','my_file.dat','TMP2','my_file2.dat', TRUE); END; * ERROR at line 1: ORA-29292: file rename operation failed ORA-06512: at "SYS.UTL_FILE", line 348 ORA-06512: at "SYS.UTL_FILE", line 1290 ORA-06512: at line 1 SQL> exec utl_file.frename('TMP1','my_file.dat','TMP1','my_file2.dat', TRUE); PL/SQL procedure successfully completed. SQL> exec utl_file.frename('TMP2','remote_file.dat','TMP2','remote_file2.dat', TRUE); PL/SQL procedure successfully completed.复制
所以
-本地到本地重命名很好
-远程安装到远程安装重命名很好
-本地重命名到远程安装不是
作为解决方法,您需要复制然后删除。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
601次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
586次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
494次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
478次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
462次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
439次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
437次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
426次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
371次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
360次阅读
2025-04-15 14:48:05