,一库完成Oracle实现一库搞定,无需再分库(oracle 不分库)

在大型企业级应用系统中,数据管理往往是一个非常复杂的任务。为了保证系统性能和数据安全性,很多公司都采用了分库分表的方式来管理数据。然而,分库分表带来的管理复杂度和系统运维成本也是不容忽视的。

为了解决这个问题,Oracle在12c版中推出了新功能——Multitenant架构。这种架构将数据库分为一个主数据库和多个容器数据库。这样,一个多租户应用可以将所有的数据存储在一个数据库中,并使用各自的容器进行隔离,以达到与分库分表相当的数据管理效果。

一个数据库可以容纳多个容器,并且每个容器都是独立的。容器可以看作是磁盘中的一个文件夹,只是其中存储的是数据库对象(表、视图、索引等)。容器里存储的数据库对象对其他容器是不可见的,因此不会出现分库分表时容易出现的数据不一致问题。

Multitenant架构的设计思想是将一个数据库分为两个层次:CDB(Contner Database)和PDB(pluggable database)。其中CDB是容器数据库的顶层数据库,包含了所有的元数据和逻辑。而PDB是真正存储数据的容器,它们通过一个叫做Pluggable Database的概念来管理。

下面我们通过实例来看一个基本的Multitenant架构的配置。

第一步:建立主数据库

在创建Multitenant架构前,需要先创建一个主数据库(CDB)。在创建之前,需要确认你的Oracle版本是Enterprise Edition(支持Multitenant)。下面是创建一个CDB的基本语法:

CREATE DATABASE cdb01

…..

ENABLE_PLUGGABLE_DATABASE

SEED

;

其中,ENABLE_PLUGGABLE_DATABASE是启用PDB可插入式数据库的选项,SEED是指如果有数据集,用其作为模板创建容器数据库,如果没有则默认创建一个数据库用作模板。

该语句可以创建一个CDB,而不创建任何PDB。在创建CDB之后,需要连接到新创建的CDB中,以进行接下来的配置。

第二步:创建PDB

接下来,创建一个PDB:

CREATE PLUGGABLE DATABASE pdb01

ADMIN USER pdbadmin IDENTIFIED BY pwd

STORAGE UNLIMITED;

其中,pdb01是PDB的名称,pdbadmin是PDB的管理员账号的名称,pwd是管理员账号的密码,STORAGE UNLIMITED表示PDB的存储空间没有限制。

这个语句将在CDB中创建一个PDB。注意,在创建PDB之前,必须已经创建了CDB,并且连接到了CDB中。

第三步:连接到PDB

可以使用以下语句将连接切换到PDB:

ALTER SESSION SET CONTNER=pdb01;

这个语句将会将当前会话切换到刚才创建的PDB中。注意,这个语句只能在连接到CDB时才有效。

第四步:数据操作

现在,我们可以在PDB中执行数据存储操作。这与操作普通的单库系统没有什么区别,例如:

CREATE TABLE mytable (

myid NUMBER,

myname VARCHAR2(20)

);

这个语句将为PDB中创建一个名为mytable的表。

通过这几个简单的步骤,我们已经创建了一个基本的Multitenant架构,并且可以在其中存储数据。总结一下,Multitenant架构通过将多个PDB隔离在同一个CDB中,提供了一种可插拔式的数据管理方式。使用这种架构,开发和运维人员可以将大量数据隔离到不同的容器中,从而降低系统的管理复杂度和运维成本。


数据运维技术 » ,一库完成Oracle实现一库搞定,无需再分库(oracle 不分库)