成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Oracle數據庫通過在線重定義的方法新增字段詳解

數據庫 Oracle
本文我們主要介紹了Oracle數據庫操作中,當數據庫表的數據量比較大的時候,采用在線重定義的方法新增字段的方法,以避免undo空間不足以及其他用戶不能訪問該表的情況發生。希望能夠對您有所幫助。

Oracle數據庫操作中,假如在原始表TB_HXL_USER上新增字段remark01,默認值為'A',但是由于該表的數據量比較大,直接在原表上新增字段,執行的時間特別長,最后還報出了undo空間不足的問題。而且在新增字段的過程中,其他用戶還不能訪問該表,出現的等待事件是library cache lock。

下面試著通過在線重定義的方法新增字段,能夠避免undo空間不足以及其他用戶不能訪問該表的情況。

1.使用如下SQL獲取原始表的DDL

設置分隔符號以及去掉表DDL中的storage屬性:

 

  1. begin  
  2.  
  3. Dbms_Metadata.Set_Transform_Param(Dbms_Metadata.Session_Transform,  
  4.  
  5. 'SQLTERMINATOR',  
  6.  
  7. True);  
  8.  
  9. Dbms_Metadata.Set_Transform_Param(Dbms_Metadata.Session_Transform,  
  10.  
  11. 'STORAGE',  
  12.  
  13. False);  
  14.  
  15. end; 

 

提取表,索引,約束以及權限的語句。

 

  1. Select Dbms_Metadata.Get_Ddl(Object_Type => 'TABLE', Name => 'TB_HXL_USER') ||  
  2.  
  3. Dbms_Metadata.Get_Dependent_Ddl(Object_Type => 'INDEX',  
  4.  
  5. Base_Object_Name => 'TB_HXL_USER') ||  
  6.  
  7. Dbms_Metadata.Get_Dependent_Ddl(Object_Type => 'CONSTRAINT',  
  8.  
  9. Base_Object_Name => 'TB_HXL_USER') ||  
  10.  
  11. Dbms_Metadata.Get_Dependent_Ddl('OBJECT_GRANT', 'TB_HXL_USER', 'HXL')  
  12.  
  13. From Dual 

 

2.將步驟1 SQL中的表名TB_HXL_USER 替換為TB_HXL_USER_MID 創建中間表

3.中間表新增字段 remark01

 

  1. alter table TB_HXL_USER_MID add remark01 varchar2(10) default 'A'; 

 

4.檢查能否進行重定義,過程執行成功即說明可以重定義

 

  1. Begin  
  2.  
  3. Dbms_Redefinition.Can_Redef_Table(USER, 'TB_HXL_USER');  
  4.  
  5. End; 

 

5.開始重定義表

注意:如原始表有未提交的事物,該過程會一直在等待,等待事件為enq: TX - row lock contention。

不能執行start_redef_table的情況下,需要將如下權限賦予用戶。

 

  1. grant create any table to hxl;  
  2.  
  3. grant alter any table to hxl;  
  4.  
  5. grant drop any table to hxl;  
  6.  
  7. grant lock any table to hxl;  
  8.  
  9. grant select any table to hxl;  
  10.  
  11. grant create any trigger to hxl;  
  12.  
  13. grant create any index to hxl; 

 

運行start_redef_table過程

 

  1. BEGIN  
  2.  
  3. dbms_redefinition.start_redef_table(  
  4.  
  5. uname => USER,  
  6.  
  7. orig_table => 'TB_HXL_USER',  
  8.  
  9. int_table => 'TB_HXL_USER_MID',  
  10.  
  11. options_flag => DBMS_REDEFINITION.cons_use_pk); 

 

如果有主鍵則是options_flag => DBMS_REDEFINITION.cons_use_pk,如果沒有

  1. DBMS_REDEFINITION.cons_use_rowid  
  2. END; 

 

6.開始同步中間表

 

  1. BEGIN  
  2.  
  3. dbms_redefinition.sync_interim_table(  
  4.  
  5. uname => USER,  
  6.  
  7. orig_table => 'TB_HXL_USER',  
  8.  
  9. int_table => 'TB_HXL_USER_MID');  
  10.  
  11. END; 

 

7.完成同步

注意:如原始表有未提交的事物,該過程會一直在等待

 

  1. BEGIN  
  2.  
  3. dbms_redefinition.finish_redef_table(  
  4.  
  5. uname => USER,  
  6.  
  7. orig_table => 'TB_HXL_USER',  
  8.  
  9. int_table => 'TB_HXL_USER_MID');  
  10.  
  11. END; 

 

8.刪除中間表

 

  1. drop table tb_hxl_user_mid; 

 

9.修改索引名稱

 

  1. alter index idx_tb_hxl_user_mid_n1 rename to idx_tb_hxl_user_n1;  
  2.  
  3. alter index idx_tb_hxl_user_mid_u1 rename to idx_tb_hxl_user_u1; 

 

執行完以上的9個步驟,新增字段就創建成功了。

關于Oracle數據庫用在線重定義的方法新增字段的操作就介紹到這里了,希望本次的介紹能夠對您有所收獲!

【編輯推薦】

  1. 關于Oracle數據庫閃回個性的詳細介紹
  2. Oracle數據庫對DDL語句和DML語句的事務管理
  3. Oracle數據庫啟動參數文件及相關SQL語句簡介
  4. Oracle數據庫的幾種文件及表空間數據塊的知識簡介
  5. Oracle數據庫查詢登錄用戶名所屬表空間及其使用情況
責任編輯:趙鵬 來源: ChinaUnix博客
相關推薦

2011-03-22 14:49:35

Oracle數據庫重定義表

2011-07-25 16:54:52

Oracle數據庫注冊監聽

2011-05-19 13:25:14

Oracle數據庫

2010-04-02 13:59:08

Oracle數據庫

2010-04-14 15:14:11

Oracle數據庫

2011-03-29 10:47:49

ORACLE數據庫

2022-01-11 08:46:56

Oracle 在線重定義數據庫

2011-05-26 14:18:49

Oracle數據庫字段屬性

2011-05-17 15:02:15

ORACLE數據庫備份

2011-08-18 15:49:21

Oracle厲行計劃

2011-04-11 13:19:41

Oracle數據庫

2010-04-23 14:32:01

Oracle數據庫

2010-05-10 15:50:39

Oracle數據庫性能

2010-10-26 11:04:48

oracle數據導入

2010-05-06 09:30:16

Oracle創建數據庫

2010-10-27 14:15:44

Oracle數據庫效率

2010-10-28 14:18:01

oracle數據庫版本

2011-04-13 14:07:17

OracleSybase數據庫

2010-04-02 17:11:45

Oracle數據庫

2010-04-07 14:22:46

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.三级| 国产一级视频在线 | 欧美 日韩 中文 | 黄色av网站在线观看 | 亚洲欧美高清 | 亚洲播放| 天天av网 | 久久久久亚洲视频 | 中文字幕在线中文 | 91玖玖 | 成人亚洲视频 | 午夜一级做a爰片久久毛片 精品综合 | 二区中文 | caoporn视频在线 | www.99热这里只有精品 | 欧美日韩视频网站 | 亚洲精品一区二区三区 | 欧美在线一二三 | 青青久久 | 国产精品成人一区二区三区夜夜夜 | 亚洲免费在线 | 成人欧美一区二区三区在线观看 | 久久精品a | 欧美激情久久久 | 日日天天 | 亚洲综合资源 | 成年女人免费v片 | 亚洲免费婷婷 | av一区在线 | 久久久99精品免费观看 | 美女日批免费视频 | 亚洲精品久久久久久一区二区 | 国产欧美精品区一区二区三区 | 亚洲成人久久久 | 日韩aⅴ在线观看 | 久草视频在线播放 | 欧美一区二区三区在线观看视频 | 中文字幕一区二区三区四区五区 | 草久久久 | 一区二区三区国产视频 | 国产xxxx搡xxxxx搡麻豆 |