解决方案:检查并创建目录对象。登录sqlplus,执行SQL> create or replace directory DIR_DATA as '/u01/app/oracle/oradata/'; SQL> grant read,write on directory DIR_DATA to 用户名; 然后重启数据库实例。
步骤1:验证目录权限
首先,登录oracle用户,执行ls -ld /u01/app/oracle/admin/,确认oracle用户对目录有读写权限。如果没有,chmod 755 /u01/app/oracle/admin/。
网友分享:远程处理方法
远程服务器上,用putty登录oracle用户,su - oracle,然后cd到出错目录,mkdir -p /opt/oracle/diag,chown oracle:oinstall /opt/oracle/diag,之后在数据库端创建directory对象并grant权限。
修复指南
报错ORA-48118: cannot create or access the directory。原因通常是目录不存在或权限不足。解决方案:1. 在OS层面创建目录并设置权限oracle:dba 755。2. 在DB中create directory MY_DIR as '/path/to/dir'; 3. grant read,write on directory MY_DIR to scott;
另一个网友技巧
我用的是alter system set diagnostic_dest='/u01/app/oracle' scope=spfile; 然后shutdown immediate; startup; 解决了ORA-48118,目录列表错误没了。
远程技巧推荐
用expdp全库导出时报ORA-48118,远程处理:在控制台执行find / -name "*oracle*" -type d,找到所有oracle目录,逐一chown -R oracle:oinstall,重启监听和服务。
简单修复
mkdir -p /u01/app/oracle/admin/XE/adump,chown oracle:oinstall /u01/app/oracle/admin/XE/adump,chmod 755 /u01/app/oracle/admin/XE/adump,然后sqlplus / as sysdba,create or replace directory XMLDIR as '/u01/app/oracle/admin/XE/adump';
FAQ
Q: ORA-48118为什么会出现?
A: 通常是因为数据库诊断目录不存在或oracle用户无权限访问。
Q: 如何远程快速修复?
A: SSH登录服务器,创建目录并设置权限,然后在DB创建directory对象。
Q: 重启数据库必要吗?
A: 有时设置spfile后需要重启实例生效。
Q: grant哪些权限?
A: grant read,write on directory DIR to 用户名。