Oracle 19c 创建 PDB 用户

参考:oracle19c sql developer创建本地用户(PDB用户)及配置连接
参考:oracle12c创建用户提示ORA-65096:公用用户名或角色无效

需求

使用 jeecg 的项目,需要导入 sql 到 oracle 数据库

导入 SQL 数据

用户\密码\表空间
JEECGBOOT\password\JEECGBOOT

oracle 的一些概念

🍄 表空间:逻辑概念,物理上是个文件
🍄 用户:类似 MySQL 的数据库
🍄 CDB:Contenter Database,即容器数据库。一个CDB可以有多个PDB。
🍄 PDB:pluggable Database,即可插拔数据库,可以实现从一个CDB拔出,插入到另一个CDB中。
🍄 公共用户:CDB 公共用户,CDB 公共用户必须以 C## 或 c## 开头,并且 Oracle 会在每个 PDB 中同时创建该用户。
🍄 本地用户:PDB 用户,本地用户在所在 PDB 中必须是唯一的。

oracle自12c版本开始引入了多租户的特性,多了一个CDB和PDB的概念,简单理解我们在11g时代只有PDB(即库的概念),现在多了一层CDB(即容器的概念),每个CDB下可以包含多个PDB,所以我们在创建用户时也就有了公用用户和本地用户的区别,公用用户对应CDB,本地用户对应PDB。

19c中分为公用用户和本地用户,公用用户就是在CDB(即容器)下创建的用户,必须以C##开头;本地用户就是在PDB(即库)下创建的用户,这就和11g时的用户一样了。

如果你习惯使用oralce sql developer创建用户,一般会先连接sys用户,与11g都一致。
默认情况下直接创建的都是公用用户(必须以C##开头),想创建本地用户必须先切换至对应的库中并开启数据库,其实所有的操作都是要先切换库并开启。

操作

查看库信息

show con_name pdbs;

查询结果

CON_NAME
------------------------------
CDB$ROOT

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB1                       MOUNTED

CDB$ROOT 是当前容器名称,ORCLPDB1 是一个 PDB 插接式数据库,安装后默认创建的一个,没有可自行创建。OPEN MODE 为 MOUNTED,代表还未开启。

创建表空间

切换库

alter session set container = ORCLPDB;

开启库

startup;
SQL> show con_name pdbs;

CON_NAME
------------------------------
CDB$ROOT

    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 ORCLPDB1                       READ WRITE NO

这个时候你可以再次查看库信息,如上图所示,会看到只有一条PDB信息,并且 OPEN MODE 已经改为 READ WRITE 了。

创建表空间

临时表空间使用已经有的:TEMP,不创建了。

create tablespace JEECGBOOT  
logging  
datafile '/opt/oracle/product/19c/dbhome_1/dbs/JEECGBOOT.dbf' 
size 100m  
autoextend on  
next 100m maxsize 20480m  
extent management local;

创建本地用户

创建用户

CREATE USER "JEECGBOOT" IDENTIFIED BY "password"  
DEFAULT TABLESPACE "JEECGBOOT"
TEMPORARY TABLESPACE "TEMP";

授权

GRANT "DBA" TO "JEECGBOOT";
GRANT "CONNECT" TO "JEECGBOOT" ;
ALTER USER "JEECGBOOT" DEFAULT ROLE "DBA","CONNECT";

本地用户连接

数据库,ORCLPDB1
用户名,可以是:sys、system、或者后来自己新建的 JEECGBOOT

在左侧用户 JEECGBOOT ,右键打开模式,运行 SQL 文件

posted @ 2022-10-02 22:58  ioufev  阅读(3145)  评论(0编辑  收藏  举报