12C -- ORA-65005: missing or invalid file name pattern for file

克隆pdb创建新的pdb的时候遇到了以下的错误,具体过程如下文。
数据库版本:12.2.0.1

 

查看已有pdb的tempfile文件

SQL> select name from v$tempfile;

NAME
--------------------------------------------------------------------------------
+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/TEMPFILE/temp.276.947842435

 

查看已有pdb的datafile文件

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/system.274.947842433
+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/sysaux.275.947842433
+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/undotbs1.273.947842433
+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/users.278.947842449
+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/undotbs2.277.947878603

  

创建新的pdb

SQL> create pluggable database abce from o12c1pdb file_name_convert=(
  2  '+data/o12c/25fc2d397af41d70e0524a0f0a0aaeda/datafile/system.274.947842433','+data/o12c/abce/datafile/system01.dbf',
  3  '+data/o12c/25fc2d397af41d70e0524a0f0a0aaeda/datafile/sysaux.275.947842433','+data/o12c/abce/datafile/sysaux01.dbf',
  4  '+data/o12c/25fc2d397af41d70e0524a0f0a0aaeda/datafile/undotbs1.273.947842433','+data/o12c/abce/datafile/undotbs101.dbf',
  5  '+data/o12c/25fc2d397af41d70e0524a0f0a0aaeda/datafile/undotbs2.277.947878603','+data/o12c/abce/datafile/undotbs201.dbf',
  6  '+data/o12c/25fc2d397af41d70e0524a0f0a0aaeda/datafile/users.278.947842449','+data/o12c/abce/datafile/users01.dbf',
  7  '+data/o12c/25fc2d397af41d70e0524a0f0a0aaeda/tempfile/temp.276.947842435','+data/o12c/abce/tempfile/temp01.dbf');
create pluggable database abce from o12c1pdb file_name_convert=(
*
ERROR at line 1:
ORA-65005: missing or invalid file name pattern for file -
+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/system.274.947842433


SQL>

 

创建失败,报错。查了一下MOS,没有发现类似的问题。

在老盖的网站发了一篇文章,不过与本人遇到的问题还是有差别。这里链接一下,也许对大家有用:Oracle 12c:多租户数据库克隆 ORA-01276 错误处理一例

当然,也有人是因为没有加上temp文件导致的,但是与本人遇到的问题还是不符合。

 

最终怀疑是不是大小写的问题,于是把上面从v$tempfile、v$datafile中查看到的name结果直接拷贝在create语句中(保持大小写格式不变),同时要创建的pdb的文件路径也以类似的方式(路径以大写的格式),再次执行。居然创建成功了!!!

SQL> create pluggable database abce from o12c1pdb file_name_convert=(
  2      '+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/system.274.947842433','+DATA/O12C/ABCE/DATAFILE/system01.dbf',
  3      '+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/sysaux.275.947842433','+DATA/O12C/ABCE/DATAFILE/sysaux01.dbf',
  4      '+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/undotbs1.273.947842433','+DATA/O12C/ABCE/DATAFILE/undotbs101.dbf',
  5      '+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/undotbs2.277.947878603','+DATA/O12C/ABCE/DATAFILE/undotbs201.dbf',
  6      '+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/DATAFILE/users.278.947842449','+DATA/O12C/ABCE/DATAFILE/users01.dbf',
  7      '+DATA/O12C/25FC2D397AF41D70E0524A0F0A0AAEDA/TEMPFILE/temp.276.947842435','+DATA/O12C/ABCE/TEMPFILE/temp01.dbf');

Pluggable database created.

SQL> 

  

 

转载于:https://www.cnblogs.com/abclife/p/7091554.html

<think>嗯,用户遇到了ORA-65096错误,需要解决无效的通用用户名角色名称的问题。首先,我得回忆一下Oracle数据库的相关知识。这个错误通常发生在12c及以上版本,特别是当用户尝试创建通用用户角色时没有正确的权限命名格式不对。 根据引用[2],创建用户时必须选择正确的容器,如果是本地用户,需要先切换到特定的可插拔数据库(PDB)。通用用户(Common User)的名字需要以C##c##开头,否则会触发这个错误。所以,用户可能没有使用正确的前缀,者没有在正确的容器下操作。 接下来,可能的解决方案包括:1. 检查当前是否在CDB$ROOT容器下创建通用用户,如果是,确保用户名以C##开头。2. 如果是要在PDB中创建本地用户,需要先切换到目标PDB,然后创建不带前缀的用户。3. 修改用户名格式,添加C##前缀。此外,权限问题也可能导致错误,需要确保用户有CREATE USER的权限,并且使用ALTER SESSION切换容器。 可能还需要检查Oracle的版本,确认是否是12c更高,因为这个问题主要出现在这些版本中。用户可能需要使用ALTER SESSION SET CONTAINER = pdbname;来切换到PDB,然后再创建用户。同时,如果用户确实需要创建通用用户,必须确保命名符合规范,并且有足够的权限。 另外,引用[2]还提到,如果希望为某个PDB创建本地用户,必须先选择该PDB。所以,用户可能错误地在根容器下创建本地用户,而没有切换到对应的PDB。需要指导用户如何查看当前容器,以及如何切换容器。例如,使用SHOW CON_NAME查看当前容器,再用ALTER SESSION切换。 总结下来,解决步骤应该是:确认要创建的是通用用户还是本地用户,检查命名是否符合规范,切换到正确的容器,确保有足够的权限。同时,提供具体的SQL命令示例,帮助用户一步步操作。此外,提醒用户注意版本差异,避免在错误的上下文中执行命令。</think>### ORA-65096错误解决方案 **错误原因** ORA-65096表示在Oracle 12c及以上版本中尝试创建通用用户(Common User)角色时,未遵循命名规范操作环境不正确。具体原因包括: 1. **命名格式错误**:通用用户名需以`C##``c##`开头(例如`C##test_user`)[^2]。 2. **容器环境错误**:未在正确的容器(CDBPDB)中操作。通用用户需在根容器(CDB$ROOT)中创建,而本地用户需在可插拔数据库(PDB)中创建。 3. **权限不足**:缺少`CREATE USER`权限未启用`ALTER SESSION`切换容器。 --- ### 分步解决方案 1. **确认操作目标** - 若需创建**通用用户**(跨所有PDB),必须使用`C##`前缀。 - 若需创建**本地用户**(仅限单个PDB),需先切换到目标PDB。 2. **检查当前容器** 执行以下SQL确认当前容器环境: ```sql SELECT SYS_CONTEXT('USERENV', 'CON_NAME') AS current_container FROM DUAL; ``` 3. **通用用户创建方法** - 确保当前在根容器(CDB$ROOT): ```sql ALTER SESSION SET CONTAINER = CDB$ROOT; ``` - 创建用户时添加`C##`前缀: ```sql CREATE USER C##test_user IDENTIFIED BY password; ``` 4. **本地用户创建方法** - 切换到目标PDB(例如`PDBORCL`): ```sql ALTER SESSION SET CONTAINER = PDBORCL; ``` - 创建不带前缀的用户: ```sql CREATE USER local_user IDENTIFIED BY password; ``` 5. **权限验证** 确保当前用户拥有`CREATE USER`权限: ```sql GRANT CREATE USER TO current_user; ``` --- ### 示例操作流程 ```sql -- 切换到PDB ALTER SESSION SET CONTAINER = ORCLPDB1; -- 创建本地用户 CREATE USER app_user IDENTIFIED BY Welcome123; -- 授权并分配表空间 GRANT CONNECT, RESOURCE TO app_user; ALTER USER app_user DEFAULT TABLESPACE users QUOTA UNLIMITED ON users; ``` --- ### 相关问题 1. **如何查看所有PDB的列表?** ```sql SELECT NAME, OPEN_MODE FROM V$PDBS; ``` 2. **ORA-65049错误如何解决?** 该错误通常因未切换到PDB直接创建本地用户导致,需先执行`ALTER SESSION SET CONTAINER`。 3. **通用用户与本地用户的权限差异?** 通用用户可跨多个PDB管理对象,而本地用户仅限单个PDB。权限分配需通过`COMMON`关键字指定(例如`GRANT CREATE SESSION TO C##admin CONTAINER=ALL;`)。 --- **引用说明** [^1]: ORA-06508错误通常与程序单元缺失相关,与本问题无直接关联。 : Oracle官方文档明确要求通用用户需以`C##`开头,并在正确容器中操作。 [^3]: 部分Oracle错误可通过版本兼容性调整解决,但ORA-65096需严格遵循命名规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值