Oracle Database 12c HR账户的解锁/配置

时间:2021-01-13 21:40:56

Oracle Database 12c HR账户的解锁


P话少说,不需要解释,只要给我代码–请直接翻到文章末尾,代码会进行汇总。

由于Oracle 12c采用了多租用户环境(Multitenant Environment),所以解锁hr用户并不像之前版本那么容易。新版的Oracle分为容器数据库(CDB)可插拔数据库(PDB)两种模式。
Oracle Database 12c HR账户的解锁/配置

可以点击此处查看CDB与PDB具体是怎么个情况。
正是由于这种新特性,使得创建用户与解锁内置用户与前版本有了很大的区别。
要解锁HR用户分为三步

1.获取到可插拔数据库的名字

与可插拔数据库相关的服务名称以及数据库并负责与客户端通信
- 要获得这些信息,我们需要登陆到sys用户数据库

sqlplus / as sysdba

Oracle Database 12c HR账户的解锁/配置
- 可以通过检查根CDB容器或从conn_name的值中查询任何PDB数据库名称
使用SHOW con_name;可以查看当前所连接的数据库。
Oracle Database 12c HR账户的解锁/配置
可以看到我们默认登陆的数据库是CDB的ROOT数据库。
接下来进行查询PDB数据库的名称与连接ID,它存在于V$PDBS数据表中。

SELECT name, con_id FROM v$pdbs;

Oracle Database 12c HR账户的解锁/配置
可以看到默认有两个PDB数据库,PDB$SEEDORCLPDB
PDB$SEED是在创建时一个默认的可插拔数据库,ID是2
而ORCLPDB是安装过程中用户自行定义的,可能会有不同的名字,CON_ID为3,我们之后将会使用CON_ID进行服务名称的查询。
我们可以在v$active_services表中找到ORCLPDB服务的名称,通常它们是一样的。

SELECT name FROM v$active_services WHERE con_id=3;

Oracle Database 12c HR账户的解锁/配置
可以看到这里我的服务名为orclpdb

2.修改tnsnames.ora文件

  • 此步骤是为了更好的连接hr数据库并避免TNS-ORA错误
    打开Oracle目录下的tnsnames.ora文件,我的在F:\app\product\12.2.0\dbhome_1\network\admin路径下。
    Oracle Database 12c HR账户的解锁/配置
    文件如这个样子,将最后的复制并修改,然后保存退出。
    Oracle Database 12c HR账户的解锁/配置
    因为我们刚刚修改了服务,所以我们必须重启Listerner服务,以管理员权限运行CMD并重启
lsnrctl reload

Oracle Database 12c HR账户的解锁/配置

3.再次连接到sysdba进行hr的解锁

sqlplus / as sysdba
Oracle Database 12c HR账户的解锁/配置
可以看到我们仍在CDB的ROOT下,所以我们需要连接到PDBORCL下进行hr用户的解锁工作。此处我们使用ALTER SESSION命令。

ALTER SESSION SET CONTAINER = orclpdb;

Oracle Database 12c HR账户的解锁/配置
可以看到此时已经切换到可插拔数据库。
大多数的数据库执行DDL命令需要处于OPEN状态,而可插拔数据库默认处于MOUNT状态。你可以通过查看v$pdbs表来查询它们的状态。

SELECT name, open_mode FROM v$pdbs;

Oracle Database 12c HR账户的解锁/配置
可以看到,当前的ORCLPDB是处于MOUNT状态的。
所以我们首先得使其处于打开状态,使用ALTER PLUGGABLE DATABASE命令进行打开。

ALTER PLUGGABLE DATABASE orclpdb open;

Oracle Database 12c HR账户的解锁/配置
可以看到此操作以后可插拔数据库已经打开并准备好了读写。
最后,进行hr账户的解锁

ALTER USER hr IDENTIFIED BY hr ACCOUNT UNLOCK;

此命令将hr账户密码修改为hr并解锁
Oracle Database 12c HR账户的解锁/配置
OK 成功解锁

尝试连接

相比于早期版本的Oracle数据库,Oracle 12c 需要你一起提供服务名称与日志中HR用户的凭据。由于我们修改了tnsnames.ora文件,所以我们可以使用conn 用户名/密码@服务名的方式进行连接。

conn hr/hr@ORCLPDB;

Oracle Database 12c HR账户的解锁/配置
成功连接!

喜欢的话就顶一下吧~

注意的点

可插拔数据库的名称勿写错。

参考资料

Oracle Database 12c Tutorial 2: How To Unlock HR schema in Oracle Database 12c:https://www.youtube.com/watch?v=F81gfUnznZY&t=62s
潇湘隐者 ORACLE 12C新特性——CDB与PDB:http://www.cnblogs.com/kerrycode/p/3386917.html

代码

此处代码均为在cmd下操作,方括号中的内容进行替换。

sqlplus / as sysdba

SELECT name, con_id FROM v$pdbs; ::此处获取到可插拔数据库的名称与id

SELECT name FROM v$active_services WHERE con_id=[查询到的ID]; ::此处查询到服务名

[此处需要修改tnsnames.ora文件,参见上面第二步]

ALTER SESSION SET CONTAINER = [查询到的服务名];

ALTER PLUGGABLE DATABASE [可插拔数据库名称] open;

ALTER USER hr IDENTIFIED BY hr ACCOUNT UNLOCK;