在 Oracle 数据库 11g 中操作分区
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在 Oracle 数据库 11g中操作分区
目的
本教程演示了如何在 Oracle 数据库 11g中使用各种分区技术。
所需时间
大约 50 分钟
主题
本教程包括下列主题:
概述
前提条件
使用引用分区
使用基于虚拟列的分区
总结
概述
在Oracle 数据库11g中,可以使用多种新技术对表数据进行分区,以提高数据的检索性能、优化数据组织。这些技术包括:
返回主题列表
前提条件
开始本教程之前,您应该:
1.安装 Oracle 数据库 11g。
2.
将partition.zip文件下载并解压缩到您的工作目录中。
3.打开一个终端窗口,执行以下命令:
sqlplus / as sysdba
@setup
返回主题列表
使用引用分区
引用分区通过从父表继承分区键(而非复制键列),使得具有父-子关系的表能
够在逻辑上均分。分区键通过现有的父-子关系解析,由现行的主键或外键约束
实施。逻辑相关性还可以自动级联分区维护操作,从而使应用程序开发更轻松且
更不易出错。
执行以下步骤,进一步了解引用分区的用法:
1.
打开一个终端窗口,以SH用户身份登录 SQL*Plus。执行create_orders.sql脚本,
创建按范围分区的ORDERS表。
@create_orders
2.
执行create_order_items.sql脚本,创建按引用分区的ORDER_ITEMS表。
@create_order_items
3.
执行query_dict_1.sql脚本,查看按引用分区的ORDER_ITEMS表的相关信息。
@query_dict_1
4.
执行insert_orders.sql脚本,将数据插入ORDERS表。
@insert_orders
5.
执行show_data_placement.sql脚本,观察如何将数据置于分区中的同一位置。
@show_data_placement
6.
要显示智能化分区连接,请将 _parallel_broadcast_enabled 参数设为 FALSE 。执行以下命令:
ALTER SESSION SET "_parallel_broadcast_enabled"=FALSE;
7.
执行show_plan.sql脚本,查看有关智能化分区连接的信息。
@show_plan
8.
执行drop_partition.sql脚本,从ORDERS表中删除p_before_jan_2006分区。
@drop_partition
9.
执行query_dict_2.sql脚本,查看有关表的信息。
@query_dict_2
10.
执行add_partition.sql脚本,添加p2007_01分区。
@add_partition
11.
执行cleanup_1.sql脚本,删除本例中创建的分区和表空间。
@cleanup_1
返回主题列表使用间隔分区
间隔分区可以完全自动化范围分区的创建。管理新分区的创建是一项繁琐的高重复性任务。对于可预测的小范围分区添加(例如,添加每日的新分区)尤其如此。间隔分区可以通过按需创建分区来自动化该操作。
执行以下步骤,了解间隔分区的用法:
1.
执行create_newsales.sql脚本,创建按间隔分区的NEWSALES表。
@create_newsales
2.
执行query_dict_3.sql脚本,查询USER_TAB_PARTITIONSNEWSALES字典视图,以了解有关NEWSALES表的信息。
@query_dict_3
3.
执行insert_newsales.sql脚本,将新数据插入NEWSALES表,以创建新分区(段)。
@insert_newsales
4.
执行query_dict_4.sql脚本,查看有关新分区的信息。
@query_dict_4
5.
执行merge_partition.sql脚本,合并两个分区。
@merge_partition
@query_dict_5
7.
执行create_hist_newsales.sql脚本,创建一个按范围分区的表。
@create_hist_newsales
@query_dict_6
9.
执行insert_histnewsales_row_1.sql脚本,在HISTORICAL_NEWSALES表中插入一行。插入操作将失败,因为分区表目前还不是一个按间隔分区的表。
@insert_histnewsales_row_1
10.
执行alter_hist_newsales.sql脚本,将分区表更改为按间隔分区的表。
@alter_hist_newsales
11.
执行insert_histnewsales_row_2.sql脚本,再次尝试在该表中插入一行。
@insert_histnewsales_row_2
12.
执行query_dict_7.sql脚本,查看有关分区的信息。
@query_dict_7