ORACLE 12C创建scott用户无法连接到PDB的问题

由于我安装的ORACLE
12C中是不自带scott这个用户的,所以我需要用到测试环境来做数据库测试的时候,还需要手动创建一个scoot用户。
默认登陆SQLPLUS的sysdba是在CDB中。
因为CDB环境中创建的用户又太通用了,所以不准备用c##USER_NAME这种方式来创建CDB的scott用户,所以我需要查看一下我的PDB名称都有哪些:

SQL> show pdbs;

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 ORCLPDB			  READ WRITE YES
SQL> 

这里需要注意的是,你的PDB是否正常开启了,如果OPEN下显示的不是READ WRITE 而是 MOUNTED:

SQL> show pdbs;

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
	 2 PDB$SEED			  READ ONLY  NO
	 3 ORCLPDB			  MOUNTED
SQL> 

需要将PDB开启:SQL> alter pluggable database all open;
开启了PDB之后使用我们登陆的SYS用户从CDB切换到PDB

SQL> alter session set container=ORCLPDB;

会话已更改。

查看当前所在的名称:

SQL> show con_name;

CON_NAME
------------------------------
ORCLPDB

所在的实例为上面查到的PDB实例,在ORCLPDB内创建scott用户:

SQL> CREATE USER scott IDENTIFIED BY tiger
2  DEFAULT TABLESPACE users
3  TEMPORARY TABLESPACE temp
4  ACCOUNT UNLOCK;

创建完成scott用户后查看一下是否有这个用户:

SQL> select username from dba_users;

USERNAME
--------------------------------------------------------------------------------
SYSKM
ORACLE_OCM
SYS$UMF
SCOTT		--已经创建完成了scott用户
SYSDG
SPATIAL_CSW_ADMIN_USR

已选择 39 行。

为刚创建的scott用户赋予使用权限:

SQL> grant connect,resource,unlimited tablespace to scott;

Grant succeeded.

已经创建完成了scott用户,但是目前我们还不能以scott用户登陆我们的数据库,因为我们还没有写本地连接接口配置。
在oracle安装目录下的/product/12/db_1/network/admin/tnsnames.ora文件内增加:

ORCL =								--这里写CDB实例名称
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orclpdb)		--这里写你的PDB实例名称
    )
  )

写完之后再登陆sqlplus 还是会提示错误,但是提示的不会是用户错误这个异常了,而是没有权限:

SQL> conn scott/tiger@orclpdb;
ERROR:
ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用


警告: 您不再连接到 ORACLE。
SQL> show user;
USER""
SQL>

需要用sys用户来给scott用户赋予警告里提示的RESTRICTED SESSION权限:
在pdb(使用上面说过的alter session进入)中查看一下scott所拥有的权限

SQL> select * from dba_role_privs where grantee='SCOTT';

GRANTEE                                                                                                                          GRANTED_ROLE                                                                                                                     ADM DEL DEF COM INH
-------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------- --- --- --- --- ---
SCOTT                                                                                                                            RESOURCE                                                                                                                         NO  NO  YES NO  NO 
SCOTT                                                                                                                            CONNECT                                                                                                                          NO  NO  YES NO  NO

SQL> select grantee,privilege from dba_sys_privs where grantee='SCOTT';

GRANT PRIVILEGE                               
----- ----------------------------------------
SCOTT UNLIMITED TABLESPACE                    

发现scott用户确实没有RESTRICTED SESSION权限,需要赋予scott用户RESTRICTED SESSION权限:

SQL> GRANT RESTRICTED SESSION TO scott;

Grant succeeded.

这时我们再使用scott用户登陆数据库PDB就可以正常进入了:

[oracle@localhost ~]$ sqlplus scott/tiger@orclpdb

SQL*Plus: Release 12.2.0.1.0 Production on 星期二 331 11:10:30 2020

Copyright (c) 1982, 2016, Oracle.  All rights reserved.


连接到: 
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> show user;
USER"SCOTT"

到这里自行创建的SCOTT用户就可以正常登陆PDB实例了,但是想要查看SCOTT用户只能在PDB中才可以查看得到,如果以sys用户进入CDB下查看所有用户是没有SCOTT这个用户的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值