zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

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

DatabaseOracle学习 连载 12C 租户 之多
2023-09-11 14:16:10 时间

这里我们只阐述前两种创建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;


我这里的环境,是使用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;


/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”


界面1:Configure Security Updates 取消选择“I wish to receive security updates via My Oracle Support”, 点击“next” 弹出的提示框选择“Yes” 界面2:Installation Option ...