1.现象
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 READ WRITE NO
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
SQL> CREATE PLUGGABLE DATABASE salespdb
2 ADMIN USER salesadm IDENTIFIED BY password
3 ROLES = (dba)
4 DEFAULT TABLESPACE sales
5 DATAFILE '/opt/oracle/dbs/salespdb/sales01.dbf' SIZE 250M AUTOEXTEND ON
6 FILE_NAME_CONVERT = ('/opt/oracle/dbs/pdbseed/',
'/opt/oracle/dbs/salespdb/')
7 8 STORAGE (MAXSIZE 2G)
PATH_PREFIX = '/opt/oracle/dbs/salespdb/'; 9
CREATE PLUGGABLE DATABASE salespdb
*
ERROR at line 1:
ORA-65005: missing or invalid file name pattern for file -
/opt/oracle/oradata/ORCLCDB/pdbseed/system01.dbf
2.分析路径
检查file_name_convert和db_create_file_dest参数
SQL> set linesize 1000
SQL> show parameter file_name_convert
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_file_name_convert string
log_file_name_convert string
pdb_file_name_convert string
SQL> show parameter db_create_file_dest
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
db_create_file_dest string
3.解决办法
file_name_convert参数官方文档的介绍如下:
About the Names and Locations of Files for the CDB Root and PDB$SEED
To create the CDB, Oracle Database must know the names and locations of the files for the CDB root and PDB$SEED.
After the CREATE DATABASE statement completes successfully, you can use PDB$SEED and its files to create new PDBs. You cannot modify the PDB seed after it is created.
You must specify the names and locations of the files for PDB$SEED in one of the following ways:
1.The ENABLE PLUGGABLE DATABASE SEED FILE_NAME_CONVERT clause of CREATE DATABASE
2.Oracle Managed Files
3.The PDB_FILE_NAME_CONVERT initialization parameter
如果不启用该参数,则在创建可插拔数据库实例时候,这个路径必须是模板路径(通过cdb_data_files查到模板文件路径)。
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> select file_name from cdb_data_files;
FILE_NAME
----------------------------------------------------------------------------------------------------
/opt/oracle/oradata/ORCLCDB/salespdb/system01.dbf
/opt/oracle/oradata/ORCLCDB/salespdb/sysaux01.dbf
/opt/oracle/oradata/ORCLCDB/salespdb/undotbs01.dbf
/opt/oracle/dbs/salespdb/sales01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/system01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/sysaux01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/undotbs01.dbf
/opt/oracle/oradata/ORCLCDB/ORCLPDB1/users01.dbf
/opt/oracle/oradata/ORCLCDB/users01.dbf
/opt/oracle/oradata/ORCLCDB/undotbs01.dbf
/opt/oracle/oradata/ORCLCDB/system01.dbf
FILE_NAME
----------------------------------------------------------------------------------------------------
/opt/oracle/oradata/ORCLCDB/sysaux01.dbf
12 rows selected.
SQL> CREATE PLUGGABLE DATABASE salespdb
ADMIN USER salesadm IDENTIFIED BY password
ROLES = (dba)
2 3 4 DEFAULT TABLESPACE sales
DATAFILE '/opt/oracle/dbs/salespdb/sales01.dbf' SIZE 250M AUTOEXTEND ON
FILE_NAME_CONVERT = ('/opt/oracle/oradata/ORCLCDB/pdbseed',
'/opt/oracle/oradata/ORCLCDB/salespdb/')
STORAGE (MAXSIZE 2G)
PATH_PREFIX = '/opt/oracle/dbs/salespdb/'; 5 6 7 8 9
Pluggable database created.
SQL> alter pluggable database salespdb open read write;
Pluggable database altered.
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 READ WRITE NO
4 SALESPDB READ WRITE NO
小结:
原理通透,思路清晰,操作娴熟。
简单问题搜百度,搞不定则查看官方文档对该参数的介绍,这样事半功倍!




