Oracle的PDB数据库创建DIRECTORY时遇到ORA-65254问题及解决方法

 更新时间:2023年06月09日 08:31:33   作者:潇湘隐者  
这篇文章主要介绍了Oracle的PDB数据库创建DIRECTORY时遇到ORA-65254问题,本文给大家分享完美解决方案,需要的朋友可以参考下

在Oracle 19c多租户环境的PDB数据库下面创建一个DIRECTORY时,遇到了“ORA-65254: invalid path specified for the directory”,下面简单演示一下所遇到的这个案例

SQL> CREATE PLUGGABLE DATABASE PDB6 ADMIN USER pdbadmin IDENTIFIED BY hqLDJ7236#4U8JHD
  2  STORAGE (MAXSIZE 1G MAX_SHARED_TEMP_SIZE 2G)
  3  DEFAULT TABLESPACE TEST DATAFILE '/db19c/oracle_data/PDB6/test_data_01.dbf' SIZE 100M
  4  PATH_PREFIX ='/db19c/oracle_data/PDB6/'
  5  FILE_NAME_CONVERT=('/db19c/CTEST/pdbseed/','/db19c/oracle_data/PDB6/');
Pluggable database created.
SQL> 
SQL> alter pluggable database pdb6 open;
Pluggable database altered.
SQL> alter session set container=PDB6;
Session altered.
SQL> CREATE OR REPLACE DIRECTORY EXP_DUMP AS '/db19c/exp_dump';
CREATE OR REPLACE DIRECTORY EXP_DUMP AS '/db19c/exp_dump'
*
ERROR at line 1:
ORA-65254: invalid path specified for the directory
##注意,创建DIRECTORY时,这个目录/db19c/exp_dump已经存在。
SQL> 
SQL> !oerr ora 65254
65254, 00000, "invalid path specified for the directory"
// *Cause:   An absolute path was used in the CREATE DIRECTORY statement. 
//           Since the PDB has set the PATH_PREFIX property, only relative
//           path is allowed for directories.
// *Action:  Specify a relative path and reissue the statement.
//
SQL>

如上所示,数据库提示,出现这个错误的原因在于创建PDB的语句中指定了PATH_PREFIX参数,创建目录DIRECTORY时只能使用相对路径,而不能使用绝对路径。其实创建PDB时,如果设置了PATH_PREFIX参数,那么这个PDB中的所有对象只能限定在PATH_PREFIX指定的路径下,,只能指定基于PATH_PREFIX的相对路径。官方文档关于这个的解释如下所示:

Restrictions on PDB File Locations

The PATH_PREFIX clause of the CREATE PLUGGABLE DATABASE statement ensures that all directory object paths associated with the PDB are restricted to the specified directory or its subdirectories. This clause also ensures that the following files associated with the PDB are restricted to the specified directory: the Oracle XML repository for the PDB, files created with a CREATE PFILE statement, and the export directory for Oracle wallets. Use this clause when you want to ensure that a PDB's files reside in a specific directory and its subdirectories. You can use this clause to specify one of the following options:

An absolute path that is used as a prefix for all file paths associated with the PDB.

The name of a directory object that exists in the CDB root (CDB$ROOT). The directory object points to the absolute path to be used for PATH_PREFIX.

NONE to indicate that there are no restrictions for the file paths. Omitting the PATH_PREFIX clause is the same as specifying NONE.

After a PDB is created, its PATH_PREFIX setting cannot be modified.

也就是说,如果我要创建一个目录,只能使用相对路径的目录,而且必须在PATH_PREFIX指定的/db19c/oracle_data/PDB6/下面,想指定到其他路径,例如/db19c/exp_dump.此时就会抛出ORA-65254错误。

解决方法

SQL> CREATE OR REPLACE DIRECTORY EXP_DUMP AS 'exp_dump';
Directory created.
SQL> SET LINESIZE 1080;
SQL> COL OWNER FOR A16;
SQL> COL DIRECTORY_NAME FOR A30;
SQL> COL DIRECTORY_PATH FOR A64;
SQL> SELECT * FROM DBA_DIRECTORIES;
OWNER      DIRECTORY_NAME       DIRECTORY_PATH                 ORIGIN_CON_ID
------- ------------------ ----------------------------------- -------------
SYS              EXP_DUMP   /db19c/oracle_data/PDB6/exp_dump   

关于这种问题,如果在创建PDB数据库时,不设定参数PATH_PREFIX就不会遇到这个问题。一般没有特殊要求,也不用设定参数PATH_PREFIX。

到此这篇关于Oracle的PDB数据库创建DIRECTORY时遇到ORA-65254的文章就介绍到这了,更多相关Oracle的PDB数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • oracle 监听 lsnrctl 命令 (推荐)

    oracle 监听 lsnrctl 命令 (推荐)

    这篇文章主要介绍了oracle 监听 lsnrctl 命令 ,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-03-03
  • Oracle12c的数据库向11g导进的方法

    Oracle12c的数据库向11g导进的方法

    这篇文章主要介绍了 Oracle12c的数据库向11g导进的方法的相关资料,需要的朋友可以参考下
    2016-03-03
  • Oracle创建表语句详解

    Oracle创建表语句详解

    这篇文章主要介绍了Oracle创建表语句,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Oracle数据库下载与安装的完整步骤

    Oracle数据库下载与安装的完整步骤

    这篇文章主要给大家介绍了关于Oracle数据库下载与安装的相关资料,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • oracle中fdisk导致的ASM磁盘数据丢失的解决方法

    oracle中fdisk导致的ASM磁盘数据丢失的解决方法

    oracle中fdisk 导致的ASM磁盘数据丢失 有需要的朋友可参考一下
    2012-10-10
  • Oracle中的translate函数用法小结

    Oracle中的translate函数用法小结

    translate提供了与replate函数相关的功能, replace让你用一个字符串替换另一个字符串,以及删除字符串,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-12-12
  • oracle sequence语句重置方介绍

    oracle sequence语句重置方介绍

    在开发过程中,可能会用到oracle sequence语句,本文以oracle sequence语句如何重置进行介绍,需要的朋友可以参考下
    2012-11-11
  • Oracle CBO优化模式中的5种索引访问方法浅析

    Oracle CBO优化模式中的5种索引访问方法浅析

    这篇文章主要介绍了Oracle CBO优化模式中的5种索引访问方法浅析,包含索引唯一扫描、索引范围扫描、索引全扫描、索引跳跃扫描、索引快速全扫描等内容,需要的朋友可以参考下
    2014-07-07
  • Oracle数据远程连接的四种设置方法和注意事项

    Oracle数据远程连接的四种设置方法和注意事项

    Oracle数据库的远程连接可以通过多种方式来实现,本文我们主要介绍四种远程连接的方法和注意事项,并通过示例来说明,接下来我们就开始介绍
    2014-04-04
  • Oracle解锁的方式介绍

    Oracle解锁的方式介绍

    通过SQL查询可以查看到被锁住的表AA以及Sid,Serial#;使用DBA身份,通过执行 alter system kill session 'SID,SERIAL#';即可解锁
    2013-06-06

最新评论