database - 解锁 PDB 数据库中的用户
问题描述
每次打开电脑尝试连接HR
数据库时,都会弹出一个错误提示被阻止,然后我去 SQLPLUS 并以 身份登录SYSDBA
,并执行以下脚本:
我的问题是,我总是必须这样做吗?有什么办法可以一直保存UNLOCKED
吗?
1.- sqlplus / as sysdba
2.- show con_name;
3.- ALTER SESSION SET CONTAINER = orclpdb;
4.- COLUMN name FORMAT a20;
5.- SELECT name, open_mode from v$pdbs;
6.- ALTER PLUGGABLE DATABASE open;
7.- ALTER USER hr IDENTIFIED BY hr ACCOUNT UNLOCK;
8- conn hr/hr@orclpdb
9.- SHOW USER;
解决方案
要在登录后立即打开所有/特定 PDB,请在 CDB 中创建AFTER STARTUP系统级触发器。
因为,PDB 不是通过 CDB 启动打开的。让我们来看看 :
SHUTDOWN IMMEDIATE;
STARTUP;
SQL> SELECT name, open_mode FROM v$pdbs;
NAME OPEN_MODE
------------------------------ ----------
PDB$SEED READ ONLY
PDBP6 MOUNTED
如您所见,PDB 仍处于挂载状态,未打开读/写。
因此,为了让所有PDB 自动打开,请执行以下操作:
做,,SQLPLUS / AS SYSDBA
然后执行:
CREATE OR REPLACE TRIGGER open_pdbs
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END open_pdbs;
/
它在 CDB 中创建启动后系统级触发器。
现在解锁用户:
sqlplus SYS/password@PDBORCL AS SYSDBA
SQL> ALTER USER hr ACCOUNT UNLOCK IDENTIFIED BY hr;
sqlplus hr/hr@pdborcl
SQL> show user;
USER is "HR"
现在您无需手动打开 PDB,只需连接到 PDB 和您想要的用户即可。
从12.1.0.2开始,您可以通过 CDB 重启保留 PDB 启动状态:
ALTER PLUGGABLE DATABASE pdb_name OPEN;
ALTER PLUGGABLE DATABASE pdb_name SAVE STATE;
要丢弃保存的状态:
ALTER PLUGGABLE DATABASE pdb_name DISCARD STATE;
推荐阅读
- r - 是否有自动化(手动)R代码来计算P值
- css - 在非全屏和全屏模式下,Chrome Mobile 屏幕底部的高度元素相同
- github - 使用持续部署发布机器人后不显示图像
- c# - 始终定义 Visual Studio 2013 DEBUG 预处理器指令
- java - Retrofit POST request using @Body returns empty response body
- uwp - UWP:NavigationView 无法更改面板背景
- c - 如何解决编译错误:警告“使用此标头的文件必须使用 _SVID_SOURCE 或 _XOPEN_SOURCE 编译”
- java - 在 UTC 中使用到期日期时,JWT 的到期不起作用
- c# - 如何动态替换 json 附带的属性?
- json - 状态元素没有出现在带有 react-tooltip 的反应简单地图上