使用Oracle 12c过程中遇到的错误来理解12c的新特性

一、背景

  • 安装好Oracle 12c数据库后还和使用11g时那样去创建表空间、用户名、导入表,但是从创建用户名开始就出现问题。后来一查才了解到,Oracle 12c引入了CDB(ContainerDatabase,数据库容器)和PDB(Pluggable Database,可插拔数据库)新的特性,所有的问题出现都是因为不理解新特性导致的。

二、遇到的问题

  1. 创建新用户时,提示:ORA-65096:公共用户名或角色名无效
  2. 创建新用户时,提示:ORA-01109: 数据库未打开
  3. impdp导入时,提示:ORA-39083: 对象类型 USER:"UAMS_1" 创建失败, 出现错误:ORA-65096: 公用用户名或角色名无效    以及    ORA-39083: 对象类型 USER:"UAMS_1" 创建失败, 出现错误:ORA-01917: 用户或角色 'USER' 不存在
  4. impdp导入时,提示:UDI-12154: 操作产生了 ORACLE 错误 12154    ORA-12154: TNS: 无法解析指定的连接标识符
  5. impdp导入时,提示:ORA-39002: 操作无效    ORA-39070: 无法打开日志文件    ORA-39087: 目录名 DMP 无效

三、出现的原因

  • 上述问题出现的原因都是因为12c默认打开的CDB数据库,你不手动切换到PDB数据库的话,你所创建的表空间、用户名、impdp时使用的文件目录都在CDB数据库下。我是在碰到「ORA-65096:公共用户名或角色名无效」第一个问题时,通过创建本地用户解决的问题,导致后续所有的操作都出现了问题。

四、解决办法(与第二步问题相对应)

  1. 原因:我们使用sys用户默认登录的是CDB数据库,CDB数据库只能创建公共用户,而Oracle规定公共用户命名是有规范的:以 c## 或者 C## 开头,但是本地用户没有此限制。我采取的解决办法是创建了本地用户。
  2. 原因:我理解12c 的orclpdb数据库实例默认是关闭的。切换到本地数据库后然后打开它再重新新建本地用户。切换命令:alter session set container=ORCLPDB;  打开命令:alter pluggable database ORCLPDB open; 。
  3. 原因:在orcl实例下找不到这些用户,需要将impdp命令中@后的orcl参数改为orclpdb。
  4. 原因:没有给PDB数据库配置实例名。找到tnsnames.ora文件,给PDB数据库配置个实例名,不能与orcl相同。
    1. 注意:格式严格按照orcl实例名的写,第一行开始不能有空格
  5. 原因:之前创建的dmp目录是在CDB数据库下创建的。切换到orclpdb本地数据库下重新创建dmp目录。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值