当前位置:首页 > 日记 > 正文

oracle表空间表分区详细解决方案及oracle表分区查询使用

oracle表空间表分区详细解决方案及oracle表分区查询使用
本文从以下几个方面对分区表的概念和操作进行了整理:
1的概念。表空间和分区表
2的具体作用。表分区
3的利与弊。表分区
4的几种类型及操作方法。表分区
5。表分区的维护操作。
(1)表空间和分区表的概念
表空间:
它是一个或多个数据文件的集合。所有的数据对象都存储在指定的表空间中,但它们主要存储在表中,因此它们被称为表空间。

分区表:
当表中的数据量在增加时,查询数据的速度会减慢,应用程序的性能会降低,因此我们应该考虑对表进行分区。它只在许多表空间(物理文件)中以物理形式存储表中的数据,因此在搜索数据时,它不会在任何时间扫描整个表。

(2)。表分区的特殊作用
Oracle的表分区功能带来巨大的应用效益的提高可管理性、性能和可用性。一般来说,分区可以大大提高某些查询和维护操作的性能。此外,分区可以大大简化常见的管理任务,和分区建设千兆字节的数据系统或超高可用性系统的关键工具。

分区功能可以进一步细分表,索引,索引组织表或成段,称为分区,每个分区都有自己的名字,也可以选择自己的存储特征。从数据库管理员的角度,划分的对象有多个段,可以集体或单独管理。这使得数据库管理员在分区后管理对象方面具有相当大的灵活性。但是,从应用程序的角度来看,分区表与非分区表完全相同。不需要修改任何表使用SQL DML命令分区后。

何时使用分区表:
1,表的大小超过2GB。
2。该表包含历史数据,新数据将添加到新分区中。

(3)。表分区的优缺点
表分区具有以下优点:
1,提高查询性能:分区对象的查询只能搜索您关心的分区,提高检索速度。
2。增强的可用性:如果表的分区失败,其他分区中的表的数据仍然可用;
3,维护方便:如果表的分区有故障,则需要修复数据,只需修复分区。
4,平衡I/O:可以将不同分区映射到磁盘,以平衡I/O,并提高整个系统的性能。

缺点:
分区表关联:现有表没有一种方法可以直接转换为分区表,但Oracle提供联机重新定义表的功能。

(4)。几种类型的表分区和操作方法

1。范围分区:

范围分区根据范围将数据映射到每个分区,这取决于在创建分区时指定的分区键。此分区是最常用的分区,分区键通常使用日期。
在使用范围分区时,请考虑以下规则:
1。每个分区必须有一个值小于1的子句,该子句指定不包含在分区中的上限值。任何与分区键上限相等或大于上限的记录都将被添加到下一个更高的分区。
2。除第一个分区外,所有分区都有一个隐式下限值,这是该分区前一个分区的上限。
三.在最高的分区,最大值是defined.maxvalue代表一个不确定的值。这个值是高于其他分区中的任何分区键的值,也可以理解为高于规定值的值在任何分区比较少,同时,它包含空值。

例1:
假设有一个客户表。桌子上有200000排。我们通过customer_id分区表,每个分区和存储100000行。我们保存每个分区以分隔表空间,以便数据文件可以跨越多个物理磁盘:

复制代码代码如下所示:
创建表的客户

customer_id数不空主键,
first_name VARCHAR2(30)不为空,
last_name VARCHAR2(30)不为空,
phonevarchar2(15)不为空,
(80)emailvarchar2,
状态字符(1)

按范围分区(customer_id)

分区cus_part1值小于(100000)表空间cus_ts01,
分区cus_part2值小于(200000)表空间cus_ts02

例二:时间划分

复制代码代码如下所示:
创建表order_activities

order_id数(7)不为空,
order_date日期,
total_amount数,
custotmer_id号(7),
付费字符(1)

按范围分区(order_date)

分区ord_act_part01值小于(to_date(01 -可能- 2003,'dd-mon-yyyy '))tablespaceord_ts01,
分区ord_act_part02值小于(to_date('01-jun-2003 ','dd-mon-yyyy '))表空间ord_ts02,
分区ord_act_part02值小于(to_date('01-jul-2003 ','dd-mon-yyyy '))表空间ord_ts03

例三:次

复制代码代码如下所示:
创建表的射程表

主键,
iName varchar(10),
等级int

按范围划分(等级)

分区1值小于(1000)表空间part1_tb,
分区二值小于(次)表空间part2_tb
);
两。列表分区:

此分区的特性是列中只有几个值。基于此,我们可以使用列表分区。

一例

复制代码代码如下所示:
创建表problem_tickets

problem_id数(7)非空主键,
描述VARCHAR2(2000),
customer_id数(7)不为空,
date_entered日期不为空,
现状VARCHAR2(20)

按列表分区(状态)

分区prob_active值(主动的)的表空间prob_ts01,
分区prob_inactive值(不活动的)的表空间prob_ts02


在两例

复制代码代码如下所示:
创建表listtable

主键,
名称varchar(20),
地区varchar(10)

按列表分区(区域)

分区第一部分价值('guangdong,北京的part1_tb)表空间,
分区二值(上海、南京)的表空间part2_tb
);

三。哈希分区:

这种类型的分区使用列值上的哈希算法来决定在该行中放置哪个分区。当列的值不合适时建议使用哈希分区。
哈希分区是通过指定分区号均匀分配数据的分区类型,因为在I/O设备上进行哈希分区,所以这些分区的大小是相同的。

例1:

复制代码代码如下所示:
创建表hash_table

编号(8),
INF VARCHAR2(100)

散列分区

分区表空间hash_ts01 part01,
分区表空间hash_ts02 part02,
分区表空间hash_ts03 part03

速记:

复制代码代码如下所示:
创建相关表

编号编号(4),
ename VARCHAR2(30),
萨尔号

散列分区法(EMPNO)分区8
商店(EMP1,EMP2,EMP3,emp4,emp5,emp6,emp7,emp8);
哈希划分最重要的机制是根据哈希算法计算特定记录的哪个分区。哈希算法最重要的功能是散列函数。如果您想在Oracle中使用散列分区,只需要指定分区的数量,建议分区数使用2个N减,这可以使数据分配在各个分区之间更均匀。

四。组合范围散列分区

此分区基于范围分区和列表分区。首先,表由某个列分区,然后根据列对列表进行分区。分区中的分区称为子分区。

复制代码代码如下所示:
创建表的销售

product_id VARCHAR2(5),
sales_date日期,
sales_cost号(10),
现状VARCHAR2(20)

按范围分区(sales_date)子分区列表(状态)

分区P1值小于(to_date('2003-01-01 ','yyyy-mm-dd '))表空间rptfact2009

子分区p1sub1值(主动的)的表空间rptfact2009,
子分区p1sub2值(不活动的)的表空间rptfact2009
),
分区P2的值小于(to_date('2003-03-01 ','yyyy-mm-dd '))表空间rptfact2009

子分区p2sub1值(主动的)的表空间rptfact2009,
子分区p2sub2值(不活动的)的表空间rptfact2009


五。复合散列分区:

分区基于范围分区和哈希分区,其中表首先由一个列分区,然后在一个列中执行哈希分区。

复制代码代码如下所示:
创建表dinya_test

transaction_id数主键,
item_id数(8)不为空,
item_description VARCHAR2(300),
transaction_date日期

按范围分区(transaction_date)子分区的子分区散列(transaction_id)3店

分区part_01值小于(to_date('2006-01-01 ','yyyy-mm-dd ')),
分区part_02值小于(to_date('2010-01-01 ','yyyy-mm-dd ')),
分区part_03值小于(最大值)
);
(5)。表分区上的一些维护操作:

1。添加分区

下面的代码将一个P3分区添加到销售表中

复制代码代码如下所示:
修改表的销售增加分区P3值小于(to_date('2003-06-01 ','yyyy-mm-dd '));
注意:上面添加的分区边界应该高于最后一个分区边界。
下面的代码添加p3sub1子分区的分区表P3销售
复制代码代码如下所示:
修改表的销售分区P3添加子p3sub1值(完整的);
两。删除分区
下面的代码删除P3表分区:
复制代码代码如下所示:
表销售下拉分区;
的p4sub1子分区是在下面的代码中删除:
复制代码代码如下所示:
修改表的销售下降p4sub1子分区;
注意:如果删除的分区是表中唯一的分区,那么分区将不会被删除,如果要删除分区,则必须删除表。
三。隔断隔断

截断分区删除分区的数据并没有删除分区或删除其他分区的数据,分区可以被截断,如果表中只有一个分区,下面的代码分区截断:
复制代码代码如下所示:
更改表销售截断分区P2;
将不会通过下面的代码:
复制代码代码如下所示:
修改表的销售子p2sub2截断;
四、合并分区

合并分区是将相邻分区合并到一个分区中,这将导致更高的分区边界:
复制代码代码如下所示:
将表分区合并到分区P2中;
五。拆除分

分割分区将一个分区划分为两个新分区,原来的分区不再存在。注意,哈希类型的分区不能拆分。

修改表的销售sblit分区P2在(to_date('2003-02-01 ','yyyy-mm-dd '))到(分区);
六、联合分区(coalesca)
组合分区是将哈希分区中的数据连接到其他分区。当哈希分区中的数据较大时,可以添加哈希分区,然后加入。值得注意的是,联接分区只能用于散列分区:

复制代码代码如下所示:
修改表的销售coalesca分区;
七。名称列表的细分

下面的代码将p21改为P2
复制代码代码如下所示:
将表分区重命名为P2;
八。相关查询

跨分区查询
复制代码代码如下所示:
从中选择总和(*)
(select count(*)CN t_table_ss分区(p200709_1)
联盟的所有
select count(*)CN t_table_ss分区(p200709_2)
);
查找表上有多少个分区
复制代码代码如下所示:
SELECT * FROM user_tab_partitions哪里table_name = 'tablename
查询索引信息

复制代码代码如下所示:
选择object_name,object_type,tablespace_name,金额(价值)
从V segment_statistics美元
在那里statistic_name(物理读写,物理,逻辑读)和object_type = 'index
通过object_name,object_type组,tablespace_name
4倒序

-显示数据库所有分区表上的信息:
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.partitioned =是

-删除表的数据是
TRUNCATETABLE table_name;

-删除分区表中某个分区的数据
修改表table_name删除分区P5;

相关文章

MySQL#1062重复录入1关键

MySQL#1062重复录入1关键

关键,电脑软件,MySQL,最近,VPS在移动WordPress的时候已经进入数据库了。 # 1062重复录入1 '关键'主' 当时,我已经全部删除了原始数据,并没有办法向万能的百度。我发现我很长一段时间。ING的激活,O(一_即时测试,一个成功的O)哈哈。 现在,只要…

如何在WIN7立体窗口模式建立一个快

如何在WIN7立体窗口模式建立一个快

快捷方式,模式,建立一个,窗口,如何在,评论:叫win7立体窗口可以按快捷键Ctrl键+ Tab键窗口,窗口按住Ctrl +键,然后按Tab键找到你想要的东西,但有时不想用,可以创建快捷方式,具体步骤如下,有兴趣的朋友不要错过 我们通常所说的win7立体窗口,按下快捷…

刁费尔个人签名

刁费尔个人签名

费尔,个人签名,电脑软件,一些刁费尔属于个性签名,你的签名是不足以表达自我 1。女孩脾气很好,男孩女孩哭可恶;懦弱,胆小的男孩哭;女孩玩男孩玩,女孩叫混蛋男孩玩。 2。人们的胃里有墨水,我只能在胃里放矿泉水。 三.除了你爱我,没有出路,否则,你会淹死…

网络和共享中心(无法打开)在win7

网络和共享中心(无法打开)在win7

网络,无法打开,中心,电脑软件,问题: 电脑配备了win7系统。最近,在控制面板中,网络和共享中心无法打开。双击此项没有反应,无法设置网络连接。现在,要重置网络连接,我不知道如何操作 答案uff1a 其他的方法可以用来设置网络连接:点击开始,cmd进入,在…

PHP示例教程,介绍如何在Linux中安装

PHP示例教程,介绍如何在Linux中安装

安装,扩展方法,教程,示例,如何在,注释:一种是完全重新编译PHP,另一种方法是分别编译扩展库并以扩展的形式扩展它。下面是一个安装卷扩展的示例。 如果PHP已在系统中编译,则需要添加新的扩展名。 方法之一是重新编译PHP完全,和另一种方法是编写…

PHP计算经纬度2点距离

PHP计算经纬度2点距离

距离计算,计算,经纬度,电脑软件,距离,复制代码代码如下所示: 功能getdistancebetweenpointsnew(latitude1美元,longitude1美元美元美元,latitude2,longitude2){ 美元美元美元longitude2 longitude1θ=; $英里=(sin(deg2rad($ latitude1))*罪(deg2rad($ la…

纯PHP生成的叶子画图的一个例子

纯PHP生成的叶子画图的一个例子

画图,叶子,例子,电脑软件,PHP,uff1a效应 提示:保存到PHP文件中,然后在浏览器中单击以查看与效果图相同的图片。 复制代码代码如下所示: $我=画面欣赏(670500); 白色= imagecolorallocate美元($ IM,0xFF,0xFF,0xff); $ G = imagecolorallocate($ IM,0x00…

在win7下切换输入法的形状(图形)

在win7下切换输入法的形状(图形)

图形,输入法,形状,电脑软件,问题: 计算机安装win7系统,使用中文输入法,默认的宽度,在输入文件的时期为实心点。我知道这是因为理性的输入角度,认为它将被转换成一个全角半角。我不知道怎么做了吗 答案uff1a 在Win7的一些中文输入状态栏没有浮…

在Linux下提示未找到命令

在Linux下提示未找到命令

命令,提示,未找到,电脑软件,Linux,注释:如果新安装的Linux系统经过精简和安装,就会出现一个提示:未找到命令。安装时,可以选择默认安装基本的组件。 如果新安装的系统,如正常操作:关机,fdisk命令,bash:命令没有找到建议flagrantly.that 要做的第一…

linux系统有效防御ARP攻击的实用技

linux系统有效防御ARP攻击的实用技

系统,实用技巧,电脑软件,linux,ARP,点评:Windows用户可以使用antiarp防火墙,基本上可以解决问题,但我不喜欢Linux的兄弟姐妹们,我今天就遇到这样的麻烦 linux下ARP攻击的解决方案 我用的是Fedora Core 6,我提出了几个图像文件,使用ARP的关键字搜…

mysql全文搜索的sql命令的编写

mysql全文搜索的sql命令的编写

命令,全文搜索,电脑软件,mysql,sql,MySQL全文搜索,SQL编写: 比赛(COL1,COL2,…对(expr)查询扩展布尔模型| } {) 例如: SELECT * FROM文章匹配(标题、主体)对('database); 比赛()函数执行一个自然语言搜索数据库中的一个字符串。数据库是包含在全文1套1或2…

Word2007插入特殊字符的方法

Word2007插入特殊字符的方法

方法,特殊字符,电脑软件,1,单击要插入特殊字符的位置。 2、在插入;在标签上;符号;在组中,单击符号,然后单击另一个符号; 3、点击特殊字符标签。 4,单击要插入的字符,然后单击插入;。 5,点击关闭;…