Oracle数据库工程师手记:探究 Oracle PDB Application Container (一)

2022-08-19 21:02:05 浏览数 (1)

编者按:

本文作者系大连健哥, POSTGRESQL、ORACLE 数据库资深从业人员、IT 技术的深度爱好者。相信科学改变人类、技术创造未来。个人主页:https://www.cnblogs.com/gaojian/,经其本人授权发布。

【免责声明】本号文章仅代表个人观点,与任何公司无关。

生成 Application Container,以及 Application PDB 的作成方法:

Oracle 的 CDB 中,本来就是可以有很多的 PDB,

但是 Oracle 引入了一种特殊的 PDB,这种 PDB 被声明为:"AS APPLICATION CONTAINER"。

这以后,我们可以连接到这个特殊的PDB(例如:alter session set container= 此PDB),

此时我们再建立新的 PDB, 会从属于 此 Application Container PDB。

好处到底是什么呢?

比如我有一个 Application Container PDB, 有 三个 Application PDB(PDB#1, PDB#2, PDB#3)。

奥妙之处在于 Application:

我在这个 Application Container 中,建立一个 Application。此 Application 中建立的对象,

比如表,可以被这三个 Application PDB 共享。

我只要修改 Application 中的表一次,多个 Application PDB 就都可以看到这个修改的结果了。

下面是第一个例子(建立 application container 和 application pdb 和 application):

代码语言:javascript复制
<<<<< 建立 application container:
 
SQL> alter system set db_create_file_dest='/refresh/home/cpdest';
SQL> CREATE PLUGGABLE DATABASE appcon1 AS APPLICATION CONTAINER ADMIN USER app_admin IDENTIFIED BY Password1;
 
 
<<<<< 建立 application pdb:
 
SQL> ALTER PLUGGABLE DATABASE appcon1 OPEN;
SQL> ALTER SESSION SET container = appcon1;
 
SQL> CREATE PLUGGABLE DATABASE apppdb1 ADMIN USER pdb_admin IDENTIFIED BY Password1;
SQL> ALTER PLUGGABLE DATABASE apppdb1 OPEN;
 
 
<<<< 建立 application (请注意 下面的 SHARING=DATA,一共有三种方式)
 
SQL> ALTER SESSION SET container = appcon1;
 
SQL> ALTER PLUGGABLE DATABASE APPLICATION ref_app BEGIN INSTALL '1.0';
 


SQL> CREATE TABLESPACE ref_app_ts DATAFILE SIZE 1M AUTOEXTEND ON NEXT 1M;
 
SQL> CREATE USER ref_app_user IDENTIFIED BY ref_app_user
  DEFAULT TABLESPACE ref_app_ts
  QUOTA UNLIMITED ON ref_app_ts
  CONTAINER=ALL;
 
SQL> GRANT CREATE SESSION, CREATE TABLE TO ref_app_user;
 
SQL> CREATE TABLE ref_app_user.reference_data SHARING=DATA (
  id          NUMBER,
  description VARCHAR2(50),
  CONSTRAINT t1_pk PRIMARY KEY (id)
);
 
SQL> INSERT INTO ref_app_user.reference_data
SELECT level,
       'Description of ' || level
FROM   dual
CONNECT by level <= 5;
COMMIT;
 
SQL> select * from ref_app_user.reference_data;
 
        ID DESCRIPTION
---------- --------------------------------------------------
         1 Description of 1
         2 Description of 2
         3 Description of 3
         4 Description of 4
         5 Description of 5
 
SQL> ALTER PLUGGABLE DATABASE APPLICATION ref_app END INSTALL;
 
<<<<< 可以用如下的查询,查看 application 的版本信息:
 
SQL> COLUMN app_name FORMAT A20
COLUMN app_version FORMAT A10SQL>
SQL>
SQL>
SQL> SELECT app_name,
       app_version,
       app_status
FROM   dba_applications
WHERE  app_name = 'REF_APP';
 
APP_NAME             APP_VERSIO APP_STATUS
-------------------- ---------- ------------
REF_APP              1.0        NORMAL
 
SQL>

0 人点赞