【DB宝26】在Oracle 19c中创建容器数据库(3)--手动创建CDB
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【DB宝26】在Oracle 19c中创建容器数据库(3)--手动创建CDB,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6736字,纯文字阅读大概需要10分钟。
内容图文
之前的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源创计划”,欢迎正在阅读的你也加入,一起分享。
内容总结
以上是互联网集市为您收集整理的【DB宝26】在Oracle 19c中创建容器数据库(3)--手动创建CDB全部内容,希望文章能够帮你解决【DB宝26】在Oracle 19c中创建容器数据库(3)--手动创建CDB所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。