在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,
掃描上面二維碼關注我
如果你真心覺得文章寫得不錯,而且對你有所幫助,那就不妨幫忙“推薦"一下,您的“推薦”和”打賞“將是我最大的寫作動力!
本文著作權歸作者所有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/554738.html
標籤:其他
上一篇:Oracle的PDB資料庫創建DIRECTORY時遇到ORA-65254
下一篇:返回列表
