【德哥说库系列】-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

相关文章

PostgreSQL数据库密码被遗忘时的操作步骤

《PostgreSQL数据库密码被遗忘时的操作步骤》密码遗忘是常见的用户问题,因此提供一种安全的遗忘密码找回机制是十分必要的,:本文主要介绍PostgreSQL数据库密码被遗忘时的操作步骤的相关资... 目录前言一、背景知识二、Windows环境下的解决步骤1. 找到PostgreSQL安装目录2. 修改p

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

SQL Server数据库死锁处理超详细攻略

《SQLServer数据库死锁处理超详细攻略》SQLServer作为主流数据库管理系统,在高并发场景下可能面临死锁问题,影响系统性能和稳定性,这篇文章主要给大家介绍了关于SQLServer数据库死... 目录一、引言二、查询 Sqlserver 中造成死锁的 SPID三、用内置函数查询执行信息1. sp_w

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔

Oracle修改端口号之后无法启动的解决方案

《Oracle修改端口号之后无法启动的解决方案》Oracle数据库更改端口后出现监听器无法启动的问题确实较为常见,但并非必然发生,这一问题通常源于​​配置错误或环境冲突​​,而非端口修改本身,以下是系... 目录一、问题根源分析​​​二、保姆级解决方案​​​​步骤1:修正监听器配置文件 (listener.

Python中bisect_left 函数实现高效插入与有序列表管理

《Python中bisect_left函数实现高效插入与有序列表管理》Python的bisect_left函数通过二分查找高效定位有序列表插入位置,与bisect_right的区别在于处理重复元素时... 目录一、bisect_left 基本介绍1.1 函数定义1.2 核心功能二、bisect_left 与

Spring中管理bean对象的方式(专业级说明)

《Spring中管理bean对象的方式(专业级说明)》在Spring框架中,Bean的管理是核心功能,主要通过IoC(控制反转)容器实现,下面给大家介绍Spring中管理bean对象的方式,感兴趣的朋... 目录1.Bean的声明与注册1.1 基于XML配置1.2 基于注解(主流方式)1.3 基于Java

基于Python+PyQt5打造一个跨平台Emoji表情管理神器

《基于Python+PyQt5打造一个跨平台Emoji表情管理神器》在当今数字化社交时代,Emoji已成为全球通用的视觉语言,本文主要为大家详细介绍了如何使用Python和PyQt5开发一个功能全面的... 目录概述功能特性1. 全量Emoji集合2. 智能搜索系统3. 高效交互设计4. 现代化UI展示效果

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事