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。

以下为几个主要差异部分

  • 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

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多租户架构及优缺点

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

时间: 2024-10-01 04:54:59

Oracle 12c手工建库(非CDB及CDB创建)的相关文章

oracle 10G手工建库及OEM配置

今天闲来无事,天气太热,坐在办公室就像练蒸功夫一样,于是乎,就实施了一次手工建库,并启用OEM来管理数据库 以下操作都是用 oracle 用户组 1.创建文本初始化参数文件init$SID.ora及相应的dump目录 vi  $ORACLE_HOME/dbs/initLHZ.ora compatible='10.2.0.4.0' db_name='LHZ' sga_max_size=500M sga_target=200M undo_management='AUTO' undo_tablespa

如何在oracle中手工建库

1.建立口令文件,用于sys用户远程登录的认证(remote_login_passwordfile=exclusive),位置 $ORACLE_HOME/dbs/orapwSID.创建命令: orapwd [oracle@work dbs]$ orapwd file=orapwprod password=oracle entries=5 force=y remote_login_passwordfile 1)none 拒绝sys用户从远程连接 2)exclusive sys用户可以从远程连接 3

Oracle 11g手工建库

                     > >                                                                                                            

手工建库

手工建库步骤: 1.创建数据库所需的目录,包括数据文件存放目录,日志存放目录,归档存放目录等2.创建密码文件3.创建参数文件4.通过刚创建的pfile参数将数据库启动的nomount状态5.开始执行create database 命令创建数据库6.创建数据库相关视图和数据字典7.检查数据库状态,是否创建完成8.将创建数据库用的pfile参数创建成spfile,以后启动的时候不需要指定.9.重启数据库,验证第八步骤10.数据库创建完成. ------------------------------

Oracle手工建库

000  环境:OEL6.5+Oracle 11g R2 前提:数据库软件已安装完毕 001 建立参数文件 1.1 进入init.ora所在目录 cd $ORACLE_HOME/dbs 1.2 利用init.ora生成init.ora文件,即所谓的pfile. cat init.ora | grep -v ^# | grep -v ^$ > initPROD.ora 1.3 修改pfile 需要修改的参数:db_name.audit_file_dest.db_recovery_file_dest

Oracle 10g手动建库的详细步骤

1.建立需要的目录 mkdir -p/ora/oracle/admin/bdump mkdir -p/ora/oracle/admin/cdump mkdir –p/ora/oracle/admin/dpdump mkdir -p/ora/oracle/admin/udump mkdir -p/ora/oracle/admin/adump mkdir -p/arch/archivelog mkdir -p/ora/oracle/oradata/zjlg mkdir -p/ora/oracle/f

Oracle软件安装及手工建库

一.阅读官方文档 二.安装数据库软件(参考实验手册) 1.上传oracle软件包并解压缩 unzip p10404530_112030_Linux-x86-64_1of7.zip unzip p10404530_112030_Linux-x86-64_2of7.zip 2.建组.用户   groupadd oinstall   groupadd dba   useradd -d /home/oracle -g oinstall -G dba -m oracle 3.设置环境变量  (1)系统环境

ORACLE RAC 手动建库

环境 11.2.0.1 RAC 前提条件 Grid Infrastructure已经安装 ASM已经创建 DB软件已经安装 通过手动创建RAC可以更深的理解单实例DB和RAC DB 的一些区别,在DBCA无法使用的场景中,也需要手动的方式创建,创建步骤如下: 大概思路:先创建单实例DB再转为RAC DB 1.       创建目录 mkdir -p /u01/app/oracle/admin/orcl/adump 2.       编辑参数文件 *.audit_file_dest='/u01/a

DBCA建库问题处理之-无法创建RAC实例

在安装完RAC11.2.0.4,并打上PSU后,在通过DBCA创建数据库实例是出现诡异现象: 弹出来的框为单实例创建,二并非RAC实例.反复试了几次都是同样的问题,检查安装无问题. 在metalink上查看了下,问题原因很多,同事通过sqlplus连接空实例测试出现如下报错: [oracle@zderp2vprd01 cfgtoollogs]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Thu Nov 17 09