12c手工创建非CDB数据库

2024-05-29 20:38
文章标签 创建 数据库 手工 12c cdb

本文主要是介绍12c手工创建非CDB数据库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于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
  • 1
  • 2

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

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

$ env|grep ORA
ORACLE_UNQNAME=nocdb
ORACLE_SID=nocdb
ORACLE_BASE=/app/oracle/ora12c
ORACLE_HOSTNAME=ydq05.ydq.com
ORACLE_HOME=/app/oracle/ora12c/db_1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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

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

通常情况下,使用以下方式具有所需权限的管理员进行身份验证:
使用密码文件
具有操作系统认证(此演示中使用操作系统认证)

$ id oracle
uid=54321(oracle) gid=54321(oinstall) groups=54321(oinstall),54322(dba)
  • 1
  • 2

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

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

$ mkdir -pv /app/oracle/ora12c/oradata/nocdb #创建存放数据文件的目录$ vi $ORACLE_HOME/dbs/initnocdb.oraDB_NAME=nocdb
CONTROL_FILES='/app/oracle/ora12c/oradata/nocdb/contorl01.ctl'
MEMORY_TARGET=380m
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

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

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

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

步骤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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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

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

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

步骤8:启动实例

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

SQL> startup nomount;
ORACLE instance started.Total System Global Area 1068937216 bytes
Fixed Size                  2296576 bytes
Variable Size             641729792 bytes
Database Buffers          419430400 bytes
Redo Buffers                5480448 bytes
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

步骤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;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

步骤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;
  • 1
  • 2
  • 3
  • 4

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

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

使用sysdba权限执行以下脚本

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

使用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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

步骤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。

以下为几个主要差异部分

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

  • 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初始化参数

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

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

如下示例

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

SEED
SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
SYSAUX DATAFILES SIZE 100M
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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=cdb1
CONTROL_FILES='/app/oracle/ora12c/oradata/cdb1/contorl01.ctl'
MEMORY_TARGET=380m
ENABLE_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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86

三、更多参考

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

DBA牛鹏社(SQL/NOSQL/LINUX)

这里写图片描述

这篇关于12c手工创建非CDB数据库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1014589

相关文章

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

Go语言连接MySQL数据库执行基本的增删改查

《Go语言连接MySQL数据库执行基本的增删改查》在后端开发中,MySQL是最常用的关系型数据库之一,本文主要为大家详细介绍了如何使用Go连接MySQL数据库并执行基本的增删改查吧... 目录Go语言连接mysql数据库准备工作安装 MySQL 驱动代码实现运行结果注意事项Go语言执行基本的增删改查准备工作

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL 数据库表与查询操作实战案例

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧... 目录mysql 数据库表操作与查询实战案例项目一:产品相关数据库设计与创建一、数据库及表结构设计二、数据库与表的创建项目二:员

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

MybatisPlus中removeById删除数据库未变解决方案

《MybatisPlus中removeById删除数据库未变解决方案》MyBatisPlus中,removeById需实体类标注@TableId注解以识别数据库主键,若字段名不一致,应通过value属... 目录MyBATisPlus中removeBypythonId删除数据库未变removeById(Se

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

在 Spring Boot 中连接 MySQL 数据库的详细步骤

《在SpringBoot中连接MySQL数据库的详细步骤》本文介绍了SpringBoot连接MySQL数据库的流程,添加依赖、配置连接信息、创建实体类与仓库接口,通过自动配置实现数据库操作,... 目录一、添加依赖二、配置数据库连接三、创建实体类四、创建仓库接口五、创建服务类六、创建控制器七、运行应用程序八