sql> select para_name,para_value from v$dm_ini where para_name=『list_table』;
list_table=0 預設的索引組織表
list_table=1 建立的表為堆表
不建議改引數
規則:1.取名 2.功用(資料型別)3.儲存位置 4.約束 5.備註(注釋) 6.正規化
檢視表的建立語句:
sql> sp_tabledef (『sysdba』,『t1』);
sql> select
dbms_metadata.get_ddl(『table』,『t1』,『sysdba』);
建立:sql> create table t2 (id int primary key,name
varchar(10)) storage (on main ,nobranch);
oracle: assm (bitmap) l3 — l2 — l1
mssm (free list)
資料塊的管理: oracle:pct_free(10%) pct_used
達夢:fillfactor (100%)(行鏈結)
sql> create table t3 (id int primary key,name
varchar(10)) storage (on main ,nobranch,fillfactor 80);
範圍分割槽(數字,日期)
建立範圍分割槽表建立乙個範圍分割槽,乙個月乙個分割槽。每個分割槽存放當月的資料。
create table r_t1 (sid int ,name varchar(10),bir date)
partition byrange(bir) (partition p1 values less than (『2019-12-31』) tablespace tbs1,
partition p2 values less than (『2020-01-31』) tablespace tbs2,
partition p3 values less than (『2020-02-29』) tablespace tbs3
);create table r_t2 (sid int primary key ,name varchar(10),bir
date)
partition by range (bir) (partition p1 values less than (『2019-12-31』) ,
partition p2 values less than (『2020-01-31』) ,
partition p3 values less than (『2020-02-29』) ) storage (on tbs1,nobranch );
錄入操作:
begin
for i in 1…10000 loop
insert into r_t1 values (i,『aaa』||i,sysdate);
commit;
end loop;
end; /
沒有找到合適的分割槽
select * from dba_tab_partitions where table_name=『r_t1』;
查詢:
sql> select * from r_t1 partition (p2);
增加分割槽:
(2020-10 資料)
alter table r_t1 add partition p4 values less than (『2020-10-31』);
刪除分割槽:
sql> alter table r_t1 drop partition p4;
拆分分割槽
從 2 月 10 日分界點(分割槽太大了)資料分布不均勻
sql> alter table r_t1 split partition p3 at (『2020-02-10』) into (partition p3_1,partition p3_2);
合併分割槽:
(假設把 8 月和 9 月分割槽合併)
sql> alter table r_t1 merge partitions p3_1,p3_2 into partition p3;
交換分割槽:
做分割槽交換,原表的資料就沒有了。
sql> alter table r_t1 exchange partition p2 with table test;
問題:超出範圍資料如何處理?
sql> alter table test add partition pmax values less than (maxvalue);
間隔分割槽是範圍分割槽的公升級版本。
(分割槽表取名是資料庫分配的。)
oracle 的間隔分割槽,達夢的間隔分割槽
numtoyminterval(達夢支援) 年 月
numtodsinterval(達夢不支援) 天 小時 周 分
create table table01
(id int,
name varchar(20),
bir date
)partition by range(bir)
interval (numtoyminterval(1,『month』))
(partition p1 values less than (『2020-01-01』),
partition p2 values less than (『2020-02-01』)
);雜湊分割槽hash 分割槽 存資料快,取資料慢,資料幾乎
平均分配到各個分割槽上。
sql> create table h_t1 (id int,name varchar(10)) partition by hash (id) partitions 4;
雜湊分割槽不支援刪除,增加等操作。
列表分割槽list
sql> create table l_t1 (id int,name varchar (20))
partition bylist(name)
(partition p1 values (『a』),
partition p2 values (『b』));
增加:
sql> alter table l_t1 add partition p3 values (『c』);
刪除:
sql> alter table l_t1 drop partition p3;
分割槽組合支援 l-r 、r-l 、l-h、h-r、h-l等多種組合
l-r 例項
create table sales(
sales_id int,
saleman char(20),
saledate datetime,
city char(10)
)partition by list(city)
subpartition by range(saledate) subpartition
template(
subpartition p11 values less than (『2012-04-01』),
subpartition p12 values less than (『2012-07-01』),
subpartition p13 values less than (『2012-10-01』),
subpartition p14 values equ or less than
(maxvalue))
(partition p1 values (『北京』, 『天津』)
(subpartition p11_1 values less than (『2012-10-01』),
subpartition p11_2 values equ or less than
(maxvalue)
),partition p2 values (『上海』, 『南京』, 『杭州』),
partition p3 values (default)
);
達夢資料庫的表分割槽管理
分割槽表是將大表的資料分成稱為分割槽的許多小的子集,達夢資料庫的分割槽表有範圍分割槽 雜湊分割槽 列表分割槽 間隔分割槽 組合分割槽等等多種多樣。範圍分割槽 範圍分割槽是對資料表中的某個值的範圍進行分割槽,比如可以根據業務記錄的建立日期進行分割槽,決定將該資料儲存在哪個分割槽上。雜湊分割槽 雜湊分割...
資料庫 分割槽表
步驟 先建立分割槽函式,在建立分割槽方案,最後使用分割槽方案建立表 首先熟悉一下建立分割槽函式 1 在int列上建立左側分割槽函式,下列分割槽函式將表分為四個分割槽。2 在int列上建立右側分割槽函式 3 在datatime列上建立右側分割槽函式,將資料表分為12個分割槽,每個分割槽對應dateti...
達夢資料庫例項管理
達夢資料庫啟動的過程 shutdown mount 分配共享記憶體,啟動後台的程序或者執行緒,開啟控制檔案 mount open 根據控制檔案開啟重做日誌檔案和資料檔案 資料庫的啟停方式 dmdba dm1 etc rc.d init.d dmservicetest start dmdba dm1 ...