1. 組合分區(qū)表的創(chuàng)建方式("范圍-哈稀"),見附1
創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、臨沂網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為臨沂等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
2. 樓主的需求,即"范圍-范圍分區(qū)",在ORACLE 9i, 10g經(jīng)過測試都是不能實(shí)現(xiàn)的
在附1的基礎(chǔ)上修改為"范圍-范圍"組合分區(qū),創(chuàng)建時報(bào)錯:ORA-14151:無效的表分區(qū)方法
3. 關(guān)于sxdtgsh兄的回答,我測了
3.1 沒有maxvalue上限分區(qū)設(shè)置,在插入超出分區(qū)的數(shù)據(jù)時會報(bào)錯ORA-14400: 插入的分區(qū)關(guān)鍵字未映射到任何分區(qū)
3.2 按回答的語句創(chuàng)建分區(qū)表沒有問題,但數(shù)據(jù)無法按照樓主的需求分布
====附1
附錄:創(chuàng)建"范圍-哈稀"組合分區(qū)表
CREATE TABLE TAB11 (ID NUMBER,DT DATE)
PARTITION BY RANGE (DT)
SUBPARTITION BY HASH (ID) SUBPARTITIONS 2 -- 自分區(qū)個數(shù),可以不寫,由系統(tǒng)判斷
(
PARTITION Y2012 VALUES LESS THAN (TO_DATE('2013-01-01','YYYY-MM-DD'))
(
SUBPARTITION Y2012_H1
,SUBPARTITION Y2012_H2
)
,PARTITION Y2013 VALUES LESS THAN (TO_DATE('2014-01-01','YYYY-MM-DD'))
(
SUBPARTITION Y2013_H1
,SUBPARTITION Y2013_H2
)
,PARTITION YMAX VALUES LESS THAN (MAXVALUE)
(
SUBPARTITION YMAX_H1
,SUBPARTITION YMAX_H2
)
)
====附2,請樓主檢查最后查詢的數(shù)據(jù)分布
create table T_TEST
(
ID NUMBER(20) NOT NULL,
TIME DATE NOT NULL
)
partition by range(TIME, ID) -- 按時間、ID范圍分區(qū) 這個例子是按年的
(
partition P_2012_10 values less than (to_date('2013-01-01','yyyy-MM-dd'), 10),
partition P_2012_20 values less than (to_date('2013-01-01','yyyy-MM-dd'), 20),
partition P_2012_MAX values less than (to_date('2013-01-01','yyyy-MM-dd'), MAXVALUE),
partition P_2013_10 values less than (to_date('2014-01-01','yyyy-MM-dd'), 10),
partition P_2013_20 values less than (to_date('2014-01-01','yyyy-MM-dd'), 20),
partition P_2013_MAX values less than (to_date('2014-01-01','yyyy-MM-dd'), MAXVALUE),
partition P_MAX values less than (MAXVALUE,MAXVALUE)
);
INSERT INTO T_TEST VALUES (1,TO_DATE('20121204 00:00:00','YYYYMMDD HH24:MI:SS'));
INSERT INTO T_TEST VALUES (12,TO_DATE('20121204 00:00:00','YYYYMMDD HH24:MI:SS'));
INSERT INTO T_TEST VALUES (32,TO_DATE('20121204 00:00:00','YYYYMMDD HH24:MI:SS'));
INSERT INTO T_TEST VALUES (2,TO_DATE('20131204 00:00:00','YYYYMMDD HH24:MI:SS'));
INSERT INTO T_TEST VALUES (12,TO_DATE('20131204 00:00:00','YYYYMMDD HH24:MI:SS'));
INSERT INTO T_TEST VALUES (33,TO_DATE('20131204 00:00:00','YYYYMMDD HH24:MI:SS'));
INSERT INTO T_TEST VALUES (3,TO_DATE('20141204 00:00:00','YYYYMMDD HH24:MI:SS'));
INSERT INTO T_TEST VALUES (23,TO_DATE('20141204 00:00:00','YYYYMMDD HH24:MI:SS'));
INSERT INTO T_TEST VALUES (43,TO_DATE('20151204 00:00:00','YYYYMMDD HH24:MI:SS'));
SELECT * FROM T_TEST;
SELECT * FROM T_TEST PARTITION(P_2012_10);
SELECT * FROM T_TEST PARTITION(P_2012_20);
SELECT * FROM T_TEST PARTITION(P_2012_MAX);
SELECT * FROM T_TEST PARTITION(P_2013_10);
SELECT * FROM T_TEST PARTITION(P_2013_20);
SELECT * FROM T_TEST PARTITION(P_2013_MAX);
SELECT * FROM T_TEST PARTITION(P_MAX);
配置不同的oracle用戶就相當(dāng)于不同的databases;比如system,scott
dataHost name="oracle1" maxCon="1000" minCon="1"balance="0" writeType="0" dbType="oracle" dbDriver="jdbc"
heartbeatselect1 from dual/heartbeat
connectionInitSqlaltersession set nls_date_format='yyyy-mm-dd hh24:mi:ss'/connectionInitSql
writeHosthost="hostM1" url="jdbc:oracle:thin:@localhost:1521:orcl"user="system" password="123456" /
/dataHost
dataHost name="oracle2" maxCon="1000" minCon="1"balance="0" writeType="0" dbType="oracle" dbDriver="jdbc"
heartbeatselect1 from dual/heartbeat
connectionInitSqlaltersession set nls_date_format='yyyy-mm-dd hh24:mi:ss'/connectionInitSql
writeHosthost="hostM1" url="jdbc:oracle:thin:@localhost:1521:orcl"user="scott" password="123456" /
/dataHost
oracle暫時沒有這個功能。
關(guān)于你說的“oracle分區(qū)表還是不能解決幾百億數(shù)據(jù)存量下的插入性能”是什么意思?是將數(shù)據(jù)插入這么多記錄的表上性能無法保證,還是太大并發(fā)會導(dǎo)致性能問題?
另外,如果你的并發(fā)不太大,而且還想實(shí)現(xiàn)分表,可以通過觸發(fā)器實(shí)現(xiàn)啊
這個要看你是什么數(shù)據(jù)庫。
Oracle 或者 SQL Server 企業(yè)版本的, 可以嘗試使用 分區(qū)表來處理。
如果對 分區(qū)表不熟悉, 或者不高興折騰。
SQL Server 可以嘗試使用 分區(qū)視圖的方式來處理。
oracle使用rownum偽列可以實(shí)現(xiàn)分頁,三表連接分頁示例代碼如下:
select?*?from?(select?rownum?r,k.kch,k.kcm,cj.cj,x.xh,x.xm?from?KCB??k,CJB??cj,XSB??x?where?k.kch???=?cj.kch?and?cj.xh?=?x.xh?and?rownum=10)?where?r0
特別注意這樣外層查詢時由于內(nèi)層查詢的字段有重復(fù)列名,所以內(nèi)層查詢最后不要用*。取完每一個表字段,這樣很容易報(bào)錯(“無效字段”)
分享標(biāo)題:oracle分表怎么實(shí)現(xiàn) oracle數(shù)據(jù)庫分表怎么實(shí)現(xiàn)
標(biāo)題來源:http://muchs.cn/article0/hgchoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站收錄、用戶體驗(yàn)、小程序開發(fā)、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)