Oracle19c的多租户笔记

1.多租户的概念

  • PDB(PLUGGABLE DATABASE)可以理解为我们Oracle11gR2的数据库,只不过是一个实例上面可以放置多个数据库了。名称为插件式数据库。
  • CDB(container DATABASE)容器数据库,作为插件式数据库的基石。所有的PDB都需要它,这里面有一个种子(seed)数据库的概念。可以以它为模板,克隆新的数据库。CDB的root存储了 Oracle-supplied metadata 和common users。其中common users,后面在讲。

2.实战

概念说多了,容易混淆。我们通过实践,来做一个感性的认识。

2.1 查看19c数据库是否为CDB

通过查看CDB这一列,判断是否为CDB。

SQL> SELECT NAME, CDB, CON_ID FROM V$DATABASE;

NAME			    CDB 	  CON_ID
--------------------------- --------- ----------
ORADB YES 0

查看当前pdb有哪些:

SQL> show pdbs;

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 HRPDB READ WRITE NO

这里有一个种子pdb和一个HRPDB。

关于何如通过tns连接这个HRPDB,我在监听配置的文章有写。不过多描述

2.2 创建一个新的PDB

假设:开发人员来需求了,需要创建一个新的财务数据库,要有自己的表空间。该如何操作?

CREATE PLUGGABLE DATABASE finpdb
ADMIN USER finadm IDENTIFIED BY fin123456
STORAGE (MAXSIZE 2G)
DEFAULT TABLESPACE fin
DATAFILE '/u01/app/oracle/oradata/ORADB/finpdb/fin01.dbf' SIZE 256M
AUTOEXTEND ON
PATH_PREFIX = '/u01/app/oracle/oradata/ORADB/finpdb/'
FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/ORADB/pdbseed/',
'/u01/app/oracle/oradata/ORADB/finpdb/');

上述可以看到:

  • 有属于自己的表空间fin,大小为256M,自动扩展。
  • 有属于自己的datafile的存储路径/u01/app/oracle/oradata/ORADB/finpdb/
  • 所有表空间不能超过2G,这个限制嘛,有待商榷。
  • 复制的datafile是来自于种子插件式数据库。

查看当前finpdb的状态

SQL> show pdbs;

    CON_ID CON_NAME			  OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 HRPDB READ WRITE NO
4 FINPDB MOUNTED

我们该如何启动它呢?如下命令:

SQL> alter pluggable database FINPDB open;

开启后,我们查看finpdb的数据文件如下:

[oracle@localhost finpdb]$ pwd
/u01/app/oracle/oradata/ORADB/finpdb
[oracle@localhost finpdb]$ ls -l
total 979040
-rw-r----- 1 oracle oinstall 268443648 Jan 29 15:40 fin01.dbf
-rw-r----- 1 oracle oinstall 346038272 Jan 29 15:40 sysaux01.dbf
-rw-r----- 1 oracle oinstall 283123712 Jan 29 15:40 system01.dbf
-rw-r----- 1 oracle oinstall 37756928 Jan 29 15:41 temp012021-01-29_10-33-01-510-AM.dbf
-rw-r----- 1 oracle oinstall 104865792 Jan 29 15:40 undotbs01.dbf

可以看到,finpdb有完全属于自己一套的数据文件,如上。其中fin01是我们新建的表空间。

2.3 为新创建的PDB配置监听服务

listener.ora文件,配置如下:

        (SID_DESC=
(GLOBAL_DBNAME=FINPDB)
(SID_NAME=oradb)
(ORACLE_HOME=/u01/app/oracle/product/19.3/dbhome_1)
)

重启监听服务

[oracle@localhost admin]$ lsnrctl stop
[oracle@localhost admin]$ lsnrctl start
.........
Services Summary...
Service "FINPDB" has 1 instance(s).
Instance "oradb", status UNKNOWN, has 1 handler(s) for this service...
Service "HRPDB" has 1 instance(s).
Instance "oradb", status UNKNOWN, has 1 handler(s) for this service...
Service "ORADB" has 1 instance(s).
Instance "oradb", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

如果可以看到Service "FINPDB",说明FINPDB的监听服务,配置正确。

tnsnames.ora文件,配置如下:

FINDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.99.202)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FINPDB)
)
)

通过system用户,登录FINDB服务。如下:

[oracle@localhost admin]$ sqlplus system@FINDB
Enter password:xxxxxx
SQL>

这个验证了,system和sys用户,属于common user。在CDB和PDB是共有的概念。

2.4 common user的概念

这里正好可以说出common user的具体概念。 common user is a database user that has the same identity in the root and in every existing and future PDB within this container.

说白了,看system和sys。相同的唯一标识,可以在CDB root和PDB中切换使用。如下图:

根据图上,发现如果是common user只有两类

  • sys和systm的用户

  • C##为前缀定义的用户

创建C##DBA用户

[oracle@localhost ~]$ sqlplus system@ORADB
Enter password: xxxxxx
Connected. CREATE USER C##DBA
IDENTIFIED BY dba123456
DEFAULT TABLESPACE SYSTEM
TEMPORARY TABLESPACE TEMP
CONTAINER = ALL; GRANT SET CONTAINER, CREATE SESSION,DBA TO C##DBA CONTAINER = ALL;

用C##DBA用户连接FINDB 数据库

[oracle@localhost ORADB]$ sqlplus C##dba@FINDB

SQL*Plus: Release 19.0.0.0.0 - Production on Fri Jan 29 16:53:25 2021
Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Enter password: Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0 SQL>
---------------------这里创建一个用户-----------------------
-- Create the user
create user fin identified by fin
default tablespace fin
temporary tablespace TEMP;
-- Grant/Revoke role privileges
grant connect to fin;
grant resource to fin;
-- Grant/Revoke system privileges
grant create materialized view to fin;
grant create synonym to fin;
grant create view to fin;

至此,fin用户创建完毕.后面和数据库Oracle11gR2没有任何区别的创建,表,视图等.

Oracle19c的多租户笔记的更多相关文章

  1. MyCat 学习笔记 第七篇.数据分片 之 按数据范围分片

    1 应用场景 Mycat 其实自带了2个数据范围分片的方案,一个是纯数据范围的分片,比如 1至 10000 号的数据放到分片1 ,10001 至 20000号数据放到分片2里. 另一个是数据常量形式的 ...

  2. Openstack实验笔记

    Openstack实验笔记 制作人:全心全意 Openstack:提供可靠的云部署方案及良好的扩展性 Openstack简单的说就是云操作系统,或者说是云管理平台,自身并不提供云服务,只是提供部署和管 ...

  3. docker容器的学习笔记

    目录 Docker入门学习笔记(一) 1. 什么是Docker? 2. Docke的目标 3. Docker通常应用场景 4. Docker的基本组成 补:Docker容器相关技术简介 安装Docke ...

  4. Centos7——docker入门(笔记)

    docker 入门(笔记) 一.Docker是什么? 官方原话: Docker provides a way to run applications securely isolated in a co ...

  5. (二)学习了解OrchardCore笔记——开篇:OrchardCore的中间件

    现在开始看Starpup的中间件.这是一个扩展方法app.UseOrchardCore() public void Configure(IApplicationBuilder app, IHostEn ...

  6. 《k8s权威指南》读书笔记

    抽空读完了<k8s权威指南>一书,对k8s的总算有了较为系统的认知. 好记忆不如多写字,以下是读书笔记 第一章 k8s入门 k8s是什么: 一个开源的容器集群管理平台,可提供容器集群的自动 ...

  7. Nacos 笔记

    Nacos 笔记 目录 Nacos 笔记 1. Nacos简介 1.1 主流配置中心对比 1.2 主流注册中心对比 1.3 Nacos特性 2. 安装启动 支持外部 MySQL 3. 配置管理 3.1 ...

  8. 【Kubernetes】K8s笔记(十一):Ingress 集群进出流量总管

    目录 0. Ingress 解决了什么问题 1. Ingress Controller 2. 指定 Ingress Class 使用多个 Ingress Controller 3. 使用 YAML 描 ...

  9. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

随机推荐

  1. ELK原理介绍

    本篇转载自:https://www.cnblogs.com/aresxin/p/8035137.html 为什么使用日志系统: 日志系统记录了系统运行.业务处理的方方面面,在故障排除.业务分析.数据挖 ...

  2. WPF 中的相关样式

    <Image Name="icon" Width="40" Height="40"  Source="/Resources/ ...

  3. Python之猜拳游戏

    第一次写这东西,主要是为了记录自己的学习历程,或者说是为了忘记的时候找回来看看. 今天是参加风变编程培训第10天.昨天晚上完成了第10关关底的猜拳小游戏. 要求:人和电脑轮流出拳.判断输赢. 给出列表 ...

  4. (十五)、linux软件的安装与查询-rpm与yum命令

    一.RPM软件管理程序:rpm 1.RPM安装软件(install) rpm命令的选项超级多,安装话直接使用-ivh即可,其余做了解即可 命令格式:rpm  -ivh  package_name.rp ...

  5. Vitis AI--个人调试篇

    一.下载VITIS-AI的仓库 单独git clone很慢,因此先将其导入到gitee平台,再执行clone 1. Import VITIS-AI github repo into gitee rep ...

  6. Bitmap 图像灰度变换原理浅析

    上篇文章<拥抱 C/C++ : Android JNI 的使用>里提到调用 native 方法直接修改 bitmap 像素缓冲区,从而实现将彩色图片显示为灰度图片的方法.这篇文章将介绍该操 ...

  7. 一个关于JVM类初始化问题

    刚在看虚拟机相关知识点 看到一段代码,大家猜测一下这段代码会触发子类初始化吗 public class SuperClass{ static{ system.out.println("Sup ...

  8. C# 串口连接的读取与发送

    一.串口连接的打开与关闭 串口,即COM口,在.NET中使用 SerialPort 类进行操作.串口开启与关闭,是涉及慢速硬件的IO操作,频繁打开或关闭会影响整体处理速度,甚至导致打开或关闭串口失败. ...

  9. swing桌面四子棋程序开发过程中遇到的一些问题记录(二)

    第二个遇到的问题是将JButton按钮设置成透明的按钮.首先UI给我一张透明的图片,如果我直接给Button按钮设置背景图片的话,是没有透明的效果的,只会留下白色的底,设置前后的效果如下图 制作透明的 ...

  10. 短信平台开发,G客短信系统功能介绍

    G客短信群发平台功能介绍 支持HTTP 接口 .CMPP SMPP等 这里只有基本功能介绍 联系微信:290615413 QQ:290615413 一:客户端功能 1:首页仪表盘 首页包含 2:发送短 ...