12c多租户管理六(通过seed 容器创建pdb)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了12c多租户管理六(通过seed 容器创建pdb)相关的知识,希望对你有一定的参考价值。

                                           通过seed 创建pdb

目录结构

1.1、创建说明
1.2、创建选项
1.3、编写创建语句
1.4、执行创建
1.5、启动新建的pdb

一、通过seed 创建pdb

1.1、创建说明
1、通过 create pluggable database 语句创建。
2、确保当前 container 是 cdb root 或是应用程序 root
3、若当前容器是 cdb root,则 pdb 的创建使用的是 cdb seed
4、若当前容器是 application root 则 pdb 的创建使用的是应用程序 seed
5、如果不在根下创建pdb则会有如下报错
ERROR at line 1:ORA-16000: database or pluggable database open for read-only access

1.2、创建选项
ADMIN_USER 创建用于执行管理的本地用户,该用户会被赋予 PDB_DBA 角色
PATH_PREFIX 限定新创建 pdb 中新增数据文件必须存储在该目录或其子目录
DATAFILE 指定新创建 pdb 库中默认表空间数据文件的路径和名称
DEFAULT TABLESPACE 指定新创建 pdb 的默认用户表空间
MAX SIZE 限制新创建 pdb 库可使用空间最大值
FILE_NAME_CONVERT 指定新创建 pdb 库中数据文件的位置。
MAX_SHARED_TEMP_SIZE 指定 pdb 共用临时表空间的最大尺寸
TEMPFILE REUSE 若目的地无临时文件则创建,有则格式化临时文件后重新使用
USER_TABLESPACES 指定新 pdb 中哪个用户表空间是可用的,排除其它的

1.3、编写创建语句
1、登陆根容器
[oracle@oracle18c1 dbs]$ ps -ef |grep pmon
oracle 3330 1 0 17:13 ? 00:00:00 ora_pmon_mycdb
oracle 3979 3194 0 17:17 pts/0 00:00:00 grep --color=auto pmon
[oracle@oracle18c1 dbs]$ export ORACLE_SID=mycdb
[oracle@oracle18c1 dbs]$ sqlplus / as sysdba

SQL*Plus: Release 18.0.0.0.0 - Production on Thu May 21 17:18:13 2020
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle. All rights reserved.

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

2、切换到seed容器查询seed数据文件路径
SQL> show pdbs;

CON_ID CON_NAME           OPEN MODE  RESTRICTED

 2 PDB$SEED           READ ONLY  NO
 3 MYPDB1             READ WRITE NO
 4 MYPDB2             READ WRITE NO
 5 YOUPDB             MOUNTED

SQL> alter session set container=PDB$SEED;

Session altered.

SQL> show con_name

CON_NAME

PDB$SEED
SQL> select name from v$datafile;

NAME

/opt/oracle/oradata/mycdb/pdbseed/system01.dbf
/opt/oracle/oradata/mycdb/pdbseed/sysaux01.dbf
/opt/oracle/oradata/mycdb/pdbseed/undotbs01.dbf

3、建新pdb得语句为
create pluggable database mypdb3 admin user pdb3admin identified by dhhzdhhz
FILE_NAME_CONVERT = (‘/opt/oracle/oradata/mycdb/pdbseed/‘,‘/opt/oracle/oradata/mycdb/mypdb3/‘);

1.4、执行创建

1、确保当前在根容器下
SQL> alter session set container=CDB$ROOT;

Session altered.

SQL> show pdbs;

CON_ID CON_NAME           OPEN MODE  RESTRICTED

 2 PDB$SEED           READ ONLY  NO
 3 MYPDB1             READ WRITE NO
 4 MYPDB2             READ WRITE NO
 5 YOUPDB             MOUNTED

SQL>

2、执行创建语句
SQL> create pluggable database mypdb3 admin user pdb3admin identified by dhhzdhhz
FILE_NAME_CONVERT = (‘/opt/oracle/oradata/mycdb/pdbseed/‘,‘/opt/oracle/oradata/mycdb/mypdb3/‘);

Pluggable database created.

1.5、启动新建的pdb(mypdb3)

1、启动新创建的pdb
SQL> show pdbs;

CON_ID CON_NAME           OPEN MODE  RESTRICTED

 2 PDB$SEED           READ ONLY  NO
 3 MYPDB1             READ WRITE NO
 4 MYPDB2             READ WRITE NO
 5 YOUPDB             MOUNTED
 6 MYPDB3             MOUNTED

SQL> alter pluggable database mypdb3 open;

Pluggable database altered.

SQL> show pdbs;

CON_ID CON_NAME           OPEN MODE  RESTRICTED

 2 PDB$SEED           READ ONLY  NO
 3 MYPDB1             READ WRITE NO
 4 MYPDB2             READ WRITE NO
 5 YOUPDB             MOUNTED
 6 MYPDB3             READ WRITE NO

2、保存pdb的启动状态,待下次重启cdb,让pdb自动启动

SQL> show pdbs;

CON_ID CON_NAME           OPEN MODE  RESTRICTED

 2 PDB$SEED           READ ONLY  NO
 3 MYPDB1             READ WRITE NO
 4 MYPDB2             READ WRITE NO
 5 YOUPDB             MOUNTED
 6 MYPDB3             READ WRITE NO

SQL> alter pluggable database mypdb3 save state;

Pluggable database altered.

SQL> select con_name, state from dba_pdb_saved_states;

CON_NAME STATE


MYPDB2 OPEN
MYPDB1 OPEN
MYPDB3 OPEN

以上是关于12c多租户管理六(通过seed 容器创建pdb)的主要内容,如果未能解决你的问题,请参考以下文章

Oracle12C多租户管理用户角色权限

oracle12c 多租户管理四(容器连接切换)

oracle12c 多租户管理四(容器连接切换)

知识拓展Oracle 12c多租户容器数据库简介

Oracle12c多租户如何连接到CDB或PDBCDB与PDB容器切换

12c多租户管理五(修改pdb打开模式)