【德哥说库系列】-Oracle 19C容器数据库日常管理

2023-10-09 10:44

本文主要是介绍【德哥说库系列】-Oracle 19C容器数据库日常管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

  • 前言
    • 📣 1.多租户架构
      • ✨ 1.1 CDB 根容器
      • ✨ 1.2 PDB
      • ✨ 1.3 cdb 表空间
    • 📣 2.PDB和CDB的管理
      • ✨ 2.1 确认CDB
      • ✨ 2.2 连接到 CDB
      • ✨ 2.3 连接到 PDB
      • ✨ 2.4 PDB创建及删除
    • 📣 3.容器数据库自启动
      • ✨ 3.1 PDB 自动启动
      • ✨ 3.1 Oracle19c开机启动

前言

本文详细阐述了Oracle 19C容器数据库日常管理

📣 1.多租户架构

容器是多租户容器数据库(CDB)中模式、对象和相关结构的集合,在逻辑上应用程
序将其显示为单独的数据库。在 CDB 中,每个容器都有一个唯一的 ID 和名称。 根和每
个可插拔数据库(pdb)都被视为一个容器。pdb 隔离数据和操作,因此从用 户或应用程
序的角度来看,每个 pdb 看起来都像是传统的非 cdb。

✨ 1.1 CDB 根容器

根容器是所有 pdb 所属的模式、模式对象和非模式对象的集合。每个 cdb 都有且 只
有一个根容器,根容器被命名 CDB$ROOT。用于存储管理 pdb 所需的系统元数据。 所有
pdb 都属于根目录。 根目录不存储用户数据。因此,不能将用户数据添加到根目录或修改
根目录中系 统提供的架构。但是,可以为数据库管理创建公共用户和角色。

✨ 1.2 PDB

pdb 是用户创建的一组模式、对象和相关结构,在逻辑上对应用程序显示为单独 的数
据库。每个 pdb 都归 sys 所有,sys 是 cdb 中的一个公共用户。

1)存储特定应用程序的数据
例如,销售应用程序可以有自己的专用 PDB,人力资源应用程序可以有自己的专用PDB。
2)将数据移动到其他 CDB
数据库是“可插入的”,可以将其打包为一个独立的单元,然后将其移动到另一个 cdb中。
3)在 PDB 中隔离授权
具有适当权限的本地或公共用户可以授予单个 pdb 中的 public。

在 CDB 中,所有数据库对象都位于架构中,而架构又位于容器中。因为 pdb 在用 户
看来是非 cdb,所以模式必须在容器中唯一命名,而不能跨容器命名。例如,rep 模式既可
以存在于 SalePDB 中,也可以存在于 HrPDB 中。这两个模式是独立的。
连接到一个 pdb 的用户必须使用 database links 来访问另一个 pdb 中的对象。 这种
行为直接类似于非 cdb 中的用户访问不同非 cdb 中的对象。
连接到一个 pdb 的用户必须使用 database links 来访问另一个 pdb 中的对象。 这种行为直接类似于非 cdb 中的用户访问不同非 cdb 中的对象。

在这里插入图片描述

在物理层,CDB 是一组文件,控制文件、联机重做日志文件和数据文件。
在物理层,每个 PDB 都有自己的一组数据文件,用于存储 PDB 的数据。

多租户体系结构的好处:
1)降低成本(10 台服务器变成 1 台,共享进程,共享系统资源)
2)更容易和更快速的数据和代码的移动(可拔插数据库,像 U 盘一样)
3)更轻松地管理和监控物理数据库(至少不用连接 N 多服务器来观察)
4)分离数据和代码
5)安全分离管理权限(各个 PDB 之间的权限依旧独立)
6)轻松性能调优

多租户体系结构对可管理性的好处
•更容易升级数据和代码
•更容易在服务器之间迁移
•防止 PDB 中的数据损坏
•能够在一个地方安装、管理和升级特定于应用程序的数据和元数据

✨ 1.3 cdb 表空间

在这里插入图片描述

cdb 的结构与非 cdb 相同,只是每个 pdb 和应用程序根目录都有自己的表空间集,包
括自己的 SYSTEM, SYSAUX, and undo 表空间。
1)SYSTEM and SYSAUX tablespaces for every container
2)每个 pdb 都有自己的一组非系统表空间。这些表空间包含 pdb 中用户定义的模式 和
对象的数据。 在 pdb 中,管理永久表空间和临时表空间的方式与在非 cdb 中管理它们的
方式相同。
3)CDB 根存在一个默认临时表空间,每个 PDB 都有一个临时表空间。

📣 2.PDB和CDB的管理

✨ 2.1 确认CDB

SQL> select name, decode(cdb, ‘YES’, ‘Multitenant Option enabled’,
'Regular 19c Database: ') “Multitenant Option” , open_mode, con_id from
v$database;

在这里插入图片描述

✨ 2.2 连接到 CDB

1)简易方式连接
[oracle@OEL7 ~]$ sqlplus / as sysdba
2)使用 net service 方式连接
[oracle@OEL7 ~]$ sqlplus system/oracle@192.168.6.30:1521/prod

在这里插入图片描述

✨ 2.3 连接到 PDB

1)使用简单连接方式连接到 pdb3
[oracle@OEL7 ~]$ sqlplus / as sysdba
SYS@orcl(CDB$ROOT)> alter session set container=pdb3;
2)使用 net service 方式连接
[oracle@OEL7 ~]$ sqlplus system/oracle@192.168.6.30:1521/pdb3

✨ 2.4 PDB创建及删除

从 seed PDB 创建一个 PDB,每个 CDB 有一个 PDBtemplate,名为 PDB$Seed创建一个操作系统的目录用来存放新创建的 PDB 数据库的数据文件和临时文件:
mkdir -p /u01/app/oracle/oradata/cdb1/prod31)创建 PDB
select name from v$datafile where con_id=(select con_id from v$pdbs where name='PDB$SEED');create pluggable database pdb4 admin user jeames identified by 123456
file_name_convert=('/u01/app/oracle/oradata/ORCL/pdbseed','/u01/app/oracle/oradata/ORCL/pdb4') ;

在这里插入图片描述
2)重命令PDB

rename  pdb 时,pdb需要处于 open restricted 状态。
SQL> select name ,open_mode from v$pdbs ;
SQL> alter pluggable database pdb4 close immediate ;
SQL> alter pluggable database pdb4 open restricted ;
SQL> select name ,restricted from v$pdbs ;
SQL> conn sys/oracle@192.168.6.5:1521/pdb4 as sysdba
SQL> alter pluggable database pdb4 rename global_name to pdb4_his ;
SQL> alter pluggable database close immediate ;
SQL> select name ,open_mode from v$pdbs ;
SQL> conn / as sysdba
SQL> alter pluggable database pdb4 open;
SQL> select name ,open_mode from v$pdbs ;

3)PDB 删除

SQL> conn / as sysdba
SQL> alter pluggable database PDB4_HIS close;
SQL> select name ,open_mode from v$pdbs ;
SQL> drop pluggable database PDB4_HIS including datafiles ;
SQL> select name ,open_mode from v$pdbs ;

📣 3.容器数据库自启动

✨ 3.1 PDB 自动启动

在 pdb open 状态下打以下命令,才会自动启动 PDB
SQL> alter pluggable database all save state;
取消自动启动 PDB
SQL> alter pluggable database all discard state;

在这里插入图片描述

✨ 3.1 Oracle19c开机启动

# 1、root用户修改 /etc/oratab, 将上面的N改为Y
vi /etc/oratab
PROD:/u01/app/oracle/product/19.3.0/dbhome_1:N
将上面的N改为Y# 2、oracle用户修改
su - oracle
cd $ORACLE_HOME/bin
vi dbstart
修改 #ORACLE_HOME_LISTNER=$1 为 ORACLE_HOME_LISTNER=$ORACLE_HOMEvi dbshut
修改 #ORACLE_HOME_LISTNER=$1 为 ORACLE_HOME_LISTNER=$ORACLE_HOME# 3、root用户修改
chmod 777 /etc/rc.d/rc.local
vi /etc/rc.d/rc.local添加 
# for oracle
su - oracle -lc 'lsnrctl start'
su - oracle -lc 'dbstart'# 4. 重启,测试成功
reboot 或 init 6注意: su - oracle -lc 'lsnrctl start'-l 表示同时切换用户目录。比如你要换到oracle用户下你的目录就同时在oracle目录下了。
-c则表示执行完命令好再返回到原来的用户。

经过测试我们发现,服务器库开机自启动容器数据库19C

在这里插入图片描述

这篇关于【德哥说库系列】-Oracle 19C容器数据库日常管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/172285

相关文章

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

oracle中exists和not exists用法举例详解

《oracle中exists和notexists用法举例详解》:本文主要介绍oracle中exists和notexists用法的相关资料,EXISTS用于检测子查询是否返回任何行,而NOTE... 目录基本概念:举例语法pub_name总结 exists (sql 返回结果集为真)not exists (s

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日