PDB简介:
Oracle 12C 提出了多租户环境(Multitenant Environment)和容器(Container)的概念, 区分了两个层级:
a. CDB ,Container Database, 数据库容器
b. PDB,Pluggable Database, 可插拔数据库
在数据库中建立的用户对应以上两个层级:
COMMOM USERS , 普通用户, 一般建立在CDB层, 用户名需要以 C#或C##开头;
LOCAL USERS , 本地用户, 仅建立在PBD层,建立的时候需要指定容器
创建PDB的大致步骤如下:
--查看pdb情况,需要sys权限
SHOW PDBS;
--创建PDB
CREATE PLUGGABLE DATABASE PDB_NAME ADMIN USER SYS_PDB IDENTIFIED BY "SYS_PDB#2022" DEFAULT TABLESPACE TABLESPACE_NAME FILE_NAME_CONVERT=('/ORADATA/','/ORADATA/PDB_NAME.DBF');
--打开PDB读写
ALTER PLUGGABLE DATABASE PDB_NAME OPEN;
--切换session
ALTER SESSION SET CONTAINER = PDB_NAME;
--授权PDB用户相关权限
GRANT DBA,RESOURCE,CONNECT TO SYS_PDB;
修改tns,修改之前记得备份
#备份文件
cp tnsnames.ora tnsnames.ora.back
#修改文件
vi tnsnames.ora
#直接在最后面追加这两坨
#这一坨为service_name方式登录数据库
PDB_NAME =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LOCALHOST)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PDB_NAME)
)
)
#这一坨用作SID方式登录数据库,不加使用SID登录的时候会报错ORA-12505
PDB_NAME_SID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = LOCALHOST)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
# (SERVICE_NAME = PDB_NAME)
(SID = PDB_NAME)
)
)
修改监听,修改之前记得备份
#备份文件
cp listener.ora listener.ora.back
#修改监听文件
vi listener.ora
#直接在最后面追加这一坨
#语法 USE_SID_AS_SERVICE_<listener_name> = ON
USE_SID_AS_SERVICE_LISTENER = ON
#停止监听
lsnrctl stop
#启动监听
lsnrctl start
#stop和start可用lsnrctl reload代替
#查看监听状态
lsnrctl status
重启数据库
--停止数据库
shutdown immediate
--启动数据库
startup
验证登录
--验证,能登录成功则说明创建成功
CONN SYS_PDB/"SYS_PDB#2022"@PDB_NAME;