侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Oracle 12c实现手工建库而非CDB及CDB创建的方法

数据库  /  管理员 发布于 6年前   379

前言

相信大家应该都知道,对于Oracle数据库的创建,Oracle除了支持dbca(GUI界面),同时也支持手工方式创建数据库,即使用CREATE DATABASE语句创建数据库。使用此语句对使用DBCA的一个优点是可以从脚本内创建数据库。

在Oracle 12c版本中支持12c之前的非CDB数据库以及CDB容器数据库。因此创建方式略有不同。本文同时描述2种不同数据库的手工创建方法。下面话不多说了,来一起看看详细的介绍吧。

一、12c手工创建非CDB数据库

步骤1:指定实例标识符(SID)

ORACLE_SID的环境变量用于该实例从稍后可能创建并同时在同一主机计算机上运行其他Oracle Database实例区分开来。

$ export ORACLE_SID=nocdb$ export ORACLE_UNQNAME=nocdb

步骤2:确保设置所需的环境变量

根据您的平台,在启动SQL * Plus之前(根据后续步骤的要求),您可能必须设置环境变量,或至少验证它们是否正确设置。如下查看当前已设定的环境变量,如果未设定,请使用export命令方式设定之。

$ env|grep ORAORACLE_UNQNAME=nocdbORACLE_SID=nocdbORACLE_BASE=/app/oracle/ora12cORACLE_HOSTNAME=ydq05.ydq.comORACLE_HOME=/app/oracle/ora12c/db_1

步骤3:选择数据库管理员身份验证方法

您必须进行身份验证并授予相应的系统权限才能创建数据库。

通常情况下,使用以下方式具有所需权限的管理员进行身份验证:

使用密码文件

具有操作系统认证(此演示中使用操作系统认证)

$ id oracleuid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)

步骤4:创建初始化参数文件

当Oracle实例启动时,它读取一个初始化参数文件。该文件可以是文本文件,可以使用文本编辑器或二进制文件进行创建和修改,该文件由数据库创建和动态修改。优选的二进制文件称为服务器参数文件。在此步骤中,您将创建一个文本初始化参数文件。在后面的步骤中,您可以从文本文件创建一个服务器参数文件。

$ mkdir -pv /app/oracle/ora12c/oradata/nocdb #创建存放数据文件的目录$ vi $ORACLE_HOME/dbs/initnocdb.oraDB_NAME=nocdbCONTROL_FILES='/app/oracle/ora12c/oradata/nocdb/contorl01.ctl'MEMORY_TARGET=380m

步骤5:(仅限Windows)创建实例

在Windows平台上,连接到实例之前,必须手动创建它,如果它不存在。该ORADIM命令通过创建一个新的Windows服务创建一个Oracle数据库实例。

oradim -NEW -SID sid -STARTMODE MANUAL -PFILE file

步骤6:连接到实例

启动SQL * Plus并使用管理权限连接到Oracle数据库实例SYSDBA。

$ sqlplus / as sysdba --演示环境为12.1版本SQL*Plus: Release 12.1.0.1.0 Production on Wed May 31 10:44:41 2017Copyright (c) 1982, 2013, Oracle. All rights reserved.Connected to an idle instance.SQL>

步骤7:创建服务器参数文件

服务器参数文件使您可以使用该ALTER SYSTEM命令更改初始化参数,并在数据库关闭和启动时保留更改。您可以从编辑的文本初始化文件创建服务器参数文件。

SQL> create spfile from pfile='/app/oracle/ora12c/db_1/dbs/initnocdb.ora';

步骤8:启动实例

启动实例而不安装数据库。

SQL> startup nomount;ORACLE instance started.Total System Global Area 1068937216 bytesFixed Size     2296576 bytesVariable Size    641729792 bytesDatabase Buffers   419430400 bytesRedo Buffers    5480448 bytes

步骤9:发出CREATE DATABASE语句

要创建新数据库,请使用该CREATE DATABASE语句。

SQL> CREATE DATABASE nocdb USER SYS IDENTIFIED BY pass USER SYSTEM IDENTIFIED BY pass LOGFILE GROUP 1 ('/app/oracle/ora12c/oradata/nocdb/redo01a.log','/app/oracle/ora12c/oradata/nocdb/redo01b.log') SIZE 100M BLOCKSIZE 512,   GROUP 2 ('/app/oracle/ora12c/oradata/nocdb/redo02a.log','/app/oracle/ora12c/oradata/nocdb/redo02b.log') SIZE 100M BLOCKSIZE 512 MAXLOGHISTORY 1 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 1024 CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '/app/oracle/ora12c/oradata/nocdb/system01.dbf' SIZE 700M SYSAUX DATAFILE '/app/oracle/ora12c/oradata/nocdb/sysaux01.dbf' SIZE 550M  DEFAULT TABLESPACE users  DATAFILE '/app/oracle/ora12c/oradata/nocdb/users01.dbf' SIZE 500M  DEFAULT TEMPORARY TABLESPACE tempts1  TEMPFILE '/app/oracle/ora12c/oradata/nocdb/temp01.dbf' SIZE 20M  UNDO TABLESPACE undotbs1  DATAFILE '/app/oracle/ora12c/oradata/nocdb/undotbs01.dbf' SIZE 200M USER_DATA TABLESPACE usertbs  DATAFILE '/app/oracle/ora12c/oradata/nocdb/usertbs01.dbf' SIZE 200M;

步骤10:创建其他表空间

要使数据库起作用,必须为应用程序数据创建其他表空间。

SQL> CREATE TABLESPACE apps_tbs LOGGING   DATAFILE '/app/oracle/ora12c/oradata/nocdb/apps01.dbf'   SIZE 500M REUSE AUTOEXTEND ON NEXT 1280K MAXSIZE UNLIMITED   EXTENT MANAGEMENT LOCAL;

步骤11:运行脚本以构建数据字典视图

运行构建数据字典视图,同义词和PL / SQL包所必需的脚本,并支持SQL * Plus的正常运行。

使用sysdba权限执行以下脚本

SQL> @?/rdbms/admin/catalog.sql --数据库字典,动态视图创建等SQL> @?/rdbms/admin/catproc.sql --PL/SQL存过过程相关代码SQL> @?/rdbms/admin/utlrp.sql  --编译

使用SYSTEM用户执行以下脚本

SQL> @?/sqlplus/admin/pupbld.sql --SQL*Plus相关--验证结果SQL> SELECT name, 2   DECODE (cdb, 3     'YES', 'Multitenant Option enabled', 4     'Regular 12c Database: ') 5   "Multitenant Option", 6   open_mode, 7   con_id 8 FROM v$database;NAME  Multitenant Option   OPEN_MODE    CON_ID--------- -------------------------- -------------------- ----------NOCDB  Regular 12c Database:  READ WRITE     0

步骤12 :(可选)运行脚本以安装其他选项(此处略)

您可能需要运行其他脚本。您运行的脚本由您选择使用或安装的功能和选项决定。

步骤13:备份数据库对数据库(此处略)

进行完整备份,以确保您有一套完整的文件,如果发生介质故障,可以从中恢复。

步骤14:(可选)启用自动实例启动(此处略)

您可能希望将Oracle实例配置为在其主机重新启动时自动启动。

二、12c下手工创建CDB数据库

1、CDB创建相关说明

使用CREATE DATABASESQL语句创建CDB非常类似于创建非CDB。使用CREATE DATABASESQL语句创建CDB时,必须启用PDB并指定根文件和种子文件的名称和位置。

要创建CDB,CREATE DATABASE语句必须包含ENABLE PLUGGABLE DATABASE子句。当包含此子句时,该语句使用根和种子创建CDB。如果未指定ENABLE PLUGGABLE DATABASE子句 那新创建的数据库是非CDB。该语句不会创建根和种子,非CDB永远不会包含PDB。

以下为几个主要差异部分

1、CDB数据库创建时应指定ENABLE PLUGGABLE DATABASE子句

2、CDB数据库应指定根文件和种子文件的名称和位置

  CREATE DATABASE语句使用根文件(如数据文件)生成种子文件的名称。您必须指定根文件和种子文件的名称和位置。

  CREATE DATABASE语句成功完成后,您可以使用种子及其文件创建新的PDB。种子在创建后不能被修改。

  可以通过以下方式之一指定种子文件的名称和位置

    使用 seed FILE_NAME_CONVERT 子句

    如SEED FILE_NAME_CONVERT = (‘/app/oracle/ora12c/oradata/cdb1/','/app/oracle/ora12c/oradata/pdbseed/')表示将cdb1目录下的文件转换到pdbseed目录下

    基于oracle文件托管方式(OMF)

    使用PDB_FILE_NAME_CONVERT初始化参数

3、可以为PDB种子数据库制定不同的属性

  根SYSTEM和SYSAUX表空间的数据文件的属性可能不适合种子。在这种情况下,您可以使用子句为种子的数据文件指定不同的属性tablespace_datafile。使用这些子句指定所有数据文件包含的属性SYSTEM和SYSAUX表空间中的种子。从根继承的值用于尚未提供其值的任何属性。

如下示例

DATAFILE '/u01/app/oracle/oradata/newcdb/system01.dbf' SIZE 325M REUSESYSAUX DATAFILE '/u01/app/oracle/oradata/newcdb/sysaux01.dbf' SIZE 325M REUSE--下面的seed部分使用了不同于上面root容器的配置,--如system数据文件此处大小为125M,而root容器中为352M--seed中开启了自动扩展,sysaux也同样使用了一些不同于root容器的属性--对于在seed中未明确指定的属性,则继承root容器数据文件属性SEEDSYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITEDSYSAUX DATAFILES SIZE 100M

2、创建cdb数据库

详细步骤参考12c下手工创建非cdb数据库,以下部分省略每一步骤详细描述,后面列出差异

--设定环境变量$ export ORACLE_SID=cdb1$ export ORACLE_UNQNAME=cdb1--创建相应目录$ mkdir -pv /app/oracle/ora12c/oradata/cdb1$ mkdir -pv /app/oracle/ora12c/oradata/pdbseed--生成参数文件$ vi $ORACLE_HOME/dbs/initcdb1.oraDB_NAME=cdb1CONTROL_FILES='/app/oracle/ora12c/oradata/cdb1/contorl01.ctl'MEMORY_TARGET=380mENABLE_PLUGGABLE_DATABASE=true--开始建库$ sqlplus / as sysdbaSQL> create spfile from pfile='$ORACLE_HOME/dbs/initcdb1.ora';SQL> startup nomount;SQL> CREATE DATABASE cdb1 USER SYS IDENTIFIED BY pass USER SYSTEM IDENTIFIED BY pass LOGFILE GROUP 1 ('/app/oracle/ora12c/oradata/cdb1/redo01a.log','/app/oracle/ora12c/oradata/cdb1/redo01b.log')     SIZE 100M BLOCKSIZE 512,   GROUP 2 ('/app/oracle/ora12c/oradata/cdb1/redo02a.log','/app/oracle/ora12c/oradata/cdb1/redo02b.log')     SIZE 100M BLOCKSIZE 512 MAXLOGHISTORY 1 MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 1024 CHARACTER SET AL32UTF8 NATIONAL CHARACTER SET AL16UTF16 EXTENT MANAGEMENT LOCAL DATAFILE '/app/oracle/ora12c/oradata/cdb1/system01.dbf' SIZE 700M SYSAUX DATAFILE '/app/oracle/ora12c/oradata/cdb1/sysaux01.dbf' SIZE 550M DEFAULT TABLESPACE deftbs  DATAFILE '/app/oracle/ora12c/oradata/cdb1/deftbs01.dbf' SIZE 500M DEFAULT TEMPORARY TABLESPACE tempts1  TEMPFILE '/app/oracle/ora12c/oradata/cdb1/temp01.dbf' SIZE 20M  UNDO TABLESPACE undotbs1  DATAFILE '/app/oracle/ora12c/oradata/cdb1/undotbs01.dbf' SIZE 200M  ENABLE PLUGGABLE DATABASE  SEED FILE_NAME_CONVERT = ('/app/oracle/ora12c/oradata/cdb1/', '/app/oracle/ora12c/oradata/pdbseed/') SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED SYSAUX DATAFILES SIZE 100M USER_DATA TABLESPACE usertbs DATAFILE '/app/oracle/ora12c/oradata/pdbseed/usertbs01.dbf' SIZE 200M;--填充数据字典,如果是12cR2版本,则直接执行catcdb.sql代替以下脚本 --使用sysdba权限执行以下脚本SQL> @?/rdbms/admin/catalog.sql --数据库字典,动态视图创建等SQL> @?/rdbms/admin/catproc.sql --PL/SQL存过过程相关代码SQL> @?/rdbms/admin/utlrp.sql  --编译--使用SYSTEM用户执行以下脚本SQL> @?/sqlplus/admin/pupbld.sql #SQL*Plus相关SQL> select 'Leshami' Author,'http://blog.csdn.net/leshami' Blog, 2 '645746311' QQ from dual;AUTHOR BLOG       QQ------- ---------------------------- ---------Leshami http://blog.csdn.net/leshami 645746311--验证结果SQL> SELECT name, 2   DECODE (cdb, 3     'YES', 'Multitenant Option enabled', 4     'Regular 12c Database: ') 5   "Multitenant Option", 6   open_mode, 7   con_id 8 FROM v$database;NAME  Multitenant Option   OPEN_MODE    CON_ID--------- -------------------------- -------------------- ----------CDB1  Multitenant Option enabled READ WRITE     0

三、更多参考

Oracle 12c多租户架构及优缺点

http://docs.oracle.com/database/122/ADMIN/creating-and-configuring-an-oracle-database.htm

http://docs.oracle.com/database/122/ADMIN/creating-and-configuring-a-cdb.htm

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对AIDI的支持。


  • 上一条:
    Oracle AWR(自动工作量资料档案库)的管理与维护详解
    下一条:
    Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 分库分表的目的、优缺点及具体实现方式介绍(0个评论)
    • DevDB - 在 VS 代码中直接访问数据库(0个评论)
    • 在ubuntu系统中实现mysql数据存储目录迁移流程步骤(0个评论)
    • 在mysql中使用存储过程批量新增测试数据流程步骤(0个评论)
    • php+mysql数据库批量根据条件快速更新、连表更新sql实现(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客