为 OracleDatabase 配置 PDB 登录
本文最后更新于:2020年8月16日 下午
原理简单,懂之前觉得麻烦。
前言
做数据库的大作业了,要求自己设计一个数据库。之前用的 HR 数据库姑且是通过改权限强行让 CDB 能够添加不以 C## 开头的用户名了。
然而大作业也要求搞一个以自己名字命名的用户名,想了想还是试试 PDB 的结构吧。试了半天终于搞定了。
正文
我是默认就有了一个自带的叫 orclpdb
的 PDB 数据库了,所以就没有新建一个 PDB 数据库了。
环境
- Oracle Database 19.3c
- Windows10
登录到 CDB
就用你的账号登录就好啦,下面我就以 testuser
作为用户名,pswd
作为密码来演示吧。
sqlplus testuser as sysdba/[email protected]:1521/orcl
切换到 PDB
先查看你是否已经有了 PDB
SQL> show pdbs;
之后大概会弹出这样的结果
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB READ WRITE NO
这了的 ORCLPDB
就是我们已经有了的默认 PDB 啦。接下来我们就登录进去吧。
打开 PDB
现在我们切换到 PDB ORCLPDB
中去。
SQL> alter session set container=orclpdb;
正常的会显示如下的字样
会话已更改。
我们检查一下是否已经切换成功了
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
3 ORCLPDB READ WRITE NO
然后就把这个 PDB 打开吧
SQL> startup;
为 PDB 创建用户
下面我们来创建用于专门连接这个 PDB 的用户。
SQL> create user test identified by pswd;
用户已创建。
授予用户该 PDB 的 DBA 权限
SQL> grant dba to test;
授权成功。
配置 listener.ora
这里找到 listener.ora
这个文件,它的地址是在 ORACLE_HOME/network/admin/listener.ora
这里。
先找到下面这一段
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)
)
整体的结果是类似于这样的
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 然后打开,为了简单我们就用触发器来自动打开吧。
SQL>
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
这样就搞定了。
参考
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!