Oracle11gr2觸發器新增版本升級功能(一)
Oracle11gr2增加了版本升級觸發器功能。
這篇簡單描述CROSSEDITION功能。
11.2不但增加了版本的功能,而且還提供了不停機的版本升級功能。為了保證在升級版本的過程中,使用者仍然可以訪問資料,Oracle提供了CROSSEDITION觸發器來處理版本升級或降級過程中的資料問題。
簡單的說,CROSSEDITION觸發器可以其他的版本中生效,使得登陸到其他版本的會話執行的DML可以正確的將資料應用到當前版本。如果是升級版本,使用FORWARD CROSSEDITION觸發器,這個觸發器在當前版本的父版本中觸發。如果是降級版本,使用REVERSE CROSSEDITION觸發器,這個觸發器在當前版本和子版本中觸發。
由於版本升級涉及的內容比較多,這裡只給出一個最簡單的升級版本使用CROSSEDITION對應的例子:
SQL> CREATE TABLE T_PERSON (ID NUMBER PRIMARY KEY,
2 FIRST_NAME VARCHAR2(30),
3 LAST_NAME VARCHAR2(30));
表已建立。
SQL> INSERT INTO T_PERSON
2 SELECT ROWNUM, OBJECT_NAME, OBJECT_TYPE
3 FROM USER_OBJECTS;
已建立15行。
SQL> COMMIT;
提交完成。
SQL> CREATE EDITION E_1;
版本已建立。
SQL> ALTER SESSION SET EDITION = E_1;
會話已更改。
SQL> ALTER TABLE T_PERSON ADD FULL_NAME VARCHAR2(60);
表已更改。
SQL> CREATE TRIGGER T_CROSSEDITION_PERSON
2 BEFORE INSERT OR UPDATE ON T_PERSON
3 FOR EACH ROW
4 CROSSEDITION
5 BEGIN
6 :NEW.FULL_NAME := :NEW.FIRST_NAME || :NEW.LAST_NAME;
7 END;
8 /
觸發器已建立
SQL> ALTER SESSION SET EDITION = ORA$BASE;
會話已更改。
SQL> INSERT INTO T_PERSON
2 (ID, FIRST_NAME, LAST_NAME)
3 VALUES (16, 'T_CROSSEDITION_PERSON', 'TRIGGER');
已建立 1 行。
SQL> SELECT * FROM T_PERSON;
ID FIRST_NAME LAST_NAME FULL_NAME
---------- --------------------- --------------- -----------------------------------
1 T VIEW
2 T_TABLE TABLE
3 T_TABLE TRIGGER
4 T_MYTEST TYPE
5 FORCE TYPE
6 T_TYPE TYPE
7 ABC TABLE
8 S_1 SYNONYM
9 T1 TABLE
10 S_MY_EDITION SYNONYM
11 T_PERSON TABLE
12 SYS_C0011140 INDEX
13 T_LOG TABLE
14 T TRIGGER
15 TEST DATABASE LINK
16 T_CROSSEDITION_PERSON TRIGGER T_CROSSEDITION_PERSONTRIGGER
已選擇16行。
SQL> UPDATE T_PERSON
2 SET FIRST_NAME = 'TEST.US.ORACLE.COM'
3 WHERE ID = 15;
已更新 1 行。
SQL> SELECT * FROM T_PERSON;
ID FIRST_NAME LAST_NAME FULL_NAME
---------- --------------------- --------------- -----------------------------------
1 T VIEW
2 T_TABLE TABLE
3 T_TABLE TRIGGER
4 T_MYTEST TYPE
5 FORCE TYPE
6 T_TYPE TYPE
7 ABC TABLE
8 S_1 SYNONYM
9 T1 TABLE
10 S_MY_EDITION SYNONYM
11 T_PERSON TABLE
12 SYS_C0011140 INDEX
13 T_LOG TABLE
14 T TRIGGER
15 TEST.US.ORACLE.COM DATABASE LINK TEST.US.ORACLE.COMDATABASE LINK
16 T_CROSSEDITION_PERSON TRIGGER T_CROSSEDITION_PERSONTRIGGER
已選擇16行。
SQL> COMMIT;
提交完成。
SQL> ALTER SESSION SET EDITION = E_1;
會話已更改。
SQL> INSERT INTO T_PERSON
2 (ID, FIRST_NAME, LAST_NAME)
3 VALUES (17, 'TEST', 'TEST');
已建立 1 行。
SQL> SELECT * FROM T_PERSON;
ID FIRST_NAME LAST_NAME FULL_NAME
---------- --------------------- --------------- -----------------------------------
1 T VIEW
2 T_TABLE TABLE
3 T_TABLE TRIGGER
4 T_MYTEST TYPE
5 FORCE TYPE
6 T_TYPE TYPE
7 ABC TABLE
8 S_1 SYNONYM
9 T1 TABLE
10 S_MY_EDITION SYNONYM
11 T_PERSON TABLE
12 SYS_C0011140 INDEX
13 T_LOG TABLE
14 T TRIGGER
15 TEST.US.ORACLE.COM DATABASE LINK TEST.US.ORACLE.COMDATABASE LINK
16 T_CROSSEDITION_PERSON TRIGGER T_CROSSEDITION_PERSONTRIGGER
17 TEST TEST
已選擇17行。
在這個例子中,在建立了新版本後,還需要部署新版本對應的過程、檢視,最終可能還要處理父版本的資料,使之轉化為新版本的格式。在整個的過程中,新版本和舊版本都是可用的,因此存在同時訪問兩個版本的情況,透過建立CROSSEDITION觸發器,將訪問父版本時產生的資料自動轉化為新版本的格式,從而避免了版本升級到來的停機時間。
當新版本升級完成,舊版本資料全部轉化後,將資料庫的預設版本設定為新版本,則升級工作完成,CROSSEDITION觸發器的歷史使命也最終完成。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-624546/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【版本升級】PerfDog新增多維度測試報告對比功能、iOS電量測試功能升級測試報告iOS
- bettertouchtool mac教程:如何新增一個新的觸發器Mac觸發器
- NiFi版本升級Nifi
- gcc版本升級GC
- node 版本升級
- python版本升級Python
- 記一次mysql小版本升級MySql
- Homestead 升級PHP版本PHP
- GitLab跨版本升級Gitlab
- 一場版本升級引發的效能血案的追凶過程
- Hanlp1.7版本的新增功能一覽HanLP
- 記一次版本升級遇到的坑
- 如何升級電腦windows版本 windows系統版本升級方法介紹Windows
- Win10怎麼升級版本 Win10升級版本的方法Win10
- C#各版本新增加功能C#
- erp軟體31.86版本與其他版本有何不同?升級哪些新功能?
- Node 快速切換版本、版本回退(降級)、版本更新(升級)
- nginx 版本升級 轉載Nginx
- Mac brew 升級 PHP版本MacPHP
- Redis的跨版本升級Redis
- 升級mac的PHP版本MacPHP
- YourSQLDba版本升級總結SQL
- Cocospod 升級到指定版本
- 如何升級fedora的版本
- ThinkPHP升級至 5.1.18 版本PHP
- [打怪升級]小程式評論回覆和發貼功能實戰(一)
- 12. Oracle版本、補丁及升級——12.3. 升級Oracle
- 如何將 Ubuntu 版本升級到新版本Ubuntu
- 【MSSQL】MSSQL 從Express版本升級到Enterprise版本SQLExpress
- nginx升級與版本回退Nginx
- Mac 升級 PHP 到 7.4 版本MacPHP
- JavaFX桌面應用-版本升級Java
- MacOS升級python版本(親測)MacPython
- CentOs下手動升級node版本CentOS
- 安裝升級Linux GCC版本LinuxGC
- IE瀏覽器低版本判斷及升級提示瀏覽器
- PHP版本升級:從php7.1升級到php7.2PHP
- 重大升級!英特爾 CPU 內購功能 (SDSI)已新增至 Linux 5.18 核心中Linux
- win10 ie11瀏覽器版本過低怎麼升級_win10 ie11瀏覽器版本過低升級如何操作Win10IE11瀏覽器