oracle 12c 解决pdb中用户无法登录的问题
oracle12c 有一个很大的变动就是引入了pdb可插入数据库,而且在cdb中只能创建c##或者C##开头的用户,只有在pdb数据库中才能创建我们习惯性命名的用户,oracle称之为Local User,前者称之为Common User。在pdb中新建用户,发现无法直接连接新用户,下面是解决方案:
1.首先进入pdb
alter session set container=orcl;
show con_name;
2.创建新用户,并赋权
create user scott identified by oracle;
grant connect,resource to scott;
3.直接连接新建用户发现无法连接,
直接登录是不可以的:
SQL> conn scott/oracle
ERROR:
ORA-01017: invalid username/password; logon denied
4.通过下面方式解决:
因为CDB和PDB的servicename可能是不一样的,需要先查询pdb的service_name
SQL> select name,pdb from v$services;
NAME PDB
-------------------- --------------------
orcl ORCL
vi tnsnames.ora 编辑tnsnames文件,添加下面内容
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl) 把查询到pdb对应的service_name写到这里
)
)
必须要加上tnsnames的连接串才可以连接用户:
SQL> conn scott/oracle@ORCL
Connected.
SQL> show user
USER is "SCOTT"
连接成功!