ORACLE 19C容器数据库概念与CDB PDB常用管理操作

数据库实例:

一个数据库实例是一组管理数据库文件的内存结构。数据库是在磁盘上创建的一组物

文件。  实例管理其联的数据库并为用户提供服务。   每个运行的 Oracle 数据库都与至少  Oracle 数据库实例关联。因为内存中存在一个实例,数据库存在于磁盘上,所以一个 实例可以在没有数据库的情况下存在,并且数据库可以在没有实例的情况下存在

启动实例,分配 SGA ,启动一个或多个后台进程。  SGA 具有多种用途,包括

1.维护许多进程和线程同时访问的内部数据结构

2.缓存从磁盘读取的数据块

3.在将重做数据写入联机重做日志文件之前对其进行缓冲

4.存储 SQL 执行计

在单计算机上运行的 Oracle 进程共享 SGA。数据库实例包括后台进程,服务器进程 以及在这些进程中分配的进程内存也存在于实例中。

ORACLE 19C容器数据库概念与CDB PDB常用管理操作_第1张图片

ORACLE 19C容器数据库概念与CDB PDB常用管理操作_第2张图片

 

单实例,  数库与数据库实例一对一的关系。   RAC 数据库和数据库实例一对多关系 个数据库实例一次仅与一个数据库关联。可以启动一个数据库 实例并将一个数据库装入   (与实例关联),但不能同时装入同一实例的两个数据库。多个实例可以在同一台计算     同时运行,每个实例都访问自己的数据库。例如,一台计算机可以托管两个不同的数据 库: prod1 和 prod2。   一个数据库实例进行管理 prod1 ,而另一个实例进行管理 prod2

ORACLE 19C容器数据库概念与CDB PDB常用管理操作_第3张图片

 标识符( SID )是用于特定主机上的 Oracle 数据库实例的唯一名称。在 Linux 上, Oracle 数 库使用 SID 和 Oracle home 值创建共享内存的密钥。  Oracle 数据库默认情况下使用 SID 来定位初 始化参数文件 ,该文件将找到相关文件,例如数据库控制文件。

 实例启动过程:

当数库从关闭状态进入打开数据库状态时,   它经历了以下阶段:

1.实例启时不挂载数据库:该实例已启动,   但尚未与数据库关联。

2. 数据库装载:该实例已启动,   并通过读取其控制文件与数据库关联,该数据库对用户关闭。               

3.数据库打开:该实例已启动,   并与一个打开的数据库关联。   数据文件中包含的数据可供授权用户访问

ORACLE 19C容器数据库概念与CDB PDB常用管理操作_第4张图片

ORACLE 19C容器数据库概念与CDB PDB常用管理操作_第5张图片

 多租户环境:

多租户环境(Multitenant Environment)中,允许一个数据库容器(CDB)   承载多个 可插拔数库(PDB)。  CDB 全称为 Container Database ,即数据库容器,   PDB 全称为        Pluggable Database,  即可插拔数据库。

select cdb from v$database;

show pdbs

 

 ROOT 组件

ROOT 又叫 CDB$ROOT 即根容器,存储着 ORACLE 提供的元数据和 Common User,   元 据的一个例子是 ORACLE 提供的 PL/SQL 包的源代码,  Common User 是指 在每个容器中都 在的用户。

show con_name

SEED 组件

Seed 叫 PDB$SEED,这个是创建 PDBS 数据库的模板,  不能在 Seed 中添加 或修改 一个对。一个 CDB 中有且只能有一个 Seed。

 PDBS

CDB 可以有一个或多个 PDBS,   PDBS 向后兼容,可以像以前在数据库中那样操作 PDBS ,这里指大多数常规操作。这些组件中的每一个都可以被称为一个容器。因此,

ROOT()是一个容器,   Seed(种子)是一个容器,  每个 PDB 是一个容器。每个容器在 CDB 中都 有一个独 一无二的的 ID 和名称。

DES CDB_PDBS

SYS@orcl(CDB$ROOT)> select PDB_ID,PDB_NAME,DBID,CON_UID from cdb_pdbs;

ORACLE 19C容器数据库概念与CDB PDB常用管理操作_第6张图片

 

情况下使用 sqlplus / as sysdba 登录连接的是 CDB 。在 CDB 启动之后,   PDB 是自动启 到 mount 状态,  而不是 OPEN。

1)启动和关闭 CDB

可以分步骤关闭

SQL> alter database close ;

SQL> alter database dismount;

SQL> shutdown

也可以直接关闭:shutdown immediate   !!!!

2)启动和关闭 PDB

启动或者闭一个或多个 PDB,  指定的名称为一个以逗号分隔的列表。

alter pluggable database prod1 open;

alter pluggable database prod1 close;

alter pluggable database pdb1,pdb2 open read only;    有可能某些版本不支持逗号分割多个PDB

alter pluggable database pdb3 open RESTRICTED;

alter pluggable database pdb1,pdb2 close immediate;

select name,open_mode from v$pdbs;

可直接进入PDB起停数据库:  alter session set container = prod1;

startup nomount;

starup mount;

startup open;

shutdown immediate;

或者关闭 all pdbs

alter pluggable database all open;

alter pluggable database all close immediate;

根容器如何切换到 PDB

SQL> alter session set container=prod1;

SQL> alter database open

SQL> shutdown immediate

PDB 何切换到根容器?

conn / as sysdba

PDB 自动启动

1、触发器

create trigger open_all_pdbs

after startup on database

begin

execute immediate 'alter pluggable database all open';

end open_all_pdbs;

/

2

在 pdb open 状态下打以下命令,  才会自动启动 PDB

SQL> alter pluggable database all save state;

消自动启动 PDB

SQL> alter pluggable database all discard state;

你可能感兴趣的:(数据库,数据库,oracle)