创建容器数据库(CDB)的流程
-
实例启动
- 通过
initCDB1.ora
初始化参数文件启动实例。实例包括进程结构和SGA(系统全局区)。
- 通过
-
创建CDB
- 启动实例后,创建CDB。CDB包括CDB根目录和种子数据库。根目录包含SYSTEM、SYSAUX、UNDO、TEMP等数据文件,以及控制文件和重做日志文件。
-
执行脚本
- 从CDB根目录执行
catcdb.sql
、catalog.sql
和catproc.sql
等脚本来完成数据库的初始化和配置。
- 从CDB根目录执行
使用SQL命令创建CDB的示例
步骤1:启动实例
a. 设置ORACLE_SID
:
export ORACLE_SID=CDB1
b. 创建initCDB1.ora
文件并设置以下参数:
CONTROL_FILES = ('/path/to/controlfile1.ctl', '/path/to/controlfile2.ctl')
DB_NAME = 'CDB1'
ENABLE_PLUGGABLE_DATABASE = TRUE
c. 连接到数据库并启动实例:
SQL> CONNECT / AS SYSDBA
SQL> STARTUP NOMOUNT
步骤2:创建数据库
执行以下命令创建数据库:
SQL> CREATE DATABASE cdb1 ENABLE PLUGGABLE DATABASE
SEED FILE_NAME_CONVERT = ('/oracle/dbs', '/oracle/seed');
此命令创建一个名为cdb1
的CDB,并启用可插拔数据库功能。
步骤3:执行脚本
从CDB根目录执行以下脚本初始化数据字典:
SQL> @?/rdbms/admin/catcdb.sql
SQL> @?/rdbms/admin/catproc.sql
使用SEED FILE_NAME_CONVERT
子句的示例
这张图片展示了如何使用SEED FILE_NAME_CONVERT
子句创建一个容器数据库(CDB)。具体步骤如下:
CREATE DATABASE cdb1
USER SYS IDENTIFIED BY password
USER SYSTEM IDENTIFIED BY password
LOGFILE GROUP 1 ('/u01/app/oradata/CDB1/redo01.log') SIZE 100M,
GROUP 2 ('/u01/app/oradata/CDB1/redo02.log') SIZE 100M,
GROUP 3 ('/u01/app/oradata/CDB1/redo03.log') SIZE 100M
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oradata/CDB1/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/app/oradata/CDB1/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oradata/CDB1/temp01.dbf' SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/u01/app/oradata/CDB1/undotbs01.dbf' SIZE 200M REUSE
ENABLE PLUGGABLE DATABASE
SEED FILE_NAME_CONVERT = ('/u01/app/oradata/CDB1/', '/u01/app/oradata/pdbseed/');
-
数据库名称:
CREATE DATABASE cdb1
这条命令创建一个名为
cdb1
的数据库。 -
管理员用户:
USER SYS IDENTIFIED BY password USER SYSTEM IDENTIFIED BY password
这部分定义了两个管理员用户
SYS
和SYSTEM
的密码。 -
日志文件:
LOGFILE GROUP 1 ('/u01/app/oradata/CDB1/redo01.log') SIZE 100M, GROUP 2 ('/u01/app/oradata/CDB1/redo02.log') SIZE 100M, GROUP 3 ('/u01/app/oradata/CDB1/redo03.log') SIZE 100M
这部分定义了三个重做日志组,每个日志文件的大小为100MB。
-
字符集和国家字符集:
CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16
数据库使用
AL32UTF8
字符集和AL16UTF16
国家字符集。 -
区管理:
EXTENT MANAGEMENT LOCAL
这表示表空间使用本地管理。
-
数据文件:
DATAFILE '/u01/app/oradata/CDB1/system01.dbf' SIZE 325M REUSE SYSAUX DATAFILE '/u01/app/oradata/CDB1/sysaux01.dbf' SIZE 325M REUSE
定义了SYSTEM和SYSAUX表空间的数据文件,大小为325MB。
-
默认表空间:
DEFAULT TABLESPACE users
指定默认表空间为
users
。 -
临时表空间:
DEFAULT TEMPORARY TABLESPACE tempts1 TEMPFILE '/u01/app/oradata/CDB1/temp01.dbf' SIZE 20M REUSE
指定默认临时表空间为
tempts1
,文件大小为20MB。 -
撤销表空间:
UNDO TABLESPACE undotbs DATAFILE '/u01/app/oradata/CDB1/undotbs01.dbf' SIZE 200M REUSE
定义UNDO表空间和数据文件,大小为200MB。
-
启用可插拔数据库:
ENABLE PLUGGABLE DATABASE
-
种子文件转换:
SEED FILE_NAME_CONVERT = ('/u01/app/oradata/CDB1/', '/u01/app/oradata/pdbseed/');
定义种子数据库文件位置转换规则。
不使用SEED FILE_NAME_CONVERT
子句的示例
在不使用SEED FILE_NAME_CONVERT
子句的情况下创建一个容器数据库(CDB)。具体步骤如下:
SQL> CONNECT / AS SYSDBA
SQL> STARTUP NOMOUNT
SQL> CREATE DATABASE cdb2
USER SYS IDENTIFIED BY password
USER SYSTEM IDENTIFIED BY password
EXTENT MANAGEMENT LOCAL
DEFAULT TEMPORARY TABLESPACE temp
UNDO TABLESPACE undotbs
DEFAULT TABLESPACE users
ENABLE PLUGGABLE DATABASE;
-
连接到数据库并启动实例:
SQL> CONNECT / AS SYSDBA SQL> STARTUP NOMOUNT
连接到数据库并启动实例,但不装载数据库。
-
创建数据库:
SQL> CREATE DATABASE cdb2 USER SYS IDENTIFIED BY password USER SYSTEM IDENTIFIED BY password EXTENT MANAGEMENT LOCAL DEFAULT TEMPORARY TABLESPACE temp UNDO TABLESPACE undotbs DEFAULT TABLESPACE users ENABLE PLUGGABLE DATABASE;
创建一个名为
cdb2
的数据库,并启用可插拔数据库功能。
不使用SEED FILE_NAME_CONVERT
的替代方案
如果不使用SEED FILE_NAME_CONVERT
子句,可以使用以下方法之一:
-
使用OMF(Oracle Managed Files):
OMF: DB_CREATE_FILE_DEST = '/u02/app/oradata'
使用OMF管理文件时,设置
DB_CREATE_FILE_DEST
参数指定文件路径。 -
初始化参数
PDB_FILE_NAME_CONVERT
:PDB_FILE_NAME_CONVERT = ('/u02/app/oradata/CDB2/', '/u02/app/oradata/seed')
通过设置
PDB_FILE_NAME_CONVERT
参数,定义文件位置转换规则。
非常感谢您读到这里!如果您觉得这篇文章对您有帮助,可以关注一下博主。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。
全网第一个AI+PPT提效小册希望能对大家有帮助订阅之后有专属学习交流群
以及AI考试资料分享