之前的2篇:【DB宝24】在Oracle 19c中创建容器数据库(1)--DBCA静默创建CDB
【DB宝25】在Oracle 19c中创建容器数据库(2)--DBCA图形化创建CDB

 这是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脚本创建目录和其他组件。

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

这是手工建库后的组件:

1SYS@LHRCDB2> select comp_id,comp_name,version,status from dba_registry;
2
3COMP_ID    COMP_NAME                                VERSION      STATUS
4---------- ---------------------------------------- ------------ ------------
5CATALOG    Oracle Database Catalog Views            12.2.0.1.0   VALID
6CATPROC    Oracle Database Packages and Types       12.2.0.1.0   VALID
7RAC        Oracle Real Application Clusters         12.2.0.1.0   OPTION OFF
8XDB        Oracle XML Database                      12.2.0.1.0   VALID
9OWM        Oracle Workspace Manager                 12.2.0.1.0   VALID
 

这是静默建库后的组件:

 1SYS@htzxdb1> select comp_id,comp_name,version,status from dba_registry;
2
3COMP_ID    COMP_NAME                                VERSION      STATUS
4---------- ---------------------------------------- ------------ ------------
5CATALOG    Oracle Database Catalog Views            18.0.0.0.0   VALID
6CATPROC    Oracle Database Packages and Types       18.0.0.0.0   VALID
7RAC        Oracle Real Application Clusters         18.0.0.0.0   VALID
8JAVAVM     JServer JAVA Virtual Machine             18.0.0.0.0   VALID
9XML        Oracle XDK                               18.0.0.0.0   VALID
10CATJAVA    Oracle Database Java Packages            18.0.0.0.0   VALID
11APS        OLAP Analytic Workspace                  18.0.0.0.0   VALID
12XDB        Oracle XML Database                      18.0.0.0.0   VALID
13OWM        Oracle Workspace Manager                 18.0.0.0.0   VALID
14CONTEXT    Oracle Text                              18.0.0.0.0   VALID
15ORDIM      Oracle Multimedia                        18.0.0.0.0   VALID
16SDO        Spatial                                  18.0.0.0.0   VALID
17XOQ        Oracle OLAP API                          18.0.0.0.0   VALID
18OLS        Oracle Label Security                    18.0.0.0.0   VALID
19DV         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命令。

常用命令如下:

 1export ORACLE_SID=LHRCDB3
2orapwd file=$ORACLE_HOME/dbs/orapwLHRCDB3 password=lhr format=12 entries=20
3
4vi $ORACLE_HOME/dbs/initLHRCDB3.ora
5DB_NAME=LHRCDB3
6DB_BLOCK_SIZE=8192
7DB_CREATE_FILE_DEST ='/u01/app/oracle/oradata'
8ENABLE_PLUGGABLE_DATABASE=true
9
10sqlplus / as sysdba
11startup 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:

1create database LHRCDB3
2extent management local
3CHARACTER SET AL32UTF8
4enable pluggable database
5;
   

3、运行catcdb.sql SQL脚本

1---12.2之前和之后都可以运行:
2SQL> @?/rdbms/admin/catalog.sql    --数据库字典,动态视图创建等
3SQL> @?/rdbms/admin/catproc.sql    --PL/SQL存过过程相关代码
4SQL> @?/rdbms/admin/utlrp.sql      --编译
5SQL> @?/sqlplus/admin/pupbld.sql  --system运行
6---如果需要安装其他组件,则还需要跑其他的组件脚本
7
8---12.2开始可以只运行:
9@?/rdbms/admin/catcdb.sql
 

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

1@?/rdbms/admin/catcdb.sql
 

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

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

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

1SQL> host perl -I &&rdbms_admin &&rdbms_admin_catcdb --logDirectory &&1 --logFilename &&2
2Enter value for 1: /tmp
3Enter value for 2: create_cdb.log
4Enter new password for SYS: ********
5Enter new password for SYSTEM: ********
6Enter temporary tablespace name: TEMP
 

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

1col comp_id format a10
2col comp_name format a40
3col version format a12
4col status format a12
5select comp_id,comp_name,version,status from dba_registry;
 

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


本文结束。


• 微信公众号:DB宝,作者:小麦苗
• 作者博客地址:http://blog.itpub.net/26736162/
• 作者微信:db_bao

• 作者QQ:646634621,QQ群:230161599、618766405
• 提供Oracle OCP、OCM、高可用(rac+dg+ogg)和MySQL DBA培训
• 版权所有,欢迎分享本文,转载请保留出处

• 若有侵权请联系小麦苗删除

★DB宝分享的IT资料:https://mp.weixin.qq.com/s/Iwsy-zkzwgs8nYkcMz29ag★DB宝笔试面试详解:https://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w
 

长按下图识别二维码,关注小麦苗的微信公众号:DB宝,学习最实用的数据库技术。




本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

©著作权归作者所有:来自51CTO博客作者小麦苗DB宝的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. python从Excel中读取数据
  2. python创建线程池(threadpool模块和multiprocessing模块)
  3. fail2ban 防止暴力破
  4. Microsoft Visual C++ 14.0 is required
  5. Non-UTF-8 code starting with '\xe4' 或 UnicodeDecodeError:
  6. 【linux】循序渐进学运维-ls
  7. [linux] 循序渐进学运维-mv
  8. 【linux】循序渐进学运维-mkdir
  9. CRMEBv4.X微商城/小程序商城/公众号商城/H5商城系统

随机推荐

  1. android SSL证书认证、SSL双向认证、http
  2. Android 获取设备唯一UUID
  3. Cordova插件编写流程(Android平台)
  4. android camera系统3A模式及其状态转换(二
  5. 【Android】如何寻找出某个Intent是否可
  6. Clickable URLs in Android TextViews
  7. android imageVIew拖动 && 图片缩放
  8. Android Manifest 用法
  9. Android HTTP请求
  10. ch027 Android Json