(Oracle数据库管理每周一例(12.2,18c,19c) 2020-06-17

Oracle数据库管理每周一例(12.2,18c,19c) 2020-06-17

  • 第三期 容器数据库的连接
    • 1.基本连接
    • 2.使用SERVICE访问到PDB
    • 3.RAC中的SERVICE
    • 4.管理SERVICE
    • 下期预告:

第三期 容器数据库的连接

1.基本连接

在以前的版本中,访问单实例数据库可以使用SID和SERVICE_NAME两种方式进行访问,而在RAC环境中通过SCANIP则主要使用SERVICE_NAME来访问数据库,当然从11g开始,Oracle是建议使用SERVICE_NAME来连接数据库的。
从12c开始,在容器数据库多租户模式下,CDB和PDB是承载在一个数据库实例上的,那么要访问CDB或者PDB无法使用SID的方式,只能使用SERVICE_NAME的方式。
(Oracle数据库管理每周一例(12.2,18c,19c) 2020-06-17_第1张图片
在前一期中也讲到了如何使用sqlplus远程访问到容器数据库:
sqlplus user/password@ip:port/[cdb/pdb]_service_name
单实例环境下,在不考虑SERVICE_NAME域名后缀的情况下,CDB的SERVICE_NAME一般与数据库名一致,PDB的SERVICE_NAME和PDB_NAME一致。

2.使用SERVICE访问到PDB

有一种比较特殊的需求,PDB建立好了运行一段时间之后,需要更改数据库连接的SERVICE_NAME,而更改PDB_NAME非常麻烦,这种情况下就可以通过srvctl创建一个SERVICE,下面以使用TEST1的SERVICE_NAME访问PDB1为例进行演示:

srvctl add service -db oradb -pdb pdb1 -service TEST1
srvclt start service -db oradb -service TEST1

pdb1的SERVICE创建完成后,监听中会增加:
(Oracle数据库管理每周一例(12.2,18c,19c) 2020-06-17_第2张图片
然后就可以通过TEST1的SERVICE_NAME来访问pdb1:
(Oracle数据库管理每周一例(12.2,18c,19c) 2020-06-17_第3张图片
这里还要注意一点,主要安装grid启用Oracle Restart之后才能使用srvctl。

3.RAC中的SERVICE

RAC作为多实例数据库,每个计算节点承载一个实例,各实例之间会通过集群私有网络传输高速缓冲块、心跳信息、ASM信息、集群一致性信息等数据。
在多节点(节点数>2)RAC中如果一个业务对应的PDB的每个实例都参与数据库运算,那么这个PDB中使用私有网络的数据会在所有实例中流转,会极大增加私有网络压力,会造成cluster级别的等待,在一些情况下甚至会造成私有网络拥塞引起集群故障,因此需要减少参与计算的实例数量。
另一种情况,在一套RAC中,存在测试开发环境和生产环境,需要将部分实例用于测试开发,部分实例用于生产,二者之间通过划分实例进行隔离。
那么为了解决RAC环境中的上述问题,可以通过srvctl add service的-preferred参数来限定PDB的示例(下面操作、截图基于生产环境,4节点RAC):

srvctl add service -db dbname -pdb pdb_zydb -service zytest -preferred SID4

以上命令会在节点4创建名称为zytest的SERVICE,通过SERVICE_NAME:zytest可以访问节点4上pdb2,而不会使用其他节点。同时SCANIP上的监听也会新增名为zytest的SERVICE,包含节点4的实例;通过crsctl status res -t也可以查看:
在这里插入图片描述
在这里插入图片描述
(Oracle数据库管理每周一例(12.2,18c,19c) 2020-06-17_第4张图片

4.管理SERVICE

通过srvctl status service命令可以查看SERVICE状态:
在这里插入图片描述
通过srvctl config service命令可以查看SERVICE配置情况:
(Oracle数据库管理每周一例(12.2,18c,19c) 2020-06-17_第5张图片
使用srvctl modify service -modifyconifg命令可以修改SERVICE命令:
在这里插入图片描述

下期预告:

容器数据库的性能管理。

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