oracle imp ora-06512,记一次ORA-06512、ORA-29283

一、背景简介

上午应用找来,给了俩错误,错误信息如下ORA-06512: 在 "SYS.UTL_FILE", line 536

ORA-29283: 文件操作无效

以上报错简单来说,就是调用 sys.utl_file 输出文件,但是输出的目录不存在,进一步沟通发现,用户输出的目录是一个挂载的共享的 windows 文件夹,没错,是在 linux 上挂了一个 windows 的文件夹。二、解决过程

首先尝试直接将 windows 上的文件夹挂载上去mount -t cifs 目标机器/目标目录 test -o username=xxxx

但是这样挂载存在一个问题,就是文件的权限为 755 ,而 mount 命令只有 root 才能执行,这意味着 oracle 对文件夹没有写的权限,oracle 输出文件至挂载的 windows 需要写的权限,换用以下挂载方式。mount -t cifs 目标机器/目标目录 test -o username=xxxx,dir_mode=0777,file_mode=0777

至此,文件夹正确挂载好。注意,每个节点都需要挂载三、补充知识1. 关于 oracle 里的文件夹

oracle 数据库并不能直接输出文件到 os 上的文件夹,而是通过创建数据库内部和 os 上的实际文件夹之间的关联输出文件,如create or replace directory test as '/test';

以上命令可在 oracle 数据库内部创建一个名叫 test 的目录,与其实际关联的 os 目录为 /test,要使目录正常可用,os 上必须实际存在这个目录且可用。select * from dba_directories;

以上命令可以查询 oracle 数据库里所有的目录和与之对应的 os 目录。2. 关于挂载

此次问题根本原因在于主机被重启了,而由于挂载需要输入口令,用户并没有将挂载命令写入 /etc/fstab 目录,导致主机重启后未能重新挂上。remoteHost:/目录 /本地目录 nfs intr,hard,bg,vers=3 0 0

以上为 /etc/fstab 中一条。umount /test

卸载的命令,/test 为待卸载的目录mount

df -h

直接输 mount 命令 或者 df -h 可以查看挂载情况。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值