中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

Oracle分區之四:分區維護和管理
來源:易賢網 閱讀:1614 次 日期:2014-09-17 10:18:25
溫馨提示:易賢網小編為您整理了“Oracle分區之四:分區維護和管理”,方便廣大網友查閱!

一,分區表的相關實驗

創建一個列表分區表

create table t3(id number,city varchar2(10))

partition by list(city)

(

partition p1 values ('SH','JS','ZJ') ,

partition p2 values ('BJ','TJ','HB') ,

partition p3 values ('GZ','SZ') ,

partition p_others values (default)

);

create or replace procedure proc1

as

begin

for i in 1..1000

loop

execute immediate

'INSERT INTO T3 values(:x,:y)' USING i,'SH';

end loop;

end;

/

exec proc1

create or replace procedure proc1

as

begin

for i in 1001..2000

loop

execute immediate

'INSERT INTO T3 values(:x,:y)' USING i,'JS';

end loop;

end;

/

exec proc1

create or replace procedure proc1

as

begin

for i in 2001..3000

loop

execute immediate

'INSERT INTO T3 values(:x,:y)' USING i,'ZJ';

end loop;

end;

/

exec proc1

create or replace procedure proc1

as

begin

for i in 3001..4000

loop

execute immediate

'INSERT INTO T3 values(:x,:y)' USING i,'BJ';

end loop;

end;

/

exec proc1

create or replace procedure proc1

as

begin

for i in 4001..5000

loop

execute immediate

'INSERT INTO T3 values(:x,:y)' USING i,'TJ';

end loop;

end;

/

exec proc1

create or replace procedure proc1

as

begin

for i in 5001..6000

loop

execute immediate

'INSERT INTO T3 values(:x,:y)' USING i,'GZ';

end loop;

end;

/

exec proc1

create or replace procedure proc1

as

begin

for i in 6001..7000

loop

execute immediate

'INSERT INTO T3 values(:x,:y)' USING i,'HB';

end loop;

end;

/

exec proc1

create or replace procedure proc1

as

begin

for i in 7001..8000

loop

execute immediate

'INSERT INTO T3 values(:x,:y)' USING i,'SZ';

end loop;

end;

/

exec proc1

create or replace procedure proc1

as

begin

for i in 8001..10000

loop

execute immediate

'INSERT INTO T3 values(:x,:y)' USING i,'AH';

end loop;

end;

/

exec proc1

SQL> SET linesize 200

SQL> select TABLE_NAME, TABLE_OWNER, PARTITION_NAME, SUBPARTITION_COUNT from dba_tab_partitions where table_name='T3';

TABLE_NAME TABLE_OWNER PARTITION_NAME SUBPARTITION_COUNT

------------------------------ ------------------------------ ------------------------------ ------------------

T3 HR P1 0

T3 HR P2 0

T3 HR P3 0

T3 HR P_OTHERS 0

實驗一(SPLIT 分區)

alter table t3 split partition p1 values ('JS') into

(partition p1_1,partition p1_2);

SQL> select TABLE_NAME, TABLE_OWNER, PARTITION_NAME, SUBPARTITION_COUNT from dba_tab_partitions where table_name='T3';

TABLE_NAME TABLE_OWNER PARTITION_NAME SUBPARTITION_COUNT

------------------------------ ------------------------------ ------------------------------ ------------------

T3 HR P1_1 0

T3 HR P1_2 0

T3 HR P2 0

T3 HR P3 0

T3 HR P_OTHERS 0

實驗二(merge 分區)

alter table t3 merge partitions p1_1,p1_2 into partition p1;

SQL> select TABLE_NAME, TABLE_OWNER, PARTITION_NAME, SUBPARTITION_COUNT from dba_tab_partitions where table_name='T3';

TABLE_NAME TABLE_OWNER PARTITION_NAME SUBPARTITION_COUNT

------------------------------ ------------------------------ ------------------------------ ------------------

T3 HR P1 0

T3 HR P2 0

T3 HR P3 0

T3 HR P_OTHERS 0

實驗三、

alter table t3 split partition p2 values ('BJ','TJ') into

(partition p2_1,partition p2_2);

SQL> select TABLE_NAME, TABLE_OWNER, PARTITION_NAME, SUBPARTITION_COUNT from dba_tab_partitions where table_name='T3';

TABLE_NAME TABLE_OWNER PARTITION_NAME SUBPARTITION_COUNT

------------------------------ ------------------------------ ------------------------------ ------------------

T3 HR P1 0

T3 HR P2_1 0

T3 HR P2_2 0

T3 HR P3 0

T3 HR P_OTHERS 0

實驗四、

alter table t3 merge partitions p2_1,p2_2 into partition p2;

SQL> select TABLE_NAME, TABLE_OWNER, PARTITION_NAME, SUBPARTITION_COUNT from dba_tab_partitions where table_name='T3';

TABLE_NAME TABLE_OWNER PARTITION_NAME SUBPARTITION_COUNT

------------------------------ ------------------------------ ------------------------------ ------------------

T3 HR P1 0

T3 HR P2 0

T3 HR P3 0

T3 HR P_OTHERS 0

實驗五( 向分區某個分區里增加個分區列值)

SQL> alter table t3 modify partition p3 add values('ZQ');

Table altered.

二,分區索引的相關實驗

實驗六(創建索引分區)

create index idx_t3 on t3(id)

global partition by range(id)

(

partition p1 values less than (1000),

partition p2 values less than (maxvalue)

);

drop index idx_3

create index idx_t3 on t3(id)

global partition by hash(id)

partitions 4;

create table tt2(id number,createdate date)

partition by range(createdate)

subpartition by hash(id) subpartitions 2

(

partition p1 values less than (to_date('2010-07-01','yyyy-mm-dd')),

partition p2 values less than (to_date('2011-01-01','yyyy-mm-dd'))

);

create table tt4(id number,name varchar2(10))

partition by range(name)

(

partition p1 values less than ('h'),

partition p2 values less than ('o')

);

create index idx_tt4 on tt4(id) local;

drop indexe idx_tt4 ;

create index idx_tt4 on tt4(id)

global partition by range(id)

(

partition p1 values less than (1000),

partition p2 values less than (maxvalue)

);

SQL> SET LINESIZE 200

SQL> select INDEX_OWNER, INDEX_NAME,PARTITION_NAME FROM dba_Ind_Partitions where index_name='IDX_TT4';

INDEX_OWNER INDEX_NAME PARTITION_NAME

------------------------------ ------------------------------ ------------------------------

HR IDX_TT4 P1

HR IDX_TT4 P2

alter index idx_tt4 split partition p2 at (2000) into

(partition p3,partition p_max);

SQL> select INDEX_OWNER, INDEX_NAME,PARTITION_NAME FROM dba_Ind_Partitions where index_name='IDX_TT4';

INDEX_OWNER INDEX_NAME PARTITION_NAME

------------------------------ ------------------------------ ------------------------------

HR IDX_TT4 P1

HR IDX_TT4 P3

HR IDX_TT4 P_MAX

三,分區表交換的相關實驗

Exchange partition提供了一種方式,讓你在表與表或分區與分區之間遷移數據,注意不是將表轉換成分區或非分區的形式,而僅只是遷移表中數據(互相遷移),

由于其號稱是采用了更改數據字典的方式,因此效率最高(幾乎不涉及io操作)。Exchange partition適用于所有分區格式,你可以將數據從分區表遷移到非分區表,

也可以從非分區表遷移至分區表,或者從hash partition到range partition諸如此類。

其語法:alter table tbname1 exchange partition/subpartition ptname with table tbname2;

注意:在將未分區表的數據遷移到分區表中時,可能出現ora-14099的錯誤,雖然可以用without validation去解決,但是此時進入分區表的數據可能不符合分區規

則。所以without validation一定要慎用。

a,涉及交換的兩表之間表結構必須一致,除非附加with validation子句;

b,如果是從非分區表向分區表做交換,非分區表中的數據必須符合分區表中指定分區的規則,除非附加without validation子句;

c,如果從分區表向分區表做交換,被交換的分區的數據必須符合分區規則,除非附加without validation子句;

d,Global索引或涉及到數據改動了的global索引分區會被置為unusable,除非附加update indexes子句。

注意:

一旦附加了without validation子句,則表示不再驗證數據有效性,因此指定該子句時務必慎重。

創建一個交換分區的普通heap表

SQL> create table exchange_t3(id number,city varchar2(10));

Table created.

SQL> select distinct city from t3 partition (p2);

CITY

----------

TJ

BJ

HB

查看下P2分區有records

SQL> select count(*) from t3 partition (p2);

COUNT(*)

----------

3000

下面是分區表和普通HEAP表交換

alter table t3

exchange partition p2

with table exchange_t3

including indexes

without validation;

驗證下數據,和上面的P2分區數據一致。

SQL> select count(*) from exchange_t3;

COUNT(*)

----------

3000

SQL> select distinct city from exchange_t3;

CITY

----------

TJ

BJ

HB

四,一個實際應用的例子的相關實驗

創建一個分區表,只保留最近2年的財務數據。

create table ware(wareyear varchar2(4),id number)

partition by range (wareyear)

(

partition p_2005 values less than('2006'),

partition p_2006 values less than('2007'),

partition p_max values less than(maxvalue)

);

創建索引

create index idx_ware_id on ware(id)

global partition by range(id)

(

partition p_id_10000 values less than(10000),

partition p_id_max values less than(maxvalue)

);

create index idx_ware_wareyear on ware(wareyear) local;

插入測試數據

insert into ware select '2005',object_id from dba_objects;

insert into ware select '2006',object_id from dba_objects;

commit;

年終,歸檔最早的數據,并加入新財年的數據

create table ware_2007(wareyear varchar2(4),id number);

create index idx_ware_2007 on ware_2007(wareyear);

insert into ware_2007 select '2007',object_id from dba_objects;

commit;

alter table ware split partition p_max

at ('2008') into (partition p_2007, partition p_max);

將p_2007分區放入ware_2007表里

alter table ware exchange partition p_2007

with table ware_2007

including indexes

without validation;

create table ware_2005(wareyear varchar2(4),id number);

create index idx_ware_2005 on ware_2005(wareyear);

alter table ware exchange partition p_2005

with table ware_2005

including indexes

without validation;

刪除p_2005分區

alter table ware drop partition p_2005;

導出做歸檔

[oracle@even admin]$ exp hr/hr@test file=/home/oracle/ware_2005.dmp tables=ware_2005 compress=n

Export: Release 10.2.0.1.0 - Production on Fri Jan 18 05:10:42 2013

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

With the Partitioning, Oracle Label Security, OLAP and Data Mining options

Export done in US7ASCII character set and AL16UTF16 NCHAR character set

server uses AL32UTF8 character set (possible charset conversion)

About to export specified tables via Conventional Path ...

. . exporting table WARE_2005 50439 rows exported

Export terminated successfully without warnings.

然后刪除表

drop table ware_2005;

五,表和索引的維護的常見SQL語句及注意事項

對于分區索引,不能整體進行重建,只能對單個分區進行重建(也就是物理存在的分區)。語法如下:

Alter index idx_name rebuild partition index_partition_name [online nologging]

Alter Index IndexName Rebuild Partition P_Name;

有子分區的本地索引,不能重建某分區,只能對每個子分區進行重建

Alter Index Index_Name Rebuild subPartition P_Sub_Name;

腳本,重建所有unUsable的索引

Select 'alter index ' || Index_Name ||' rebuild;' From User_Indexes Where Status ='UNUSABLE' union

Select 'alter index ' || Index_Name ||' rebuild Partition '||Partition_Name ||';' From User_Ind_Partitions Where Status ='UNUSABLE' union

Select 'alter index ' || Index_Name ||' rebuild subPartition '||subPartition_Name ||';' From User_Ind_subPartitions Where Status ='UNUSABLE';

add parttion

Alter Table TestTab1 Add Partition P1 Values Less Than (20120801);

1, 如果有子分區,且定義了子分區模板,所有的子分區會自動添加

2, 新加分區后,該區沒有統計信息,全是空,如果表級不是global_satus,則表級的統計信息也會空

3, 新加分區后,如果表級統計是global_satus,還會出現out of range的問題(CBO估算的選擇率很低)

4, 解決2,3問題的方法是:copy_table_stats

exec dbms_stats.copy_table_stats(user, tabname => 'TEST_TAB1', srcpartname =>'P_20120801', dstpartname => 'P_20100208');

tuncate and drop partition

truncate和drop可對有子分區的分區進行

ALTER TABLE TEST truncate Partition P_20120801;

ALTER TABLE TEST Drop Partition P_20120801;

它們會導致globl index的某些分區不可用,必須這樣做

ALTER TABLE TEST truncate Partition P_20120801 update indexes;

ALTER TABLE TEST truncate Partition P_20120801update global indexes;

ALTER TABLE TEST Drop Partition P_20120801 update indexes;

ALTER TABLE TEST Drop Partition P_20120801 update global indexes;

move partition

有子分區的分區不能move,只能move每個子分區(也就是物理分區)

Alter Table TEST Move Partition P_20120801;

由于rowid變了,會導致所有相關索引unusable,必須這樣做

Alter Table TEST Move subPartition P_20100730_P1 update indexes;

Alter Table TEST Move subPartition P_20100730_P2 update global indexes; --Local Index沒有更新

split partion

語法:

alter table <table_name>

split partition <partition_name> at (<value>)

into (partition <partition_name>, partition <partition_name>)

[update [global] indexes];

1 可以對有子分區的分區進行,自動split子分區

2 由于rowid變了,新分區和global index都變為unusable

alter table t3 merge partitions p2_1,p2_2 into partition p2;

合并range分區

ALTER TABLE Test_Tab1

Merge Partitions P_20100715, P_20100731 Into Partition P_20100730

[Update [global] Indexes];

1. 該分區有子分區

2. 有子分區,也可以單獨合并子分區merge subpartition

可以通過下面的視圖獲取分區的信息

dba_segments

dba_part_key_columns

dba_tables

dba_tab_partitions

dba_indexes

dba_ind_partitions

更多信息請查看IT技術專欄

更多信息請查看數據庫
易賢網手機網站地址:Oracle分區之四:分區維護和管理
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美亚洲免费高清在线观看| 国产欧美亚洲日本| 欧美国产精品va在线观看| 亚洲福利国产精品| 一区二区91| 久久全球大尺度高清视频| 蜜臀久久99精品久久久画质超高清| 久久麻豆一区二区| 国内精品写真在线观看| 亚洲看片网站| 午夜精品成人在线| 销魂美女一区二区三区视频在线| 久久国产福利国产秒拍| 国产精品国内视频| 国产一区二区三区在线播放免费观看| 亚洲人成网站999久久久综合| 久久国产乱子精品免费女 | 国产一二三精品| 欧美激情精品久久久久久免费印度| 一区二区高清在线| 在线电影国产精品| 亚洲精品在线观看免费| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲欧洲视频| 欧美成人日韩| 欧美激情亚洲综合一区| 麻豆精品网站| 欧美本精品男人aⅴ天堂| 蜜臀av一级做a爰片久久| 欧美暴力喷水在线| 欧美成人按摩| 欧美美女喷水视频| 国产精品乱看| 亚洲国产激情| 久久网站热最新地址| 夜夜嗨av一区二区三区| 在线观看成人小视频| 亚洲视频综合在线| 亚洲欧美日韩成人高清在线一区| 欧美一区二区三区日韩| 欧美国产日本高清在线| 久久天天躁狠狠躁夜夜av| 国产精品丝袜久久久久久app| 性欧美长视频| 久久九九免费视频| 欧美成人乱码一区二区三区| 欧美在线不卡| 亚洲一区在线免费观看| 欧美麻豆久久久久久中文| 国产精品福利在线观看| 夜夜爽www精品| 亚洲国产综合91精品麻豆| 国产一区二区三区网站| 国产精品呻吟| 久久精品首页| 在线视频国内自拍亚洲视频| 欧美日韩另类视频| 欧美一区二区三区免费视| 国产精品视频福利| 欧美精品一线| 亚洲婷婷综合色高清在线| 欧美激情视频一区二区三区不卡| 亚洲东热激情| 国产精品精品视频| 欧美一区综合| 亚洲美女淫视频| 国产毛片一区| 欧美日韩亚洲激情| 欧美日韩一区国产| 欧美三级午夜理伦三级中文幕| 欧美成人亚洲| 久久精品夜色噜噜亚洲a∨| 欧美一区免费视频| 久久先锋影音| 欧美日韩1234| 亚洲区欧美区| 国产一级一区二区| 国产一区二区高清不卡| 一区二区亚洲精品| 日韩天堂av| 午夜在线成人av| 欧美精品18videos性欧美| 欧美色网一区二区| 一区二区视频欧美| av不卡在线观看| 久久爱www久久做| 欧美激情第10页| 欧美视频在线播放| 亚洲电影中文字幕| 欧美亚洲一级| 欧美日韩xxxxx| 亚洲第一中文字幕| 性8sex亚洲区入口| 欧美日韩成人综合在线一区二区| 国产区在线观看成人精品| 99日韩精品| 免费亚洲电影在线观看| 国产一区二区三区高清| 99精品99| 欧美激情视频在线播放| 亚洲二区在线视频| 欧美www视频在线观看| 亚洲新中文字幕| 欧美一级成年大片在线观看| 欧美日韩精品不卡| 99天天综合性| 国产精品美女黄网| 性娇小13――14欧美| 影音先锋久久资源网| 性做久久久久久| 狠狠久久婷婷| 欧美福利一区二区| 亚洲一级在线| 国际精品欧美精品| 嫩草国产精品入口| 夜夜嗨av一区二区三区中文字幕| 欧美日一区二区在线观看| 亚洲免费视频一区二区| 国产一区二三区| 欧美寡妇偷汉性猛交| 亚洲欧美激情四射在线日 | 欧美国产免费| 在线视频精品一区| 国产日韩精品久久久| 玖玖国产精品视频| 亚洲一品av免费观看| 亚洲黄网站在线观看| 欧美视频精品在线观看| 久久久久久九九九九| 亚洲一卡二卡三卡四卡五卡| 在线看成人片| 国产一区二区毛片| 国产精品亚洲аv天堂网| 欧美成人69| 国产精品豆花视频| 欧美黑人多人双交| 久久九九国产精品| 久久久亚洲高清| 久久精品一区| 性伦欧美刺激片在线观看| 亚洲午夜精品视频| 亚洲综合社区| 久久精品成人一区二区三区 | 亚洲精品视频二区| 亚洲国产成人av在线| 亚洲人精品午夜| 在线亚洲免费| 欧美影院成年免费版| 亚洲欧美怡红院| 久久字幕精品一区| 欧美成人网在线| 欧美视频四区| 国产真实久久| 亚洲精品一二三区| 亚洲一区二区三区精品视频 | 久久精品最新地址| 久久免费精品日本久久中文字幕| 久久在精品线影院精品国产| 欧美国产综合视频| 国内不卡一区二区三区| 最新国产精品拍自在线播放| 99pao成人国产永久免费视频| 亚洲女女女同性video| 欧美午夜精品| 狠狠色香婷婷久久亚洲精品| 亚洲精品在线观看视频| 狼狼综合久久久久综合网| 国产精品久在线观看| 亚洲黄一区二区三区| 久久狠狠久久综合桃花| 欧美日韩一本到| 亚洲精品免费网站| 欧美a级片网| 国产精品v欧美精品v日本精品动漫 | 91久久线看在观草草青青| 午夜亚洲视频| 国产一区二区精品丝袜| 小黄鸭视频精品导航| 国产欧美日韩专区发布| 亚洲激情网址| 欧美激情视频免费观看| 99天天综合性| 国产一区二区成人| 欧美激情第9页| 在线视频你懂得一区| 国产精品国产三级国产aⅴ浪潮 | 亚洲视频一二三| 欧美色欧美亚洲高清在线视频| 99热免费精品在线观看| 国产精品国产三级国产普通话蜜臀| 一本久道综合久久精品| 国产精品国产馆在线真实露脸| 亚洲一区二区三区三| 国产亚洲成人一区| 欧美日韩www| 一区二区av在线| 国产日韩欧美亚洲一区| 欧美高清在线播放| 久久激情视频免费观看| 日韩小视频在线观看|