前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB宝26】在Oracle 19c中创建容器数据库(3)--手动创建CDB

【DB宝26】在Oracle 19c中创建容器数据库(3)--手动创建CDB

作者头像
小麦苗DBA宝典
发布2020-11-09 11:43:30
3.5K0
发布2020-11-09 11:43:30
举报

这是Oracle OCP课件给出的创建CDB的过程:

使用DBCA或SQL*Plus创建新CDB所需的步骤相同。

•对于任何数据库(非CDB或CDB)来说,第一步都是使用init.ora参数文件配置实例。

•第二步是启动实例。

•第三步是使用CREATE DATABASE命令和新子句ENABLE PLUGGABLE DATABASE指定数据库为容器数据库而不是非CDB,从而创建CDB。此操作会在装载阶段创建根容器及控制文件,并在打开阶段创建重做日志文件和根数据文件。根数据文件用于SYSTEM表空间(其中包括Oracle提供的元数据和数据字典)以及针对AWR的SYSAUX表空间。还会创建种子可插拔数据库,及该数据库自己的数据文件(用于SYSAUX和SYSTEM表空间)。您可以使用新子句SEED FILE_NAME_CONVERT重命名种子可插拔数据库的数据文件,同时从根容器执行复制操作。该子句会创建种子可插拔数据库及该数据库自己的数据文件。种子数据文件会从根数据文件复制到另一个位置。种子数据文件可用作创建未来PDB的模板。如果省略此子句,Oracle Managed Files会决定种子文件的名称和位置。

•第四步是通过执行连接到根容器的catcdb.sql脚本创建目录和其他组件。

麦老师不建议手工建库,因为很多组件不全,而且创建过程非常麻烦。

这是手工建库后的组件:

代码语言:javascript
复制
SYS@LHRCDB2> select comp_id,comp_name,version,status from dba_registry;

COMP_ID    COMP_NAME                                VERSION      STATUS
---------- ---------------------------------------- ------------ ------------
CATALOG    Oracle Database Catalog Views            12.2.0.1.0   VALID
CATPROC    Oracle Database Packages and Types       12.2.0.1.0   VALID
RAC        Oracle Real Application Clusters         12.2.0.1.0   OPTION OFF
XDB        Oracle XML Database                      12.2.0.1.0   VALID
OWM        Oracle Workspace Manager                 12.2.0.1.0   VALID

这是静默建库后的组件:

代码语言:javascript
复制
SYS@htzxdb1> select comp_id,comp_name,version,status from dba_registry;

COMP_ID    COMP_NAME                                VERSION      STATUS
---------- ---------------------------------------- ------------ ------------
CATALOG    Oracle Database Catalog Views            18.0.0.0.0   VALID
CATPROC    Oracle Database Packages and Types       18.0.0.0.0   VALID
RAC        Oracle Real Application Clusters         18.0.0.0.0   VALID
JAVAVM     JServer JAVA Virtual Machine             18.0.0.0.0   VALID
XML        Oracle XDK                               18.0.0.0.0   VALID
CATJAVA    Oracle Database Java Packages            18.0.0.0.0   VALID
APS        OLAP Analytic Workspace                  18.0.0.0.0   VALID
XDB        Oracle XML Database                      18.0.0.0.0   VALID
OWM        Oracle Workspace Manager                 18.0.0.0.0   VALID
CONTEXT    Oracle Text                              18.0.0.0.0   VALID
ORDIM      Oracle Multimedia                        18.0.0.0.0   VALID
SDO        Spatial                                  18.0.0.0.0   VALID
XOQ        Oracle OLAP API                          18.0.0.0.0   VALID
OLS        Oracle Label Security                    18.0.0.0.0   VALID
DV         Oracle Database Vault                    18.0.0.0.0   VALID

手动创建CDB可以使用新子句SEED FILE_NAME_CONVERT,也可以使用新实例参数PDB_FILE_NAME_CONVERT,或者使用OMF格式。下面给出一种使用OMF格式来手动创建CDB的示例。

如果不使用明确的数据文件名,则使用 Oracle Managed Files (OMF)。使用在语句中指定的SYSTEM、SYSAUX、UNDO和USERS表空间的数据文件的目标目录值设置DB_CREATE_FILE_DEST实例参数。Oracle为所有数据文件、控制文件和重做日志文件选择默认大小和属性。

1、创建参数文件并启动到NOMOUNT阶段

启动实例之前,使用常用参数准备init<SID>.ora参数文件:DB_NAME、CONTROL_FILES(如果不使用OMF)以及DB_BLOCK_SIZE。root的全局数据库名是CDB的全局数据库名。需要使用一个新参数,定义已启动实例可用于创建CDB而不是非CDB。ENABLE_PLUGGABLE_DATABASE参数必须设置为TRUE。设置ORACLE_SID环境变量。启动SQL*Plus,以属于DBA OS组的OS验证用户的身份进行连接,然后执行STARTUP NOMOUNT命令。

常用命令如下:

代码语言:javascript
复制
export ORACLE_SID=LHRCDB3
orapwd file=$ORACLE_HOME/dbs/orapwLHRCDB3 password=lhr format=12 entries=20

vi $ORACLE_HOME/dbs/initLHRCDB3.ora
DB_NAME=LHRCDB3
DB_BLOCK_SIZE=8192
DB_CREATE_FILE_DEST ='/u01/app/oracle/oradata'
ENABLE_PLUGGABLE_DATABASE=true

sqlplus / as sysdba
startup nomount

2、使用create database创建数据库

通过使用CREATE DATABASE命令和新子句ENABLE PLUGGABLE DATABASE创建CDB。该子句指定数据库为CDB而不是非CDB。此时会创建根容器和种子可插拔数据库。您可以使用另一个子句SEED FILE_NAME_CONVERT指定种子文件的位置。如果省略此子句,OMF会决定种子文件的名称和位置。FILE_NAME_CONVERT指定复制到目标种子目录的根数据文件的源目录。

在本例中,/oracle/dbs和/oracle/seed目录必须存在。在语句中定义的字符集依然是CDB的唯一字符集,如果不指定字符集,那么默认的字符集为US7ASCII:

代码语言:javascript
复制
create database LHRCDB3
extent management local
CHARACTER SET AL32UTF8
enable pluggable database
;

3、运行catcdb.sql SQL脚本

代码语言:javascript
复制
---12.2之前和之后都可以运行:
SQL> @?/rdbms/admin/catalog.sql    --数据库字典,动态视图创建等
SQL> @?/rdbms/admin/catproc.sql    --PL/SQL存过过程相关代码
SQL> @?/rdbms/admin/utlrp.sql      --编译
SQL> @?/sqlplus/admin/pupbld.sql  --system运行
---如果需要安装其他组件,则还需要跑其他的组件脚本

---12.2开始可以只运行:
@?/rdbms/admin/catcdb.sql

从12.2开始可以只运行如下脚本:

代码语言:javascript
复制
@?/rdbms/admin/catcdb.sql

若是其他版本,那么也可以运行:

代码语言:javascript
复制
---12.2之前和之后都可以运行:
SQL> @?/rdbms/admin/catalog.sql    --数据库字典,动态视图创建等
SQL> @?/rdbms/admin/catproc.sql    --PL/SQL存过过程相关代码
SQL> @?/rdbms/admin/utlrp.sql      --编译
SQL> @?/sqlplus/admin/pupbld.sql  --system运行
---如果需要安装其他组件,则还需要跑其他的组件脚本

运行catcdb.sql时需要输入几个参数:

代码语言:javascript
复制
SQL> host perl -I &&rdbms_admin &&rdbms_admin_catcdb --logDirectory &&1 --logFilename &&2
Enter value for 1: /tmp
Enter value for 2: create_cdb.log
Enter new password for SYS: ********
Enter new password for SYSTEM: ********
Enter temporary tablespace name: TEMP

脚本跑完后,查询组件的脚本如下:

代码语言:javascript
复制
col comp_id format a10
col comp_name format a40
col version format a12
col status format a12
select comp_id,comp_name,version,status from dba_registry;

跑脚本非常慢,安装组件也非常麻烦,最后需要保证所有的组件状态都是VALID,所以,麦老师不建议使用这种办法。手工建库只是在特殊场景中才会用到。

本文结束。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、创建参数文件并启动到NOMOUNT阶段
  • 2、使用create database创建数据库
  • 3、运行catcdb.sql SQL脚本
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档