oracle12c 有一个很大的变动就是引入了pdb可插入数据库,而且在cdb中只能创建c##或者C##开头的用户,只有在pdb数据库中才能创建我们习惯性命名的用户,oracle称之为Local User,前者称之为Common User。

一、问题

在pdb中新建的用户,发现无法普通登录,需要sysdba权限才可登录

oracle 12c及以上 解决pdb中用户无法普通登录问题_用户登录

必须以超级管理员 sysdba进行登录才行 

oracle 12c及以上 解决pdb中用户无法普通登录问题_PDB_02

而使用超级管理员登录后,虽然密码输入的虽然是pdb用户的密码,但登陆的不是刚创建的用户,而是sys用户

oracle 12c及以上 解决pdb中用户无法普通登录问题_PDB_03

二、解决

为什么就是普通用户,却无法普通登录呢?登录命令也没错呀

可以分析发现登录命令是默认了一些参数的,如ip、port、实例名,ip和port肯定是固定的,那么就是实例名的问题啦

那就查看下实例名信息吧

使用超级用户登录,然后查看下实例名信息

select name,pdb from v$services;
  • 1.

oracle 12c及以上 解决pdb中用户无法普通登录问题_用户登录_04

会发现ORCLPDB的实例名是:orclpdb,而不是默认的orcl,PDB插拔式数据库相当于一个独立的数据库,是一个独立的实例

那么用实例名orclpdb,登录一下看看呢

sqlplus PDBROOTUSER@localhost:1521/orclpdb
  • 1.

输入口令登录

oracle 12c及以上 解决pdb中用户无法普通登录问题_PDB_05

登录成功啦,而且登录用户是对的