亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Oracle?range時間范圍自動分區的創建方式

瀏覽:115日期:2023-05-30 16:13:54
目錄
  • Oracle range時間范圍自動分區
  • 1.創建測試表,分區字段CDAT NUMBER()
  • 2.執行增加分區語句
  • 3.創建新的分區測試空表
  • ----------使用企業版ORACLE進行測試分區以及分區自增長---------
    • 1.使用固定的分區,每月新增數據需要手工增加對應分區
      • 1.1創建相應固定分區表
      • 1.2 將原有表中2022年底數據插入(原表有202201-202205的月底數據)
      • 1.3 新增一份分區
      • 1.4 插入大于20220501的數據實際就是原表中CDAT是20220531的數據
      • 1.5 刪除新增的分區,再次新建分區日期是20230501
      • 1.6 再次插入大于20220501的數據實際就是原表中CDAT是20220531的數據
    • 2.自增長分區
      • 2.1創建一張表,分區字段為CDAT,字段類型為NUMBER;
      • 2.2使用insert語句將原未分區表數據插入分區測試表。

Oracle range時間范圍自動分區

Oracle11G之前的版本,分區大概分為4種:范圍分區:range 、列表分區:list、哈希分區:hash、復合分區:range+list or hash);

分區的優點:

1.改善查詢性能:對分區對象的查詢可以僅搜索自己關心的分區,提高檢索速度。

2.增強可用性:如果表的某個分區出現故障,表在其他分區的數據仍然可用;

3.維護方便:如果表的某個分區出現故障,需要修復數據,只修復該分區即可;可單獨備份某分區;

4.均衡I/O:可以把不同的分區映射到磁盤以平衡I/O,改善整個系統性能。

分區的缺點:

1.已經存在的表不能直接轉化為分區表。不過 Oracle 提供了在線重定義表的功能。

分區的特殊性:

1.含有 LONG、LONGRAW 數據類型的表不能進行分區,一般分區類型為varchar,varchar2,number,date
2.每個表的分區或子分區數的總數不能超過 1023 個。

使用分區的場景:

1.單表過大,當表大小超過2G,或對于OLTP(On-Line Transaction Processing聯機事務處理過程(OLTP),也稱為面向交易的處理過程,其基本特征是前臺接收的用戶數據可以立即傳送到計算中心進行處理,并在很短的時間內給出處理結果,是對用戶操作快速響應的方式之一)系統,表的記錄超過1000萬。

2.歷史數據需要分離出來,新的數據被加到新的分區中。

3.表數據被使用時特征明顯,例如當年,整月之類。

4.基于這類表大部分的查詢都是只查詢其中一部分數據。

5.按時間段刪除成批的表數據。

6.經常執行并行查詢的表

7.對其中一部分分區表數據可用性要求高

1.創建測試表,分區字段CDAT NUMBER()

---建表create table FQ_TEST (contract_no varchar2(20),loan_st varchar2(8),amt  decimal(20,6));--創建自增序列contract_nocreate sequence SEQ_FQTEST_con  minvalue 1  maxvalue 999999    increment by 1     start with 1;--創建觸發器create or replace trigger TRIG_FQTEST_conbefore insert on FQ_TEST /*觸發條件:當表FQ_TEST執行插入操作時觸發此觸發器*/ for each row   /*對每一行都檢測是否觸發*/begin/*觸發后執行的動作,在此是取得序列SEQ_FQTEST_con的下一個值插入到表BC_ES_IK_HOT_WORD中的id字段中*/select SEQ_FQTEST_con.nextval into :new.CONTRACT_NO from dual;end;

2.執行增加分區語句

ALTER TABLE FQ_TEST ADD PARTITION P1 VALUES LESS THAN (20220131); 

提示報錯:

經過分析:提示ORA-14501: object is not partitioned對象未分區。

3.創建新的分區測試空表

--DROP  TABLE FQ_TEST_partition;create table FQ_TEST_partition(contract_no varchar2(20),loan_st varchar2(8),amt  decimal(20,6))partition by range (loan_st)(  partition P1 values less than (20220131));

報錯:

分析:Oracle未啟用Partitioning功能,查詢當前版本是否支持

SELECT VALUE FROM V$OPTION WHERE UPPER(PARAMETER)= 'PARTITIONING';

值為FALSE則不支持。注意標準版是不支持分區操作的,企業版才支持。

----------使用企業版ORACLE進行測試分區以及分區自增長---------

1.使用固定的分區,每月新增數據需要手工增加對應分區

1.1創建相應固定分區表

----創建分區表drop table    rp_report_test_xy;-- Create tablecreate table rp_report_test_xy(  contract_code   VARCHAR2(300),  cdat     NUMBER(8))partition by range(cdat)-- interval (NUMTOYMINTERVAL(1,"MONTH"))(partition p1 values less than("20150101"),partition p2 values less than("20220201"),partition p3 values less than("20220501"));

1.2 將原有表中2022年底數據插入(原表有202201-202205的月底數據)

報錯原因:由于原表有20220531的數據不在已有的分區內插入數據報錯,將數據限制在20220501之前重新插入。

---查詢現有分區select * from user_tab_partitions where table_name="RP_REPORT_TEST_XY"

---查詢插入的數據具體分區select distinct cdat from rp_report_test_xy  partition(P2);---20220131select distinct cdat from rp_report_test_xy  partition(P3)---20220430,20220228,20220331

1.3 新增一份分區

ALTER TABLE rp_report_test_xy ADD PARTITION P4 VALUES LESS THAN("20220531");

1.4 插入大于20220501的數據實際就是原表中CDAT是20220531的數據

1.5 刪除新增的分區,再次新建分區日期是20230501

--刪除分區ALTER TABLE rp_report_test_xy DROP PARTITION P4;---重新插入分區ALTER TABLE rp_report_test_xy ADD PARTITION P4 VALUES LESS THAN("20230501");

1.6 再次插入大于20220501的數據實際就是原表中CDAT是20220531的數據

--查詢當前新分區數據select distinct cdat from rp_report_test_xy  partition(P4)---20220531

2.自增長分區

2.1創建一張表,分區字段為CDAT,字段類型為NUMBER;

原有未分區的表數據基數為3000多萬

執行報錯:

將創建表語句中CDAT由NUMBER改為DATE則創建成功。

2.2使用insert語句將原未分區表數據插入分區測試表。

---查詢現有分區select * from user_tab_partitions where table_name="RP_REPORT_TEST_XY"

插入數據:注意原NUMBER在插入時要TO_DATE轉換。原表取CDAT是2022年的所有數據插入。

--查看當前分區的數據select * from  rp_report_test_xy partition(SYS_P76);

發現20220131的數據劃分到了20220201的區間,20220228劃分到了20220301的區間。

--查看當前分區的數據select * from  rp_report_test_xy partition(SYS_P76);

結果 :cdat是20221130的數據。

--刪除某分區ALTER TABLE  rp_report_test_xy DROP PARTITION SYS_P76;

到此這篇關于ORACLE分區(range時間范圍自動分區)的文章就介紹到這了,更多相關oracle分區內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

標簽: Oracle
相關文章:
主站蜘蛛池模板: 成年人免费黄色片 | 中文字幕久久综合伊人 | 免费a级毛片无码 | 2022国产精品自拍 | 2021久久精品永久免费 | 视频在线一区二区 | 一级做a爰片久久毛片免费看 | 1024国产 | 免费看的黄色 | 色综合久久丁香婷婷 | 国产精品午夜在线观看 | 精品国产一区二区麻豆 | 国产欧美日韩精品专区 | 黑人巨大videosjapan高清 黑人巨大vsさとう遥希 | 一区二区三区四区视频在线 | 任我鲁精品视频精品 | 久久一本日韩精品中文字幕屁孩 | 麻豆网在线观看 | 欧美日韩一区二区三区久久 | 亚洲精品综合一区二区三区 | 欧美高清一级毛片免费视 | 亚洲制服丝袜在线观看 | 精品你懂的| 久操视频网站 | 制服丝袜 自拍偷拍 | 欧美精品久久 | 黄色一级视频 | 色婷婷综合和线在线 | 蜜桃福利视频 | 嘿咻18视频在线看 | 国产福利一区二区 | 国产最新精品2020好看的 | 国产精品毛片在线更新 | 色播欧美 | 国产精品久久久久久免费 | 国产美女激情视频无打码 | 放几个免费的毛片出来看 | 精品一区二区视频 | 日韩特级黄色片 | 中国护士一级毛片免费版本 | 超级碰碰碰视频在线观看 |