第八十六期 19c OCM之路-第一堂(02)
本来计划是昨天写的,但是昨天突发膝盖筋膜炎,去骨科医院做了下治疗,前后两夜几乎无眠。本期内容主要是针对第一堂第四个考点:Manage application containers内容去做的一些分析,由于这个功能用的确实不多,但是整体内容也不算太少,作为一堂的一个考点应该考不了太多内容吧。
考点4:Manage application containers 管理Application容器
- 创建一个名为appcdb的application container并完成其seed库创建
create pluggable database appcdb as application container admin user admin identified by oracle file_name_convert=('/pdbseed/','/appcdb/');
alter pluggable database appcdb open;
-- alter pluggable database appcdb save state;alter session set container=appcdb;
create pluggable database as seed admin user admin identified by oracle file_name_convert=('/pdbseed/','/appcdbseed/');
alter pluggable database appcdb$seed open;
alter session set container=appcdb$seed;
alter pluggable database application all sync;
alter pluggable database close immediate;
alter pluggable database open read only;
-- alter pluggable database appcdb save state;
- 在appcdb中通过复制pdbprod1的方式创建一个名为apppdb1的application pdb,并确保能跟随CDB启动。
alter session set container=appcdb;
create pluggable database apppdb1 from pdbprod1 file_name_convert=('/pdbprod1/','/apppdb1/');
alter pluggable database apppdb1 open;
alter session set container=apppdb1;
@ ?/rdbms/admin/pdb_to_apppdb.sql
alter pluggable database close immediate;
alter pluggable database open;
alter pluggable database save state;
- 在appcdb中创建一个名为appv的application,初始版本为1.0。1.0执行script01.sql,2.0执行script02.sql,1.2执行script03.sql。
alter session set container=appcdb;
alter pluggable database application appv begin install '1.0';
-- 模拟script01.sql
-- alter session set container=apppdb1;
-- update hr.employees set salary=salary*1.2;
-- commit;
alter session set container=appcdb;
alter pluggable database application appv end install ;alter session set container=appcdb;
alter pluggable database application appv begin upgrade '1.0' to '1.1';
-- 模拟script02.sql
-- alter session set container=apppdb1;
-- update hr.employees set salary=salary*1.5;
-- commit;
alter session set container=appcdb;
alter pluggable database application appv end upgrade;alter session set container=appcdb;
alter pluggable database application appv begin upgrade '1.1' to '1.2';
-- 模拟script03.sql
-- alter session set container=apppdb1;
-- update hr.employees set salary=salary*2;
-- commit;
alter session set container=appcdb;
alter pluggable database application appv end upgrade;
这里执行完成后会出现两个新的PDB,作为不同版本的记录。
- 控制appv版本compatibility至1.1版本
alter pluggable database application appv set compatibility version '1.1';
这时候1.0版本将被舍弃。
- 其他一些操作:
alter session set container=appcdb;
alter pluggable database application appv begin patch 230629 minimum version '1.1';
alter pluggable database application appv end patch 230629;alter pluggable database application appv begin uninstall;
alter pluggable database application appv end uninstall;
这些操作还是读题吧,理解的不是太透彻,也希望其他大佬协助一下。
考点5:Network configuration 网络配置
- 服务端配置:
创建一个名称为LSNR2端口为1525的监听,并让PRODCDB自动注册到该监听:
这里可以使用netca创建监听,也可以通过手动添加配置信息的方式添加:
$ORACLE_HOME/network/admin/listener.ora
LSNR2 =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = host01)(PORT = 1525))(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1525))))lsnrctl start LSNR2
注:这里要求HOST使用主机名而不是IP地址。这里建议把所有数据库的静态监听也给做了。
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=PRODCDB)(SID_NAME=PRODCDB)(ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1))(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=pdbprod1)(SID_NAME=PRODCDB)(ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1))...(SID_LIST=(SID_DESC=(GLOBAL_DBNAME=PROD5)(SID_NAME=PROD5)(ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1)))lsnrctl reload listener
# 记不住咋办?$ORACLE_HOME/network/admin/samples/listener.ora里面有相关内容,tnsnames同样
prodcdb
sqlplus / as sysdba
alter system set local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=host01)(PORT=1525))';
alter system register;
- 客户端连接配置:
这一部分详见大多数上一期的考点1部分就行了。
使用PROD_S通过LSNR_2共享方式访问至pdbprod1:
$ORACLE_HOME/network/admin/tnsname.ora
PROD_S =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = host01)(PORT = 1525))(CONNECT_DATA =(SERVER = SHARED)(SERVICE_NAME = PRODCDB)))
注:这里就可能出现需要通过默认监听(1521)连接到PRODCDB和其PDB中,因此上一步还是完成静态监听操作。
总结
第一堂还剩下少数一些内容。主要是Application Container相关内容比较繁琐,争取下一期更新完第一堂。
老规矩,知道写了些啥。