CDB:数据库容器;PDB:可插拔数据库。在CDB下的用户称公共用户,在PDB下的用户称为本地用户。
一、在CDB下创建公共用户
在 sqlplus 下用 system 登陆 CDB 数据库(默认情况下直接登陆的就是CDB数据库),然后创建用户:
create user c##Cui identified by 12345678;
注意:创建公共用户命名必须以 c## 或 C## 开头,否则无法创建。
二、在PDB下创建公共用户
1、在 sqlplus 下用 sys 登陆 CDB 数据库(一般的话 sys 用户和 system 用户都是有 sysdba 权限的)。
请输入用户名: sys/12345678 as sysdba
连接到:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
2、查看当前容器
SQL> show con_name
CON_NAME
------------------------------
CDB$ROOT
3、查看CDB下的可插拔数据库
SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;
--------------------------------------------------------------------------
CON_ID DBID GUID NAME OPEN_MODE
---------- ---------- -------------------------------- -------- ----------
2 3195523951 71326CF0C2304EDB9A6282A10DBB2AAF PDB$SEED READ ONLY
3 730618075 995DED9EB8F54A08A8EF42453401B874 ORCLPDB READ WRITE
--------------------------------------------------------------------------
4、配置 tns,在客户端服务端分别加上如下内容
①找到 tnsnames.ora 文件:
Orcale\network\admin\tnsnames.ora
②添加以下内容( service_name 根据自己的插拔数据库命名):
ORCLPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orclpdb)
)
)
5、启动PDB数据库
SQL> alter pluggable database ORCLPDB open;
alter pluggable database ORCLPDB open
*
第 1 行出现错误:
ORA-65019: 插接式数据库 ORCLPDB 已打开
6、切换至ORACLPDB
SQL> alter session set container=ORCLPDB;
会话已更改。
SQL> show con_name
CON_NAME
------------------------------
ORCLPDB
可以看到当前容器已经修改。
SQL> select con_id, dbid, guid, name , open_mode from v$pdbs;
--------------------------------------------------------------------------
CON_ID DBID GUID NAME OPEN_MODE
---------- ---------- -------------------------------- -------- ----------
3 730618075 995DED9EB8F54A08A8EF42453401B874 ORCLPDB READ WRITE
--------------------------------------------------------------------------
参考: