为OracleDatabase配置PDB登录

本文最后更新于:1 天前

原理简单,懂之前觉得麻烦。

前言

做数据库的大作业了,要求自己设计一个数据库。之前用的HR数据库姑且是通过改权限强行让CDB能够添加不以C##开头的用户名了。
然而大作业也要求搞一个以自己名字命名的用户名,想了想还是试试PDB的结构吧。试了半天终于搞定了。

正文

我是默认就有了一个自带的叫orclpdb的PDB数据库了,所以就没有新建一个PDB数据库了。

环境

  • Oracle Database 19.3c
  • Windows10

登录到CDB

就用你的账号登录就好啦,下面我就以testuser作为用户名,pswd作为密码来演示吧。

1
sqlplus testuser as sysdba/pswd@localhost:1521/orcl

切换到PDB

先查看你是否已经有了PDB

1
SQL> show pdbs;

之后大概会弹出这样的结果

1
2
3
4
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO

这了的 ORCLPDB就是我们已经有了的默认PDB啦。接下来我们就登录进去吧。

打开PDB

现在我们切换到PDB ORCLPDB中去。

1
SQL> alter session set container=orclpdb; 

正常的会显示如下的字样

1
会话已更改。

我们检查一下是否已经切换成功了

1
2
3
4
5
SQL> show pdbs;

CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 ORCLPDB READ WRITE NO

然后就把这个PDB打开吧

1
SQL> startup;

为PDB创建用户

下面我们来创建用于专门连接这个PDB的用户。

1
2
3
4
SQL> create user test identified by pswd;  

用户已创建。

授予用户该PDB的DBA权限

1
2
3
SQL> grant dba to test;

授权成功。

配置listener.ora

这里找到listener.ora这个文件,它的地址是在ORACLE_HOME/network/admin/listener.ora这里。
先找到下面这一段

1
2
3
4
5
6
7
8
9
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\Oracle\WINDOWS.X64_193000_db_home)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\Oracle\WINDOWS.X64_193000_db_home\bin\oraclr19.dll")
)
)

然后加上这样一段配置就行了

1
2
3
4
(SID_DESC =
(GLOBAL_DBNAME = orclpdb)
(SID_NAME = orcl)
)

整体的结果是类似于这样的

1
2
3
4
5
6
7
8
9
10
11
12
13
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = D:\Oracle\WINDOWS.X64_193000_db_home)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:D:\Oracle\WINDOWS.X64_193000_db_home\bin\oraclr19.dll")
)
(SID_DESC =
(GLOBAL_DBNAME = orclpdb)
(SID_NAME = orcl)
)
)

优化

设置PDB自动启动

每次要用PDB的时候都得从CDB切换到PDB然后打开,为了简单我们就用触发器来自动打开吧。

1
2
3
4
5
6
7
SQL>
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/

这样就搞定了。

参考

Oracle 12c中新建pdb用户登录问题分析

oracle 12c多租户下的日常操作变化

Oracle 12C 创建用户连接pdb


为OracleDatabase配置PDB登录
https://www.yikakia.com/为OracleDatabase配置PDB登录/
作者
Yika
发布于
2020年5月17日
许可协议