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

相关文章

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示