日期:2014-05-17  浏览次数:21120 次

如何找到所有的分区表?
oracle数据库中,有很多分区表都放在不同的表空间,不同用户下,怎么找出所有分区表?

------解决方案--------------------
查看所有用户分区表及分区策略(1、2级分区表均包括):

SELECT p.table_name AS 表名, decode(p.partitioning_key_count, 1, '主分区') AS 分区类型,
p.partitioning_type AS 分区类型, p.column_name AS 分区键,
decode(nvl(q.subpartitioning_key_count, 0), 0, '无子分区', 1, '子分区') AS 有无子分区,
q.subpartitioning_type AS 子分区类型, q.column_name AS 子分区键
FROM (SELECT a.table_name, a.partitioning_type, b.column_name, a.partitioning_key_count
FROM user_part_tables a, user_part_key_columns b
WHERE a.table_name = b.NAME
AND b.object_type = 'TABLE') p,
(SELECT a.table_name, a.subpartitioning_type, b.column_name, a.subpartitioning_key_count
FROM user_part_tables a, user_subpart_key_columns b
WHERE a.table_name = b.NAME
AND a.subpartitioning_key_count <> 0
AND b.object_type = 'TABLE') q
 WHERE p.table_name = q.table_name(+)
 ORDER BY 5,4,1;

显示数据库所有分区表的信息:DBA_PART_TABLES

显示当前用户可访问的所有分区表信息:ALL_PART_TABLES

显示当前用户所有分区表的信息:USER_PART_TABLES
------解决方案--------------------
显示表分区信息 显示数据库所有分区表的详细分区信息:DBA_TAB_PARTITIONS

显示当前用户可访问的所有分区表的详细分区信息:ALL_TAB_PARTITIONS

显示当前用户所有分区表的详细分区信息:USER_TAB_PARTITIONS

显示子分区信息 显示数据库所有组合分区表的子分区信息:DBA_TAB_SUBPARTITIONS

显示当前用户可访问的所有组合分区表的子分区信息:ALL_TAB_SUBPARTITIONS

显示当前用户所有组合分区表的子分区信息:USER_TAB_SUBPARTITIONS

显示分区列 显示数据库所有分区表的分区列信息:DBA_PART_KEY_COLUMNS

显示当前用户可访问的所有分区表的分区列信息:ALL_PART_KEY_COLUMNS

显示当前用户所有分区表的分区列信息:USER_PART_KEY_COLUMNS

显示子分区列 显示数据库所有分区表的子分区列信息:DBA_SUBPART_KEY_COLUMNS

显示当前用户可访问的所有分区表的子分区列信息:ALL_SUBPART_KEY_COLUMNS

显示当前用户所有分区表的子分区列信息: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;

如果我要将分区表中各个分区的数据都清空,可以用truncate table table_name直接删除;

也可以用:

alter table table_name truncate partition p1;

alter table table_name truncate partition p2;

alter table table_name truncate partition p3;

alter table table_name truncate partition p4;

alter table table_name truncate partition p5;

alter table table_name truncate partition p6;

逐个删除。
------解决方案--------------------
楼上提供的信息很齐全啊