Oracle Database 12C 学习之多租户(连载二)

要使用可插拔数据库,必须在创建CBD时,设置可插拔选项。创建CDB,可以有如下方式:

1,使用create database命令手工创建;

2,使用DBCA;

3,通过DBCA生成脚本,然后修改并手工执行;

4,使用RMAN复制现有的CDB。

这里我们只阐述前两种创建CDB的方式,其他方式,各位小伙伴可以自己琢磨。

使用create database命令创建CDB,实际上就是手工建库了。

手工建库的内容,在官方文档的管理员手册中的第二章中的

Creating a Database with the CREATE DATABASE Statement

已有详细描述。这里不做赘述。只说在创建普通数据库也就是non-CDB和CDB时的区别。

1,参数文件部分:

需要添加enable_pluggable_database,并且该参数必须为true

2,create database语句部分(注意目录需要事先创建):


CREATE DATABASE newcdb
  USER SYS IDENTIFIED BY sys_password  USER SYSTEM IDENTIFIED BY system_password  LOGFILE GROUP 1 ('/u01/logs/my/redo01a.log','/u02/logs/my/redo01b.log') 
             SIZE 100M,
          GROUP 2 ('/u01/logs/my/redo02a.log','/u02/logs/my/redo02b.log') 
             SIZE 100M,
          GROUP 3 ('/u01/logs/my/redo03a.log','/u02/logs/my/redo03b.log') 
             SIZE 100M
  MAXLOGHISTORY 1
  MAXLOGFILES 16
  MAXLOGMEMBERS 3
  MAXDATAFILES 1024
  CHARACTER SET AL32UTF8
  NATIONAL CHARACTER SET AL16UTF16
  EXTENT MANAGEMENT LOCAL
  DATAFILE '/u01/app/oracle/oradata/newcdb/system01.dbf'
    SIZE 700M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
  SYSAUX DATAFILE '/u01/app/oracle/oradata/newcdb/sysaux01.dbf'
    SIZE 550M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
  DEFAULT TABLESPACE deftbs
     DATAFILE '/u01/app/oracle/oradata/newcdb/deftbs01.dbf'
     SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
  DEFAULT TEMPORARY TABLESPACE tempts1
     TEMPFILE '/u01/app/oracle/oradata/newcdb/temp01.dbf'
     SIZE 20M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
  UNDO TABLESPACE undotbs1
     DATAFILE '/u01/app/oracle/oradata/newcdb/undotbs01.dbf'
     SIZE 200M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED   ENABLE PLUGGABLE DATABASE    SEED    FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/newcdb/',                          '/u01/app/oracle/oradata/pdbseed/')    SYSTEM DATAFILES SIZE 125M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED    SYSAUX DATAFILES SIZE 100M  USER_DATA TABLESPACE usertbs    DATAFILE '/u01/app/oracle/oradata/pdbseed/usertbs01.dbf'    SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;


这里,着重看一下黑体部分的内容。

需要指定种子容器的文件存放路径。

3,脚本执行部分

原来手工建库完成之后,需要以sys用户执行$ORACLE_HOME/rdbms/admin下面的catalog.sql,以及catproc.sql,当然,还可以执行$ORACLE_HOME/sqlplus/admin下面的pupbld.sql。

但是在创建CDB的时候,oracle建议使用perl脚本运行所有上述sql。


[oracle@ora12 ~]$ cd /u01/oracle/product/11.2.0/rdbms/admin/

[oracle@ora12 admin]$ ls -lrt|grep catcon.pl

-rw-r--r--. 1 oracle oinstall 13220 Jun 14 2014 catcon.pl

[oracle@ora12 admin]$ more catcon.pl

运行命令如下:

[oracle@ora12 admin]$ perl catcon.pl -u sys/oracle -s -e -d $ORACLE_HOME/rdbms/admin -b catalog1 catalog.sql > catalog.log;

[oracle@ora12 admin]$ perl catcon.pl -u sys/oracle -s -e -d $ORACLE_HOME/rdbms/admin -b catproc1 catproc.sql > catproc.log;

[oracle@ora12 admin]$ perl catcon.pl -u system/oracle -s -e -d $ORACLE_HOME/sqlplus/admin -b pupbld1 pupbld.sql > pupbld.log;

完成之后,就可以连接CDB进行维护及后继操作了。

需要记得前面选择了高级安装模式,然后在这里,你就可以设置数据库为CDB,并且指定pdb的个数及其名称的前缀。

CDB创建完成之后,

SYS@ora12c> select name,cdb from v$database;

NAME  CDB

--------- ---

ORA12C  YES

可以看到,我们创建的就是CDB。

SYS@ora12c> select con_id,name from v$containers;



CON_ID NAME

---------- ------------------------------

 1 CDB$ROOT

 2 PDB$SEED

 3 ORA12C_PDB1

我这里的环境,是使用DBCA方式创建了一个带有一个PDB的CDB。

也可以使用SYS_CONTEXT函数:

SYS@ora12c> SELECT SYS_CONTEXT ('USERENV', 'CON_NAME') FROM DUAL;

SYS_CONTEXT('USERENV','CON_NAME')

--------------------------------------------------------------------------------

CDB$ROOT

管理CDB时,通常需要使用sys用户连接到根容器。只有在使用具有sysdba权限的用户,才可以执行如下操作:

1,实例的启动和关闭;

2,归档的启用和关闭;

3,管理所有与CDB相关的设置,比如修改内存设置;

4,对数据文件进行备份和恢复操作;

5,管理控制文件;

6,管理redo log;

7,管理根容器的undo 表空间;

8,管理根容器的临时表空间;

9,创建公共用户及角色。

ok,我们来看相关的实验:

[oracle@ora12 ~]$ sqlplus / as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Thu Dec 17 09:13:35 2015

Copyright (c) 1982, 2014, Oracle. All rights reserved.

Connected to an idle instance.

SYS@ora12c> startup

ORACLE instance started.

Total System Global Area 838860800 bytes

Fixed Size  2929936 bytes

Variable Size  687868656 bytes

Database Buffers  142606336 bytes

Redo Buffers  5455872 bytes

Database mounted.

Database opened.

SYS@ora12c> show pdbs;

CON_ID CON_NAME  OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

 2 PDB$SEED  READ ONLY NO

 3 ORA12C_PDB1  MOUNTED

SYS@ora12c> alter pluggable database ora12c_pdb1 open;

--打开某一个可插拔数据库。

SYS@ora12c> show pdbs;



CON_ID CON_NAME  OPEN MODE RESTRICTED

---------- ------------------------------ ---------- ----------

 2 PDB$SEED  READ ONLY NO

 3 ORA12C_PDB1  READ WRITE YES

SYS@ora12c> alter pluggable database all open;



Pluggable database altered.

--当然,也可以打开所有的可插拔数据库。

接下来,看容器切换:



SYS@ora12c> show con_name;



CON_NAME

------------------------------

CDB$ROOT
当前容器为根容器。

切换到种子容器:

SYS@ora12g> alter session set container=PDB$SEED;

Session altered.

SYS@ora12g> select file_name from dba_data_files;

FILE_NAME

--------------------------------------------------------------------------------

/u01/oracle/oradata/ora12g/pdbseed/system01.dbf

/u01/oracle/oradata/ora12g/pdbseed/sysaux01.dbf

SYS@ora12g> select file_name from dba_temp_files;

FILE_NAME

--------------------------------------------------------------------------------

/u01/oracle/oradata/ora12g/pdbseed/pdbseed_temp012015-10-08_07-32-05-PM.dbf

--可见,种子容器中默认只有system,sysaux以及temp表空间。

SYS@ora12c> shutdown immediate;

ORA-65017: seed pluggable database may not be dropped or altered

切换到可插拔数据库:

SYS@ora12c> alter session set container=ORA12C_PDB1;

Session altered.

SYS@ora12c> shutdown immediate;

Pluggable Database closed.

---可插拔数据库是可以关闭或者打开的,但是种子容器就不行了。

本文来自云栖社区合作伙伴“DBGEEK”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值