oracle資料庫分割槽

2022-05-05 23:09:17 字數 2802 閱讀 5740

numtoyminterval和numtoyminterval是日期轉換函式,

作用:可以將數字轉換成相應的日期單位時間

1.numtoyminterval ( n , 'char_expr' ) char_expr:日期描述,可以是year和month。

通常當我們使用add_month新增月時,如果輸入是本月月底的日期,那麼得到的也是月底的日期,

比如add_month(to_date('2007-02-28','yyyy-mm-dd'),1)得到的就會是'2007-03-31',而不是'2007-03-28'。

此時,如果使用的是to_date('2007-02-28','yyyy-mm-dd')+numtoyminterval(1,'month'),那麼得到的就是'2007-03-28'。

2. numtodsinterval的用法和numtoyminterval一樣只是他的引數為day、hour、minute、second。

oracle 11g之前,維護分割槽需要手工。11g之後使用interval來實現自動擴充套件分割槽,簡化了維護。 根據年: interval(numtoyminterval(1,'year')) 根據月:            interval(numtoyminterval(1,'month')) 根據天: interval(numtodsinterval(1,'day')) 根據時分秒: numtodsinterval( n, )

create

table

sys_log_test

( id

varchar2(64) not

null

, log_type

varchar2(64

), title nvarchar2(

500),

create_by

varchar2(64

), create_date

timestamp(6

), remote_addr

varchar2(255

), user_agent

varchar2(255

), request_uri

varchar2(255

), method

varchar2(5

), params clob,

exception clob,

operate_type

varchar2(64

), content clob,

primary

key(id)

)partition

byrange(create_date)

interval(numtodsinterval(

1,'hour'))

(partition p0

values less than (timestamp

'2018-05-06 14:30:00

'));

3.該段**表示:

1).建立的表sys_log_test

2).建立了預設分割槽表p0,insert  資料時,create_date  小於 '2000-05-06' 的所有資料都儲存在 p0 分割槽表中

3).做到了自動建立分割槽表的功能,(timestamp'2018-05-06 14:30:00') 按小時自動分割槽

即如果 date_time  的年月找不到已有分割槽,則自動建立新的分割槽

根據分割槽表查詢語句類似:select * from sys_log_test partition (p0);

採用自動建立分割槽優缺點

優點:可以根據實際情況,自動建立分割槽

缺點:建立的分割槽表名稱無法指定(目前我研究的範圍內,無法指定),系統自動預設生成類似sys_p27的分割槽表名

自動建立的分割槽表可以在oracle系統自帶的表中查詢到自己的分割槽表名稱

語句如下: select * from dba_tab_partitions where table_name='sys_log_test'

該語句可以查詢到sys_log_test 下面的所有分割槽表資訊,

如果非要根據分割槽條件找到對應的分割槽表名稱,只能  通過 系統表 dba_tab_partitions 中的high_value  字段,

擷取相關字串匹配條件找出partition_name 

//update dphomewms.wms_operation_record set operation_time = sysdate where operation_time is

null

;insert

into sys_log_test select

*from

sys_log;

drop

table

sys_log;

alter

table sys_log_test rename to

sys_log;

alter

table sys_log enable row movement;

alter table sys_log enable row movement; 是指允許分割槽表的分割槽鍵是可更新,當某一行更新時,如果更新的是分割槽列,並且更新後的列值不屬於原來的這個分割槽,

如果開啟了這個選項,就會把這行從這個分割槽中delete掉,並加到更新後所屬的分割槽,此時就會發生rowid的改變。相當於乙個隱式的delete+insert,但是不會觸發insert/delete觸發器。

如果沒有開啟這個選項,就會在更新時報錯。

oracle資料庫表分割槽

最近偶然有聽到資料庫表分割槽的概念,一時興趣來潮,就想去稍微了解下。對於我們一些專案,可能我們需要接入一些資料,時間越長,資料量就越多,資料庫表訪問就越慢。這時候適量的分割槽有助於提高資料庫表的訪問速度。一 首先說說比較常用的集中分割槽方法 範圍分割槽 時間分割槽 create table data...

Oracle資料庫的分割槽

實現了均勻的負載值分配,增加 hash 分割槽可以重新分配資料 建立create table table name empno number,ename varchar 20 partition by hash empno partition p1,partition p2 檢視分割槽結構 sele...

資料庫分割槽

分割槽 就是把一張表的資料分成n個區塊 資料分割槽是一種物理資料庫的設計技術,它的目的是為了在特定的sql操作中減少資料讀寫的總量以縮減響應時間。分割槽並不是生成新的資料表,而是將表的資料均衡分攤到不同的硬碟,系統或是不同伺服器儲存介子中,實際上還是一張表。特性 分割槽能夠提高併發性和並行性 從而增...