iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Oracle 12c如何实现手工建库而非CDB及CDB创建
  • 298
分享到

Oracle 12c如何实现手工建库而非CDB及CDB创建

2024-04-02 19:04:59 298人浏览 八月长安
摘要

这篇文章给大家分享的是有关oracle 12c如何实现手工建库而非CDB及CDB创建的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。相信大家应该都知道,对于Oracle数据库的创建

这篇文章给大家分享的是有关oracle 12c如何实现手工建库而非CDB及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

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

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

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

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

使用密码文件

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

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

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

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

$ mkdir -pv /app/oracle/ora12c/oradata/nocdb #创建存放数据文件的目录

$ vi $ORACLE_HOME/dbs/initnocdb.ora

DB_NAME=nocdb
CONTROL_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 2017

Copyright (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 bytes
Fixed Size     2296576 bytes
Variable Size    641729792 bytes
Database Buffers   419430400 bytes
Redo 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 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

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.ora

DB_NAME=cdb1
CONTROL_FILES='/app/oracle/ora12c/oradata/cdb1/contorl01.ctl'
MEMORY_TARGET=380m
ENABLE_PLUGGABLE_DATABASE=true

--开始建库
$ sqlplus / as sysdba

SQL> 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如何实现手工建库而非CDB及CDB创建”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle 12c如何实现手工建库而非CDB及CDB创建

本文链接: https://www.lsjlt.com/news/55660.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle 12c如何实现手工建库而非CDB及CDB创建
    这篇文章给大家分享的是有关Oracle 12c如何实现手工建库而非CDB及CDB创建的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。相信大家应该都知道,对于Oracle数据库的创建...
    99+
    2024-04-02
  • Oracle 12c中怎么手动创建CDB
    这期内容当中小编将会给大家带来有关Oracle 12c中怎么手动创建CDB,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用create database创建CDB的具体...
    99+
    2024-04-02
  • Oracle如何实现手工建库
    这篇文章主要为大家展示了“Oracle如何实现手工建库”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Oracle如何实现手工建库”这篇文章吧。 可参考官方文档...
    99+
    2024-04-02
  • Oracle如何手工创建数据库
    这篇文章给大家分享的是有关Oracle如何手工创建数据库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。手工创建数据库步骤1. 创建instance步骤①准备参数文件pf...
    99+
    2024-04-02
  • 如何手工创建数据库
    这篇文章给大家分享的是有关如何手工创建数据库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Refer Doc:Administrator’s Guide->2 Creati...
    99+
    2024-04-02
  • oracle 11g如何进行手工建库
    这篇文章给大家介绍oracle 11g如何进行手工建库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。工作环境: ORE 6.5手工建库是作为dba必须掌握的一个基本技能,它使清楚的认识oracle的目录结构、oracl...
    99+
    2023-06-06
  • oracle如何创建实例、建库、建表、扩展表空间
    这篇文章主要介绍oracle如何创建实例、建库、建表、扩展表空间,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!版本:oracle 11g 一、创建实例(详细参考:http:...
    99+
    2024-04-02
  • oracle表空间如何创建及实现dmp文件导入
    这篇文章给大家分享的是有关oracle表空间如何创建及实现dmp文件导入的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。--用oracle系统权限的账号 登陆-- 1.创...
    99+
    2024-04-02
  • oracle中如何实现静默安装和手动建库
    这篇文章主要介绍oracle中如何实现静默安装和手动建库,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 之前都是复制粘贴参数! 这次了解了两个关于内存的参数介绍shmall 是全部...
    99+
    2024-04-02
  • Java如何实现扑克牌的创建及发放
    这篇文章主要讲解了“Java如何实现扑克牌的创建及发放”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java如何实现扑克牌的创建及发放”吧!题目:创建一个扑克牌(不需要包含大小王),分别分发...
    99+
    2023-07-05
  • 如何实现MySQL中创建数据库的语句?
    标题:MySQL中创建数据库的语句及代码示例在MySQL中,创建数据库是非常重要的一项操作,它为我们提供了存储和管理数据的基础。本文将详细介绍如何在MySQL中使用SQL语句创建数据库,包括具体的代码示例。MySQL是一种流行的关系型数据库...
    99+
    2023-11-08
    数据库 创建 关键词:MySQL
  • Java如何实现自动数据库表的创建
    要实现自动创建数据库表,您可以使用Java的数据库操作API(如JDBC)结合SQL语句来完成。下面是一个基本的Java代码示例,演...
    99+
    2023-09-27
    Java 数据库
  • springBoot中如何实现java自动创建数据库表功能
    小编给大家分享一下springBoot中如何实现java自动创建数据库表功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!SpringBoot环境启动项目创建数据...
    99+
    2023-06-20
  • mysql如何实现用户创建、修改、删除及授权操作
    这篇文章主要介绍了mysql如何实现用户创建、修改、删除及授权操作,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、mysql命令进行连接如...
    99+
    2024-04-02
  • 如何实现xp、2003开3389+非net创建管理用户+Shift后门+自删除的vbs脚本
    这篇文章主要介绍了如何实现xp、2003开3389+非net创建管理用户+Shift后门+自删除的vbs脚本,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:on&nb...
    99+
    2023-06-08
  • Mysql如何实现查看,创建用户、赋权、删除表用户数据库等操作
    这篇文章主要介绍Mysql如何实现查看,创建用户、赋权、删除表用户数据库等操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 创建用户、赋权、表空间--...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作