亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2415 | 回復(fù): 0
打印 上一主題 下一主題

[Hive] 11gR2 新特性之一—Flashback archive data增強(qiáng) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-09-04 13:52 |只看該作者 |倒序?yàn)g覽
原帖地址http://www.killdb.com/?p=359
該特性是11gR1就引入了,只是在11gR1中限制太多,本文主要是講解11gR2中關(guān)于該特性
所增加的一些功能。
SQL> select name,description from v$bgprocess where name like 'F%';

NAME  DESCRIPTION
----- ---------------------------------------------
FMON  File Mapping Monitor Process
FBDA  Flashback Data Archiver Process
FSFP  Data Guard Broker FSFO Pinger
SQL> create flashback archive test_ht
  2  tablespace "ROGER"
  3  quota 100m
  4  retention 3 day
  5  /

Flashback archive created.

SQL> conn roger/roger
Connected.
SQL> create table ht05(id number primary key,name varchar2() flashback archive test_ht;

Table created.

SQL>
SQL> insert into ht05 values(1,'aaaa');
insert into ht05 values(2,'bbbb');
insert into ht05 values(3,'cccc');
insert into ht05 values(4,'dddd');
SQL> insert into ht05 values(5,'eeee');
insert into ht05 values(6,'ffff');
insert into ht05 values(7,'gggg');
commit;
1 row created.

SQL>
1 row created.

SQL>
1 row created.

SQL>
1 row created.

SQL>
1 row created.

SQL>
1 row created.

SQL>

Commit complete.
SQL> select * from ht05 order by id;

        ID NAME
---------- --------
         1 aaaa
         2 bbbb
         3 cccc
         4 dddd
         5 eeee
         6 ffff
         7 gggg

7 rows selected.
SQL> grant flashback archive administer to roger;

Grant succeeded.

SQL>  

如下是摘自官方文檔的說明,關(guān)于11gR2中新增加的特性:
Oracle Database 11g Release 2 (11.2) users can now use most DDL commands on tables that are
being tracked with Flashback Data Archive. This includes:

Add, Drop, Rename, Modify Column

Drop, Truncate Partition

Rename, Truncate Table

Add, Drop, Rename, Modify Constraint

For more complex DDL (for example, upgrades and split table), the Disassociate and Associate
PL/SQL procedures can be used to temporarily disable Total Recall on specified tables. The
Associate procedure enforces schema integrity after association; the base table and history
table schemas must be the same.

This feature makes it much easier to use the Total Recall option with complex applications
that require the ability to modify the schema.

下面來進(jìn)行一系列關(guān)于上述表述的測試。

------添加列
SQL>  alter table ht05 add (addr varchar2(20));

Table altered.

alert如下:
Sun Sep 04 01:26:53 2011
Starting background process FBDA
Sun Sep 04 01:26:53 2011
FBDA started with pid=33, OS id=8225 --FBDA進(jìn)程啟動了

------刪除列                                                                                                                                                   
SQL> alter table ht05 drop column addr;                                                                                                               
                                                                                                                                                      
Table altered.                                                                                                                                       

------重命名表名                                                                                                                                                                                                                                                                                                         
SQL> rename ht05 to ht05_old;                                                                                                                        
                                                                                                                                                      
Table renamed.                                                                                                                                       
                                                                                                                                                      
SQL> desc ht05_old                                                                                                                                    
Name                     Null?    Type                                                   
------------------------ -------- --------------------------
ID                       NOT NULL NUMBER                    
NAME                              VARCHAR2(               

------修改列                                                            
SQL> alter table ht05_old modify (name varchar2(6));                                                              
                                                                                                                                                      
Table altered.                                                                                                                                       
                                                                                                                                                      
SQL> set timing on                                                                                                                                    
SQL> alter table ht05_old modify (name varchar2(4));   

Elapsed: 00:00:16.38
SQL>   ----我靠 這么簡單的一個(gè)操作需要要16s才能完成。
-------重命名列
SQL> alter table ht05_old rename column name to name_old;

Table altered.

Elapsed: 00:00:18.48

我們來看看正常情況下修改列:
SQL> create table ht06 as select * from ht05_old;

Table created.
SQL> alter table ht06 add constraint pk_ht06 primary key(id);

Table altered.
SQL> select count(*) from ht06;

  COUNT(*)
----------
         7
SQL>  alter table ht06  modify (name varchar2(4));

Table altered.

Elapsed: 00:00:00.06
SQL>   --這個(gè)時(shí)間跟前面簡直沒法比

#####下面來測試partition table      

SQL> create table ht07 partition by hash(object_id) partitions 5
  2  as select * from dba_objects;

Table created.

SQL> alter table ht07 flashback archive test_ht;

Table altered.

SQL>
SQL> ;
  1  select TABLE_OWNER,TABLE_NAME,PARTITION_NAME,TABLESPACE_NAME from
  2  dba_tab_partitions where TABLE_OWNER='ROGER'
  3* and table_name='HT07'
SQL> /

TABLE_OWNER     TABLE_NAME      PARTITION_NAME  TABLESPACE_NAME
--------------- --------------- --------------- ---------------
ROGER           HT07            SYS_P21         USERS
ROGER           HT07            SYS_P22         USERS
ROGER           HT07            SYS_P23         USERS
ROGER           HT07            SYS_P24         USERS
ROGER           HT07            SYS_P25         USERS   
SQL> select * from dba_flashback_archive_tables;

TABLE_NAME OWNER_NAME     FLASHBACK_ARCHIVE_NAME  ARCHIVE_TABLE_NAME  STATUS
---------- -------------- ----------------------- ------------------- --------
HT05_OLD   ROGER          TEST_HT                 SYS_FBA_HIST_73555  ENABLED
HT07       ROGER          TEST_HT                 SYS_FBA_HIST_73574  ENABLED

SQL>  
SQL> set timing on
SQL> alter table ht07 truncate partition SYS_P25;

Table truncated.

Elapsed: 00:00:18.23
SQL> alter table ht07 drop partition SYS_P24;
alter table ht07 drop partition SYS_P24
                                *
ERROR at line 1:
ORA-14255: table is not partitioned by Range, List, Composite Range or Composite List method


Elapsed: 00:00:06.43
SQL>
SQL> set timing off
SQL> create table ht08 partition  by range(object_id)
  2  (partition ht08_p1 values less than (10000),
  3   partition ht08_p2 values less than (20000),
  4   partition ht08_p3 values less than (30000),
  5   partition ht08_p4 values less than (40000),
  6   partition ht08_p5 values less than (maxvalue)) as select * from ht07 where 1=1;

Table created.

SQL> alter table ht08  flashback archive test_ht;

Table altered.

SQL> set timing on
SQL> alter table ht08  truncate partition ht08_p5;

Table truncated.

Elapsed: 00:00:24.66
SQL>  alter table ht08  drop partition  ht08_p4;

Table altered.

Elapsed: 00:00:19.21   
SQL> alter table ht08 add constraint pk_ht08 primary key(object_id);

Table altered.

Elapsed: 00:00:10.61
SQL>
SQL> alter table ht08 drop constraint PK_HT08;

Table altered.

Elapsed: 00:00:00.42
SQL> alter table ht08 add constraint pk_ht08 primary key(object_id);

Table altered.

Elapsed: 00:00:10.27
SQL> alter  table ht08  rename constraint pk_ht08 to pk_ht08_old;

Table altered.

Elapsed: 00:00:00.17
SQL> alter table ht08 modify constraint disable validate ;
alter table ht08 modify constraint disable validate
*
ERROR at line 1:
ORA-55610: Invalid DDL statement on history-tracked table


Elapsed: 00:00:00.05
SQL> ---從上看,不支持約束的modify操作            

SQL> alter table ht08 split partition ht08_p5 at (40000) into (partition HT08_P4,partition HT08_P5);
alter table ht08 split partition ht08_p5 at (40000) into (partition HT08_P4,partition HT08_P5)
*
ERROR at line 1:
ORA-55610: Invalid DDL statement on history-tracked table


Elapsed: 00:00:00.12
SQL> alter table ht08 add partition HT08_P4 values less than (40000);
alter table ht08 add partition HT08_P4 values less than (40000)
*
ERROR at line 1:
ORA-55610: Invalid DDL statement on history-tracked table


Elapsed: 00:00:00.13   

----從上看也不支持分區(qū)表的add和split操作。   

仍有部分測試我未做,這點(diǎn)交給大伙兒去做,呵呵。

最后根據(jù)前面所做的測試,進(jìn)行一下簡單的總結(jié):

1.  支持表列的add,rename,drop以及modify操作;
2.  支持分區(qū)表的truncate,drop操作(僅限于rang分區(qū)、list分區(qū)以及rang-list、list_rang復(fù)合分區(qū)),
    不支持hash分區(qū)表的drop操作;
3.  支持約束的add,rename,drop操作,不支持modify操作。


總的來說,部分測試跟官方文檔的描述有出入,另外就是大家可以也發(fā)現(xiàn)了,那就是如果使用了
flashback archive data特性,那么幾乎所有ddl操作都非常慢之慢,簡直是慢的出奇。
我們知道ddl也會產(chǎn)生鎖,那么對于高并發(fā)負(fù)載較高的系統(tǒng)來講,如此之慢的操作,我想有點(diǎn)夠嗆的。

最后補(bǔ)充一點(diǎn)的是,為啥oracle的官方文檔經(jīng)常跟實(shí)際測試有出入呢?欺騙大眾嗎?
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP