




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DB2数据库表分区一、创建分区1、创建表及其分区1、创建表ineitem按l_shipdate(DATE类型,本文一下皆是以date类型字段为例,其他类型如int类似)字段分区,共四个分区,分区名字分别为A B C D ,即让数据分别存放在这四个分区,按分区条件存放 CREATE TABLE lineitem(l_orderkey DECIMAL(10,0) NOT NULL,l_partkey INTEGER, l_shipdate DATE,l_commentVARCHAR(44) PARTITION BY RANGE(l_shipdate) (PARTITION A STARTING 1/1/1992 ENDING 6/30/1992,PARTITION B STARTING 7/1/1992 ENDING 12/31/1992, PARTITION C STARTING 1/1/1993 ENDING 6/30/1993, PARTITION D STARTING 7/1/1993 ENDING 12/31/1993); 2、也可以按月、年等划分分区。一下列子是共建立了五个表分区,分别是l_shipdate的最小值-12/31/1991、1/1/19921/31/1991、2/1/19922/28/1992、3/1/19923/31/1992、4/1/1992-最大值。CREATE TABLE lineitem(l_orderkey DECIMAL(10,0) NOT NULL,l_partkey INTEGER, l_shipdate DATE,l_comment VARCHAR(44)PARTITION BY RANGE(l_shipdate)( startingminvalue, STARTING 1/1/1992 ENDING 3/30/1992 every 1 month,endingmaxvalue)2、添加新空分区Altertable lineitem add PARTITION test STARTING 7/1/1994 ENDING 12/30/19943、补充若创建分区时未指定分区名称,系统默认会自动设置为 PART0,PART1,PART2依次类推。二、删除分区(即数据清理) 1、先分离分区(注意:分离分区数据还在,会把A分区里面的数据转移到test_tmp里,此时A分区已被删除)alter table lineitem detach PARTITION A into test_tmp 2、删除分区转移表,彻底删除数据drop tabletest_tmp注意:DB2删除表分区数据是分以上两步。其他的数据库好像直接删除分区A即可。三、DB2数据脱机备份与恢复 1、完全备份数据库(时间戳:20071121152940)db2 backup dbTestDB to D:/DB2_Train 2、模拟灾难强制删除数据库db2 dropdbTestDB 3、根据数据库备份还原数据库db2 restore dbTestDB from D:/DB2_Train taken at 20071121152940注意:根据本人试验和查阅文献,表分区需要在表建立时创建。若一张表已存在,无分区,之后想加入分区,则需先建一个表A,然后将数据导出,再导入到表A,删除原表,然后将表A名称改为原表名。尚待测试问题1、 表空间的建立(大小,文件位置,文件名称)2、 表空间的删除Oracle数据库表分区一、 表分区规则1、每一个分区都必须有一个VALUES LESS THEN子句,它指定了一个不包括在该分区中的上限值。分区键的任何值等于或者大于这个上限值的记录都会被加入到下一个高一些的分区中。2、所有分区,除了第一个,都会有一个隐式的下限值,这个值就是此分区的前一个分区的上限值。3、在最高的分区中,MAXVALUE被定义。MAXVALUE代表了一个不确定的值。这个值高于其它分区中的任何分区键的值,也可以理解为高于任何分区中指定的VALUE LESS THEN的值,同时包括空值。二、 表分区实例假设有一个CUSTOMER表,表中有数据200000行,我们将此表通过CUSTOMER_ID进行分区,每个分区存储100000行,我们将每个分区保存到单独的表空间中,这样数据文件就可以跨越多个物理磁盘。下面是创建表和分区的代码,如下:CREATE TABLE CUSTOMER ( CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY, FIRST_NAME VARCHAR2(30) NOT NULL, LAST_NAME VARCHAR2(30) NOT NULL, PHONE VARCHAR2(15) NOT NULL, EMAIL VARCHAR2(80), STATUS CHAR(1) ) PARTITION BY RANGE (CUSTOMER_ID) ( PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01, PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02 )例二:按时间划分CREATE TABLE ORDER_ACTIVITIES ( ORDER_ID NUMBER(7) NOT NULL, ORDER_DATE DATE, TOTAL_AMOUNT NUMBER, CUSTOTMER_ID NUMBER(7), PAID CHAR(1) ) PARTITION BY RANGE (ORDER_DATE) ( PARTITION ORD_ACT_PART01 VALUES LESS THAN (TO_DATE(01- MAY -2003,DD-MON-YYYY) TABLESPACEORD_TS01,PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE(01-JUN-2003,DD-MON-YYYY) TABLESPACE ORD_TS02, PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE(01-JUL-2003,DD-MON-YYYY) TABLESPACE ORD_TS03 )例三:MAXVALUECREATE TABLE RangeTable( idd INT PRIMARY KEY , iNAME VARCHAR(10), grade INT ) PARTITION BY RANGE (grade) ( PARTITION part1 VALUES LESS THEN (1000) TABLESPACE Part1_tb, PARTITION part2 VALUES LESS THEN (MAXVALUE) TABLESPACE Part2_tb );三、 列表分区该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。例一CREATE TABLE PROBLEM_TICKETS ( PROBLEM_ID NUMBER(7) NOT NULL PRIMARY KEY, DESCRIPTION VARCHAR2(2000), CUSTOMER_ID NUMBER(7) NOT NULL, DATE_ENTERED DATE NOT NULL, STATUS VARCHAR2(20) ) PARTITION BY LIST (STATUS) ( PARTITION PROB_ACTIVE VALUES (ACTIVE) TABLESPACE PROB_TS01, PARTITION PROB_INACTIVE VALUES (INACTIVE) TABLESPACE PROB_TS02例二CREATE TABLE ListTable( id INT PRIMARY KEY , name VARCHAR (20), area VARCHAR (10) ) PARTITION BY LIST (area) ( PARTITION part1 VALUES (guangdong,beijing) TABLESPACE Part1_tb, PARTITION part2 VALUES (shanghai,nanjing) TABLESPACE Part2_tb ); )四、 表的一些维护性操作一、添加分区以下代码给SALES表添加了一个P3分区ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE(2003-06-01,YYYY-MM-DD); 注意:以上添加的分区界限应该高于最后一个分区界限。以下代码给SALES表的P3分区添加了一个P3SUB1子分区ALTER TABLE SALES MODIFY PARTITION P3 ADD SUBPARTITION P3SUB1 VALUES(COMPLETE);二、删除分区以下代码删除了P3表分区:ALTER TABLE SALES DROP PARTITION P3;在以下代码删除了P4SUB1子分区:ALTER TABLE SALES DROP SUBPARTITION P4SUB1;注意:如果删除的分区是表中唯一的分区,那么此分区将不能被删除,要想删除此分区,必须删除表。三、截断分区截断某个分区是指删除某个分区中的数据,并不会删除分区,也不会删除其它分区中的数据。当表中即使只有一个分区时,也可以截断该分区。通过以下代码截断分区:ALTER TABLE SALES TRUNCATE PARTITION P2;通过以下代码截断子分区:ALTER TABLE SALES TRUNCATE SUBPARTITION P2SUB2;四、合并分区合并分区是将相邻的分区合并成一个分区,结果分区将采用较高分区的界限,值得注意的是,不能将分区合并到界限较低的分区。以下代码实现了P1 P2分区的合并:ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;五、拆分分区拆分分区将一个分区拆分两个新分区,拆分后原来分区不再存在。注意不能对HASH类型的分区进行拆分。ALTER TABLE SALES SBLIT PARTITION P2 AT(TO_DATE(2003-02-01,YYYY-MM-DD) INTO (PARTITION P21,PARTITION P22); 六、接合分区(coalesca) 结合分区是将散列分区中的数据接合到其它分区中,当散列分区中的数据比较大时,可以增加散列分区,然后进行接合,值得注意的是,接合分区只能用于散列分区中。通过以下代码进行接合分区:ALTER TABLE SALES COALESCA PARTITION;七、重命名表分区以下代码将P21更改为P2 ALTER TABLE SALES RENAME PARTITION P21 TO P2;八、相关查询跨分区查询select sum( *) from (select count(*) cn from t_table_SS PARTITION (P200709_1) union all select count(*) cn from t_table_SS PARTITION (P200709_2); 查询表上有多少分区SELECT * FROM useR_TAB_PARTITIONS WHERE TABLE_NAME=tableName 查询索引信息select object_name,object_type,tablespace_name,sum(value) from v$segment_statistics where statistic_name IN (physical reads,physical write,logical reads)and object_type=INDEX group by object_name,object_type,tablespace_name order by 4 desc -显示数据库所有分区表的信息:select * from DBA_PART_TABLES -显示当前用户可访问的所有分区表信息: select * from ALL_PART_TABLES -显示当前用户所有分区表的信息:select * from USER_PART_TABLES -显示表分区信息显示数据库所有分区表的详细分区信息:select * from DBA_TAB_PARTITIONS -显示当前用户可访问的所有分区表的详细分区信息:select * from ALL_TAB_PARTITIONS -显示当前用户所有分区表的详细分区信息:select * from USER_TAB_PARTITIONS -显示子分区信息显示数据库所有组合分区表的子分区信息:select * from DBA_TAB_SUBPARTITIONS -显示当前用户可访问的所有组合分区表的子分区信息:select * from ALL_TAB_SUBPARTITIONS -显示当前用户所有组合分区表的子分区信息:select * from USER_TAB_SUBPARTITIONS -显示分区列显示数据库所有分区表的分区列信息:select * from DBA_PART_KEY_COLUMNS -显示当前用户可访问的所有分区表的分区列信息:select * from ALL_PART_KEY_COLUMNS -显示当前用户所有分区表的分区列信息:select * from USER_PART_KEY_COLUMNS -显示子分区列显示数据库所有分区表的子分区列信息:select * from DBA_SUBPART_KEY_COLUMNS -显示当前用户可访问的所有分区表的子分区列信息:select * from ALL_SUBPART_KEY_COLUMNS -显示当前用户所有分区表的子分区列信息:select * from USER_SUBPART_KEY_COLUMNS -怎样查询出oracle数据库中所有的的分区表select * from user_tables a where a.partitioned=YES -删除一个表的数据是truncate table table_name; -删除分区表一个分区的数据是alter table table_name truncate partition p5; 五、 oracle数据库备份与恢复 exp命令 三种模式(1)表方式,将指定表的数据导出/导入。导出:导出一张或几张表:$ exp user/pwd file=/dir/xxx.dmp log=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产集团董事长助理办公室效能提升职责
- 一年级数学培优补差课程研发计划
- 2025年度特色餐厅试用期厨师与服务员技能提升合同
- 长期随访方法学-洞察及研究
- 2025对公账户国际贸易融资合同范本
- 2025版水泥行业环保产品购销合同参考样本
- 2025版挖掘机械买卖与设备维护及翻新服务协议
- 2025年度版权合同:金融科技知识产权授权及风险控制共享协议
- 高级公寓室内精装修文明施工及环境保护保证措施
- 管理学院院长岗位职责
- 2018年黑龙江成人高考专升本艺术概论真题(含答案)
- 现代设计理论与方法(上)
- 碳纤维材料工程检验批质量验收记录表优质资料
- GB/T 5907.4-2015消防词汇第4部分:火灾调查
- GB 31701-2015婴幼儿及儿童纺织产品安全技术规范
- 健身理论与指导课件讲义
- 浙江省科学作业本2022版四年级上册作业本参考答案
- 2023年中远海运船员管理有限公司招聘笔试题库及答案解析
- 美国共同基金SmartBeta布局及借鉴
- 企业劳动用工法律风险与防范
- 2022年08月安徽省芜湖市招考大学生科技特派员岗位冲刺题(带答案)
评论
0/150
提交评论