oracle查詢分區(qū)表的數(shù)據(jù)的時候默認查詢B分區(qū)。oracle中是根據(jù)分區(qū)鍵決定的,分區(qū)鍵有可能是通過某一個函數(shù)算出來的。Oracle的表分區(qū)功能通過改善可管理性、性能和可用性,從而為各式應(yīng)用程序帶來了極大的好處。通常,分區(qū)可以使某些查詢以及維護操作的性能大大提高。
成都創(chuàng)新互聯(lián):自2013年起為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為近1000家公司企業(yè)提供了專業(yè)的網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計、網(wǎng)頁設(shè)計和網(wǎng)站推廣服務(wù), 定制網(wǎng)站建設(shè)由設(shè)計師親自精心設(shè)計,設(shè)計的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據(jù)客戶的實際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。
在Oracle10g中,沒有定義間隔分區(qū),只能通過范圍分區(qū)實現(xiàn)間隔分區(qū)功能,如果要實現(xiàn)自動創(chuàng)建分區(qū),只能通過創(chuàng)建JOB或者scheduler來實現(xiàn);而在11g中,Oracle直接提供了間隔分區(qū)功能,大大簡化了間隔分區(qū)的實現(xiàn)。
----注:oracle11g雖然可以自動分區(qū),但是分區(qū)的名字不能自定義,對于需要定時刪除分區(qū)時沒法處理,不如通過時間范圍來手工分區(qū)。詳見
create table HIP_LOG_NODE_Part
(
ID?????????????????? VARCHAR2(32)???????? not null,
RECORD_TIME????????? DATE
)tablespace TB_HIP_LOG_NODE
PARTITION BY RANGE (RECORD_TIME) interval (numtoyminterval(1, 'month'))
STORE IN (TB_HIP_LOG_NODE)
(
partition hip_log_node_partition values less than (to_date('2019-08-01 00:00','yyyy-MM-dd HH24:mi')) tablespace TB_HIP_LOG_NODE
);
1、Oracle11g有間隔分區(qū)功能,對于使用Range分區(qū)的可以按年,月,日來自動生成分區(qū)。
2、2019-08-01前的數(shù)據(jù)(包含8月份的數(shù)據(jù))會放入hip_log_node_partition?分區(qū),8月1日后的數(shù)據(jù)每月只要有數(shù)據(jù),就會自動創(chuàng)建一個分區(qū)。也就是從9月開始,開始新建分區(qū)。
3、interval函數(shù)--將數(shù)值按標(biāo)準(zhǔn)換算為日期
numtodsinterval、numtodsinterval函數(shù),將數(shù)字轉(zhuǎn)成年月,時分秒
詳見:
4、查看表分區(qū) select table_name,partition_name from user_tab_partitions where table_name='INTERVAL_SALES';
5、插入數(shù)據(jù)再次查看分區(qū),詳見:
6、修改分區(qū)、合并分區(qū)、拆分分區(qū),詳見 :
7、創(chuàng)建索引(分區(qū)索引、全局索引) :
非分區(qū)字段創(chuàng)建主鍵,則創(chuàng)建主鍵local索引時必須加上分區(qū)字段
ALTER TABLE TEST ADD CONSTRAINT PK_TEST PRIMARY KEY (主鍵字段,分區(qū)字段) USING INDEX LOCAL;
8、oracle 10g創(chuàng)建表分區(qū)
9、刪除
1.不保留,直接刪除:
alter table table_name drop/truncate partition partition_name;
具體用drop還是truncate,得你自己衡量,drop的話原來的分區(qū)和數(shù)據(jù)直接就沒有了,truncate的話,只是數(shù)據(jù)沒有了,分區(qū)還在。
Oracle中經(jīng)常會用到分區(qū)查詢,按分區(qū)查詢時,只需要在表名后面通過PARTITION關(guān)鍵字和括號指定分區(qū)名字(不能加引號),其它的和非分區(qū)的查詢沒有什么區(qū)別。如下是一個例子:
分區(qū)表的數(shù)據(jù)量一般都比較大,有時候,某些查詢必須指定分區(qū)才能查出來。但是,分區(qū)查詢的結(jié)果,并不直觀。為此,我們需要將這些不直觀的結(jié)果組織在一起。
抽象一下,實際上這個問題是,如何通過SQL查詢將零散的值,組織成行和列的形式。
在實際中,這個問題,我并沒有一下反應(yīng)過來。實際上,大概來講這個分兩步考慮:先組織列,假設(shè)有兩個值,因為單個的值只有一行,分別放在不同的表中,取不同的列別名,兩個表連接不帶條件(笛卡爾積),就得到了一個一行兩列的表;再組織行,不同的行合并只需要統(tǒng)一好列名,然后做 union all 就好了。
為了方便區(qū)別,在每一行中可以再加一列,作為每一行的標(biāo)識。下面是一個示意結(jié)果:
oracle可以在dbaojects視圖看分區(qū)增加的時間,在dbaobjects視圖中有一列叫created,可以查到增加的時間。根據(jù)查詢相關(guān)公開信息顯示Oracle公司是全球最大的信息管理軟件及服務(wù)供應(yīng)商,成立于1977年,總部位于美國加州Redwoodshore,面向全球開放oracle認證。
如果查詢當(dāng)前用戶下得分區(qū)表:
select * from user_tables where partitioned='YES'
如果要查詢整個數(shù)據(jù)庫中的分區(qū)表:
select * from dba_tables where partitioned='YES'
如果要查詢某個用戶下得分區(qū)表:
select * from dba_tables where partitioned='YES' and owner='ABCDEFG'
其中ABCDEFG為用戶名