中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle Partition怎么使用

發布時間:2021-12-09 16:50:57 來源:億速云 閱讀:289 作者:iii 欄目:關系型數據庫

本篇內容主要講解“Oracle Partition怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Oracle Partition怎么使用”吧!

Oracle分區索引類型
Local Index
    A.Local Prefixed Index
      可以理解為分區索引的第一個索引字段是分區表的Partition key
    B.Local Non-Prefixed Index
      可以理解為分區索引的第一個索引字段不是分區表的Partition key   
Global Prefixed Index
    A.range類型分區
    B.hash類型分區
    注意:這兩種Global索引分區類型與基表的分區類型沒有關系。我們可以在非分區表上創建該索引  
Global Non-Prefixed Index(目前Oracle還不支持)
創建該索引時會提示ORA-14038: GLOBAL partitioned index must be prefixed

注意:Local Index索引分區和基表分區是一一對應的
       Global Index索引分區和基表分區是相互獨立,不存在索引分區和表分區之間的一一對應關系
       比如基表有5個分區,索引有2個分區

如何確定分區索引是Global/Local,PREFIXED/NON-PREFIXED

SQL> select index_name,table_name,locality,alignment from dba_part_indexes where owner='OHSDBA';
INDEX_NAME               TABLE_NAME   LOCALITY   ALIGNMENT
------------------------ ------------ ---------- --------------
IDX_GLOBAL_PREFIXED      OHS_PART     GLOBAL     PREFIXED
IDX_LOCAL_NON_PREFIXED   OHS_PART     LOCAL      NON_PREFIXED


如何選取分區索引類型

When deciding what kind of partitioned index to use, you should consider the following guidelines in this order:

If the table partitioning column is a subset of the index keys, then  use a local index. If this is the case, then you are finished. If this  is not the case, then continue to guideline 2.
If the index is unique and does not include the partitioning key  columns, then use a global index. If this is the case, then you are  finished. Otherwise, continue to guideline 3.
If your priority is manageability, then consider a local index. If  this is the case, then you are finished. If this is not the case,  continue to guideline 4.
If the application is an OLTP type and users need quick response  times, then use a global index. If the application is a DSS type and  users are more interested in throughput, then use a local index.

For more information about partitioned indexes and how to decide which type to use, refer to Using Partitioning in a Data Warehouse Environment and Using Partitioning in an Online Transaction Processing Environment.


以下的維護操作,易導致索引分區UNUSABLE
    1. IMPORT PARTITION or conventional path SQL*Loader.
    2. Direct-path SQL*Loader沒有成功完成(local index partitions and global indexes)
    3. 維護操作類似ALTER TABLE MOVE PARTITION.   
    4. 維護操作類似ALTER TABLE TRUNCATE PARTITION.   
    5. 維護操作類似ALTER TABLE SPLIT PARTITION.   
    6. 維護操作類似ALTER INDEX SPLIT PARTITION.   
    7. 對Hash分區類型的表增加分區(分區中數據會變化)
   
如何避免索引UNUSABLE
為了防止分區維護的操作造成Index不可用,我們可以使用帶'update global indexes'的語句,以下的操作支持UPDATE GLOBAL INDEXES:
    1. ADD PARTITION|SUBPARTITION (hash only)
    2. COALESCE PARTITION|SUBPARTITION
    3. DROP PARTITION
    4. EXCHANGE PARTITION|SUBPARTITIO
    5. MERGE PARTITION
    6. MOVE PARTITION|SUBPARTITION
    7. SPLIT PARTITION
    8. TRUNCATE PARTITION|SUBPARTITION

Update Global Indexes和Update Indexes的區別
Update Global Indexes只維護全局索引,Update Indexes會同時維護全局和本地索引。Update Global Indexes可以理解為是Update Indexes的子集。假定當前有一個表,在其上面創建了local和global partitioned index,我們把其中一個非空的分區做spilt/merge,如果只使用Update Global Indexes,那么Local Index會被標記成UNUSABLE。如果使用Update Indexes,則兩者都有效。Oracle 9.2中可以使用'update global indexes',10g之后可以使用'update global indexes'/'update indexes'

測試可用腳本

create table ohs_part
(id number,
 pdate date)
partition by range(pdate)
(partition ohs_201701 values less than (to_date('2017-02-01','yyyy-mm-dd')),
 partition ohs_201702 values less than (to_date('2017-03-01','yyyy-mm-dd')),
 partition ohs_201703 values less than (to_date('2017-04-01','yyyy-mm-dd')),
 partition ohs_201704 values less than (to_date('2017-05-01','yyyy-mm-dd')),
 partition ohs_max values less than (maxvalue))
/
insert into ohs_part select 1, sysdate from dual;
insert into ohs_part select 2, sysdate from dual;
insert into ohs_part select 3, sysdate - 15 from dual;
insert into ohs_part select 4, sysdate - 15 from dual;
insert into ohs_part select 5, sysdate + 30 from dual;
insert into ohs_part select 6, sysdate + 30 from dual;
insert into ohs_part select 7, sysdate + 60 from dual;
insert into ohs_part select 8, sysdate + 60 from dual;
commit;
create index idx_local on ohs_part(pdate) local;
create index idx_normal on ohs_part(id);
create index idx_global on ohs_part(pdate,id) global;

SQL> create index idx_local on ohs_part(pdate) local; Index created.
SQL> create index idx_normal on ohs_part(id);
Index created.
SQL>
SQL> create index idx_global on ohs_part(pdate,id) global;
Index created.
SQL>
SQL> col index_name for a30
SQL> select index_name,partitioned,status from user_indexes where table_name='OHS_PART';
INDEX_NAME                     PARTITION STATUS
------------------------------ --------- ------------------------
IDX_GLOBAL                     NO        VALID
IDX_NORMAL                     NO        VALID
IDX_LOCAL                      YES       N/A
SQL> select index_name,status from user_ind_partitions where index_name='IDX_LOCAL';
INDEX_NAME                     STATUS
------------------------------ ------------------------
IDX_LOCAL                      USABLE
IDX_LOCAL                      USABLE
IDX_LOCAL                      USABLE
IDX_LOCAL                      USABLE
IDX_LOCAL                      USABLE
SQL>
SQL> col table_name for a20
SQL> select index_name,table_name,locality,alignment from dba_part_indexes where owner='OHSDBA';

INDEX_NAME           TABLE_NAME           LOCALITY           ALIGNMENT
-------------------- -------------------- ------------------ --------------------
IDX_LOCAL            OHS_PART             LOCAL              PREFIXED
SQL>
SQL> create index idx_local_non_prefixed on ohs_part(id,pdate) local;
Index created.
SQL>
SQL> select index_name,table_name,locality,alignment from dba_part_indexes where owner='OHSDBA';
INDEX_NAME                     TABLE_NAME           LOCALITY           ALIGNMENT
------------------------------ -------------------- ------------------ --------------------
IDX_LOCAL                      OHS_PART             LOCAL              PREFIXED
IDX_LOCAL_NON_PREFIXED         OHS_PART             LOCAL              NON_PREFIXED

SQL>

drop index idx_local;
CREATE INDEX idx_global_prefixed ON ohs_part(pdate)
GLOBAL PARTITION BY RANGE(pdate)
(partition ohs_ind_201701 values less than (to_date('2017-02-01','yyyy-mm-dd')),
 partition ohs_ind_201702 values less than (to_date('2017-03-01','yyyy-mm-dd')),
 partition ohs_ind_201703 values less than (to_date('2017-04-01','yyyy-mm-dd')),
 partition ohs_ind_201704 values less than (to_date('2017-05-01','yyyy-mm-dd')),
 partition ohs_ind__max values less than (maxvalue))
/

SQL> drop index idx_local;
Index dropped.
SQL> col index_name for a30
SQL> select index_name,table_name,locality,alignment from dba_part_indexes where owner='OHSDBA';
INDEX_NAME                     TABLE_NAME           LOCALITY           ALIGNMENT
------------------------------ -------------------- ------------------ --------------------
IDX_LOCAL_NON_PREFIXED         OHS_PART             LOCAL              NON_PREFIXED

SQL> CREATE INDEX idx_global_prefixed ON ohs_part(pdate)
  2  GLOBAL PARTITION BY RANGE(pdate)
  3  (partition ohs_ind_201701 values less than (to_date('2017-02-01','yyyy-mm-dd')),
  4   partition ohs_ind_201702 values less than (to_date('2017-03-01','yyyy-mm-dd')),
  5   partition ohs_ind_201703 values less than (to_date('2017-04-01','yyyy-mm-dd')),
  6   partition ohs_ind_201704 values less than (to_date('2017-05-01','yyyy-mm-dd')),
  7   partition ohs_ind__max values less than (maxvalue))
  8  /

Index created.
SQL> select index_name,table_name,locality,alignment from dba_part_indexes where owner='OHSDBA';
INDEX_NAME                     TABLE_NAME           LOCALITY           ALIGNMENT
------------------------------ -------------------- ------------------ --------------------
IDX_GLOBAL_PREFIXED            OHS_PART             GLOBAL             PREFIXED
IDX_LOCAL_NON_PREFIXED         OHS_PART             LOCAL              NON_PREFIXED
SQL>

到此,相信大家對“Oracle Partition怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

政和县| 澳门| 从化市| 张家界市| 独山县| 北流市| 巨野县| 稻城县| 淳化县| 龙门县| 涿鹿县| 托克逊县| 天峻县| 鄂州市| 蓝田县| 安化县| 历史| 固始县| 山阳县| 永泰县| 靖远县| 红安县| 蒙山县| 张掖市| 丰原市| 溧水县| 武夷山市| 洛阳市| 无为县| 中江县| 祥云县| 古蔺县| 玉山县| 通榆县| 永城市| 郴州市| 灌南县| 崇礼县| 弥勒县| 来安县| 岐山县|