本例基本涵蓋了Oracle Multitenant功能中application container的以下內容:
- 創建application container/root
- 創建application PDB
- 創建application SEED
- 在application root中安裝application
- 在application root中升級application
- 同步application
整個過程如下
創建application container/root
create pluggable database app1_root as application container
admin user admin identified by Welcome1
roles=(connect);alter session set container=app1_root;alter pluggable database open;
創建兩個application PDB:
create pluggable database app1_pdb1
admin user admin identified by Welcome1
roles=(connect);alter pluggable database app1_pdb1 open;create pluggable database app1_pdb2
admin user admin identified by Welcome1
roles=(connect);alter pluggable database app1_pdb2 open;
創建application SEED:
create pluggable database as seed
admin user admin identified by Welcome1;alter pluggable database app1_root$seed open;
alter pluggable database app1_root$seed close immediate;
alter pluggable database app1_root$seed open read only;
安裝application,版本1.0:
alter session set container=app1_root;
alter pluggable database application APP1_USER_APP begin install '1.0';
create user user1 identified by Welcome1 container=all;
alter pluggable database application APP1_USER_APP end install '1.0';
兩個application PDB與application root同步應用:
alter session set container=app1_pdb1;
alter pluggable database application APP1_USER_APP sync;
alter session set container=app1_pdb2;
alter pluggable database application APP1_USER_APP sync;
升級應用到2.0:
alter session set container=app1_root;
alter pluggable database application APP1_USER_APP begin upgrade '1.0' to '2.0';
grant create session to user1;
alter pluggable database application APP1_USER_APP end upgrade to '2.0';
其中一個application PDB與application root同步應用:
alter session set container=app1_pdb1;
alter pluggable database application APP1_USER_APP sync;
測試:
SQL> connect user1/Welcome1@//localhost/app1_root
Connected.
SQL> connect user1/Welcome1@//localhost/app1_pdb1
Connected.
SQL> connect user1/Welcome1@//localhost/app1_pdb2
ERROR:
ORA-01045: user USER1 lacks CREATE SESSION privilege; logon denied
可以看到,只有同步了應用的PDB具有連接權限。
參考
- Oracle Multitenant Application Containers – Part XI Common Application Users
- About Application Container Administration