国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

9i新特性之——在線表格重定義研究5

2024-07-21 02:34:09
字體:
供稿:網(wǎng)友
    9、所有的工作都預(yù)備完成,我們執(zhí)行重構(gòu)完成的過程,這個過程將執(zhí)行表的交換。 SQL> execute DBMS_REDEFINITION.FINISH_REDEF_TABLE('MYTEST','TEST', 'INT_TEST');
PL/SQL PRocedure sUCcessfully completed    我們還是往test表中插入數(shù)據(jù),將有什么結(jié)果呢?SQL> insert into test values(103,1);
1 row insertedSQL> select count(*) from test;
        103SQL> select count(*) from int_test;
        102SQL> select * from mlog$_test;
select * from mlog$_test
ORA-00942: table or view does not existSQL> select * from rupd$_test;
select * from rupd$_test
ORA-00942: table or view does not existSQL> select c from audit_test;
104    可以看到,這里的觸發(fā)器執(zhí)行的是以前在ini_test(中間表)上的觸發(fā)器。上一次是102,這次是104。    這里發(fā)生了一個很有趣的轉(zhuǎn)換,其實整個核心就是這里,Oracle這里完成了表test到int_test的表換名的工作,只是所有的約束、索引或觸發(fā)器名稱還是保持了原來的名稱SQL> select t.index_name,t.table_name from user_indexes t;
INT_TEST_PK                    TEST
PK_TEST_ID                     INT_TESTSQL> select t.trigger_name,t.table_name from user_triggers t;
TR_INT_TEST                    TEST
TR_TEST                        INT_TEST    我們檢查對象權(quán)限SQL> select * from USER_TAB_PRIVS_MADE;
SYSTEM  INT_TEST   MYTEST  SELECT   NO        NO
SYSTEM  INT_TEST   MYTEST  DELETE
SYSTEM  TEST       MYTEST     SELECT    NO        NO
SYSTEM  TEST       MYTEST     UPDATE
    這里可以看到,對于所有數(shù)據(jù)字典中的這兩個名稱,其實是完成了一個表的名字對換的過程,所以對于原表的特性,我們必須在新表中給予相同的特性,這樣才能真正的轉(zhuǎn)換到新的表。    10、大功告成,我們可以刪除中間表,并且有可能的話,修改約束,索引,觸發(fā)器的名稱與原來一致,假如你認(rèn)為不重要,可以不予修改。SQL> drop table int_test;
Table dropped    假如是92以上版本,我們可以對索引,約束換名,但是以下版本,最好就是刪除重新建立了    假如運行了START_REDEF_TABLE 過程開始,我們就必須運行    dbms_redefinition.abort_redef_table('MYTEST','TEST','INT_TEST');來終止整個重構(gòu)過程,到這里,就算是完了。SQL> select object_name, object_type, status, object_id, data_object_id from user_objects order by 4;OBJECT_NAME                                                                      OBJECT_TYPE        STATUS  OBJECT_ID DATA_OBJECT_ID
-------------------------------------------------------------------------------- ------------------ ------- --------- --------------
AUDIT_TEST   TABLE               VALID       33579        33579
TEST          TABLE               VALID       33582
TEST          TABLE PARTITION    VALID       33583          33589
TEST          TABLE PARTITION    VALID       33584          33590
TEST          TABLE PARTITION    VALID       33585          33591
TEST          TABLE PARTITION    VALID       33586          33592    6 rows selected    看到這里,你也應(yīng)該相信轉(zhuǎn)換已經(jīng)完成了吧,現(xiàn)在是分區(qū)表了。    總結(jié):    本文不想從大的框架上來說明問題,而是用一些例子來說明問題    這樣可能會更讓大家明白其中發(fā)生的一切。    這里盡量的模擬了實際可能會碰到的情況。    如約束,索引,觸發(fā)器,對象權(quán)限,這個在重新定義的時候需要注重什么,需要我們手工完成什么
    外鍵約束這里沒有舉例說明,其實與普通約束一樣,只是在中間表上建立外鍵約束的時候,最好先禁止掉(DISABLE),等完成之后再打開。    其實主要過程就是完成了一個表的記錄的拷貝(通過快照),最后在數(shù)據(jù)字典中換名的工作。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 松原市| 延川县| 策勒县| 建瓯市| 家居| 无锡市| 信阳市| 柯坪县| 衡山县| 肥城市| 永济市| 山阳县| 革吉县| 宜昌市| 大同县| 蕉岭县| 禄劝| 长垣县| 西安市| 墨玉县| 吴旗县| 泾源县| 承德市| 克山县| 衢州市| 河南省| 乐陵市| 沂南县| 嘉义县| 定兴县| 道孚县| 固始县| 三江| 青龙| 东丰县| 清丰县| 勃利县| 双鸭山市| 唐河县| 孝义市| 行唐县|