暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle19C-多租户管理

vic 2024-02-04
967

一、多租户架构

在中大型企业公司中,使用数据库可能达到成百上千,基本上都处于多个物理服务器之上,带来的是维护成本以及硬件资源浪费。Oracle从12C开始引入多租户概念,由单个实例软件应用程序服务多个客户(租户)多个组织或这样用户共享相同的系统或应用程序。彼此之间的数据以及配置是隔离的,拥有自己的独立环境。可以理解成一栋楼,由一个房东将多个房间租给多个房客。每个房客都是自己的房间,共享楼中的资源。


image.png
多租户架构使Oracle 数据库能够充当多租户容器数据库 (CDB)。CDB包括零个,一个或多个客户创建的可插拔数据库 (PDB) 。
多租户容器数据库中的容器(CDB)每个都包含以下PDB:

1、CDB根容器(CDB root container):CDB 根容器用于管理和隔离PDB,元数据共享,全局资源管理等。
2、种子容器(seed PDB):种子 PDB 是系统提供的模板,CDB 可使用它来创建新的 PDB。种子 PDB 名为PDB$SEED。
3、应用程序容器(application containers):在 CDB 中,应用程序容器是一种特殊类型的 PDB,其目的是容纳多个相关联的 PDB。应用程序容器允许将一组 PDB 作为单个实体进行管理,共享元数据和资源。这有助于更好地组织和隔离相关联的应用程序。
4、用户创建的PDB(user-created PDBs):用户创建的一组模式、对象和相关结构,在逻辑上对客户端应用程序显示为单独的数据库 。

二、CDB管理

主要涉及CDB创建,删除,更改等操作

#1、创建 CDB CREATE DATABASE ... ENABLE PLUGGABLE DATABASE; 如果不指定该ENABLE PLUGGABLE DATABASE子句,则新创建的数据库是非CDB。 #2、查看 SQL> SELECT NAME, CDB, CON_ID FROM V$DATABASE; NAME CDB CON_ID --------- --- ---------- DB1 YES 0

三、PDB管理

(一)创建PDB

(1)从种子pdb中复制创建PDB

1.创建PDB

sys@DB1 01:44:14> alter session set pdb_file_name_convert='pdbseed','pdb2'; Session altered. sys@DB1 01:44:19> create pluggable database pdb2 admin user pdbroot identified by xxxxxx; Pluggable database created. sys@DB1 01:44:38> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB2 MOUNTED

2.启动PDB以及配置PGA和SGA

sys@DB1 01:44:42> ALTER SESSION SET CONTAINER=pdb2; Session altered. ##启动 sys@DB1 01:47:21> ALTER PLUGGABLE DATABASE pdb2 OPEN; Pluggable database altered. ##配置PGA sys@DB1 01:47:37> ALTER SYSTEM SET PGA_AGGREGATE_TARGET=20G SCOPE=MEMORY; ALTER SYSTEM SET PGA_AGGREGATE_TARGET=20G SCOPE=MEMORY * ERROR at line 1: ORA-02097: parameter cannot be modified because specified value is invalid ORA-56747: invalid value 21474836480 for parameter pga_aggregate_target; must be smaller than parameter pga_aggregate_target of the root container ##设置的PGA_AGGREGATE_TARGET的值大于了根容器(root container)的PGA_AGGREGATE_TARGET的值,需要确保你在pdb2中设置的PGA_AGGREGATE_TARGET的值小于或等于根容器的限制,查询根容器的PGA_AGGREGATE_TARGET的值,然后相应地调整pdb2中的设置。 sys@DB1 01:47:42> SHOW PARAMETER PGA_AGGREGATE_TARGET; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_target big integer 782M ####根容器的PGA_AGGREGATE_TARGET的值为782M。因此,你可以在pdb2中设置一个小于或等于这个值的PGA_AGGREGATE_TARGET sys@DB1 01:47:57> ALTER SYSTEM SET PGA_AGGREGATE_TARGET=700M SCOPE=MEMORY; System altered. ### 配置SGA sys@DB1 01:49:26> ALTER SYSTEM SET SGA_TARGET=700M SCOPE=MEMORY; System altered. ###查看 sys@DB1 02:05:42> SHOW PARAMETER PGA_AGGREGATE_TARGET; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ pga_aggregate_target big integer 700M sys@DB1 01:55:31> show parameter sga_target; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ sga_target big integer 700M

3、创建永久表空间

sys@DB1 01:44:42> ALTER SESSION SET CONTAINER=pdb2; Session altered. sys@DB1 02:15:41> create tablespace YXSC datafile '/data/DB2/YXSC_data01.dbf' size 100m; Tablespace created.

4、创建临时表空间

sys@DB1 01:44:42> ALTER SESSION SET CONTAINER=pdb2; Session altered. ###查看表空间组 sys@DB1 02:33:43> select GROUP_NAME,TABLESPACE_NAME from dba_tablespace_groups; GROUP_NAME TABLESPACE_NAME ------------------------------ ------------------------------ TEMP_GRP TEMP1 ###查看默认临时表空间 sys@DB1 02:34:35> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE'; PROPERTY_NAME -------------------------------------------------------------------------------------------------------------------------------- PROPERTY_VALUE -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------DEFAULT_TEMP_TABLESPACE TEMP

(2)克隆创建PDB

sys@DB1 02:49:15> CREATE PLUGGABLE DATABASE DB4 ADMIN USER db4root IDENTIFIED BY xxxxxxx ROLES=(DBA) FILE_NAME_CONVERT=('/data/DB1/', '/data/DB4/db4/'); Pluggable database created. sys@DB1 02:50:07> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 PDB2 READ WRITE NO 4 DB4 MOUNTED 6 DB3 MOUNTED

(二)启动关闭PDB

##切换到容器内 sys@DB1 03:15:36> alter session set container=pdb2; Session altered. ##查看当前pdb sys@DB1 03:43:23> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 PDB2 READ WRITE NO ##关闭PDB sys@DB1 03:43:34> shutdown immediate; Pluggable Database closed. ##查看状态已关闭 sys@DB1 03:43:43> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 PDB2 MOUNTED ##启动PDB sys@DB1 03:43:45> startup ; Pluggable Database opened. ##查看状态已开启 sys@DB1 03:43:51> show pdbs; CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 PDB2 READ WRITE NO
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论