数据库和租户数据库深入理解Oracle中的容器数据库与租户数据库(oracle中容器)
数据库和租户数据库深入理解Oracle中的容器数据库与租户数据库
Oracle 12c中引入了容器数据库(Contner Database,CDB)的概念,容器数据库是一种新型的数据库结构,可以同时管理多个租户数据库(Pluggable Database,PDB)。容器数据库本身包括多个容器,每个容器包含一个租户数据库,租户数据库可以独立地管理自己的数据和对象,但可以享受容器数据库的许多优势。
容器数据库的优势
容器数据库和传统的非容器数据库相比,具有几个显著的优点。
1.更好的资源利用:传统的非容器数据库的资源是为整个数据库实例共享的,当数据库实例越大时,资源利用效率越低。容器数据库可以为每个租户数据库独立分配资源,从而使资源利用更加合理高效。
2.更灵活的数据库管理:容器数据库的结构可以使管理员更加灵活地管理数据库。管理员可以通过容器数据库进行整体备份和恢复,也可以对单个租户数据库进行备份和恢复。
3.更可靠的安全性:租户数据库之间的隔离性非常高,每个租户数据库拥有自己的用户账户和权限,对其他租户数据库没有任何影响。
容器数据库的创建
容器数据库的创建与传统的非容器数据库差别不大,可以通过Oracle DBCA(Database Configuration Assistant)或者SQL命令来创建。下面是创建容器数据库的SQL命令:
CREATE DATABASE cdb01
CONTROLFILE REUSE
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
MAXINSTANCES 8
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE ‘/u01/app/oracle/oradata/CDB01/system01.dbf’ SIZE 1G REUSE AUTOEXTEND ON NEXT 512M MAXSIZE UNLIMITED
SYSAUX DATAFILE ‘/u01/app/oracle/oradata/CDB01/sysaux01.dbf’ SIZE 500M REUSE AUTOEXTEND ON NEXT 128M MAXSIZE UNLIMITED
DEFAULT TABLESPACE users DATAFILE ‘/u01/app/oracle/oradata/CDB01/users01.dbf’ SIZE 500M REUSE AUTOEXTEND ON NEXT 128M MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE temp TEMPFILE ‘/u01/app/oracle/oradata/CDB01/temp01.dbf’ SIZE 20M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
UNDO TABLESPACE undotbs1 DATAFILE ‘/u01/app/oracle/oradata/CDB01/undotbs01.dbf’ SIZE 200M REUSE AUTOEXTEND ON NEXT 5M MAXSIZE UNLIMITED
SEED
PLUGGABLE DATABASE pdb01
FILE_NAME_CONVERT = (‘/u01/app/oracle/oradata/CDB01/pdbseed’, ‘/u01/app/oracle/oradata/CDB01/pdb01’)
STORAGE (MAXSIZE 10G)
PATH_PREFIX = ‘/u01/app/oracle/oradata/CDB01/’;
上述SQL命令中创建了一个名为“cdb01”的容器数据库,同时创建了名为“pdb01”的租户数据库。其中SEED是一个系统级别的租户数据库,包含了必要的系统对象,新建的租户数据库可以从SEED作为模板进行创建。
租户数据库的创建
在容器数据库中,可以通过SQL命令或Oracle Enterprise Manager(OEM)创建租户数据库。下面以SQL命令为例,创建一个名为company的租户数据库:
CREATE PLUGGABLE DATABASE company
ADMIN USER admin IDENTIFIED BY company
DEFAULT TABLESPACE users
DATAFILE ‘/u01/app/oracle/oradata/company/users01.dbf’ SIZE 100M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
FILE_NAME_CONVERT = (‘/u01/app/oracle/oradata/CDB01/pdbseed’, ‘/u01/app/oracle/oradata/company’)
STORAGE (MAXSIZE 1G)
PATH_PREFIX = ‘/u01/app/oracle/oradata/CDB01/’;
上述SQL命令中创建了一个名为“company”的租户数据库,管理员账户为admin,密码为company,其他设置均使用了默认值。
租户数据库的管理
在容器数据库中,可以通过连接到容器数据库或者直接连接到租户数据库的方式进行管理。连接到容器数据库后,可以使用下面的命令查看所有租户数据库:
SELECT NAME, OPEN_MODE, RESTRICTED, APPLICATION_ROOT
FROM V$PDBS;
在连接到租户数据库后,可以使用传统的SQL语句对其进行管理,例如创建表、索引、视图等。
总结
容器数据库是Oracle 12c中引入的一种新型的数据库结构,可以同时管理多个租户数据库。容器数据库和传统的非容器数据库相比,具有更好的资源利用、更灵活的数据库管理和更可靠的安全性等优势。通过本文的介绍,读者可以对容器数据库和租户数据库有更深入的理解,并且了解到如何创建和管理租户数据库。