oracle 分区查询 存储 oracle查询分区表的数据的时候默认查询哪个分区
一、oracle数据库分区有几种
Oracle数据库分区主要分为四种类型,包括范围分区(Range Partitioning)、列表分区(List Partitioning)、哈希分区(Hash Partitioning)和复合分区(Composite Partitioning)。
1.范围分区(Range Partitioning):
范围分区是常用的一种分区方式。它根据分区键的值的范围将数据分配到不同的分区中。每个分区都包含了一个连续的范围。比如,我们可以根据日期字段进行范围分区,每个分区存储一个月的数据。假设有一个表记录了员工的入职日期,我们可以按照入职日期进行范围分区,比如分区为“2000年1月1日”到“2010年12月31日”,“2011年1月1日”到“2020年12月31日”,以此类推。这样,我们可以方便地根据日期范围查询特定分区的数据,提高了查询效率。
2.列表分区(List Partitioning):
列表分区是另一种常用的分区方式。它明确指定了每个分区中应包含的键的值。比如,对于一个存储了各个城市天气的表,我们可以按照城市名称进行列表分区,每个分区包含了一些特定的城市。比如,一个分区包含了北京、上海、广州等大城市,另一个分区包含了深圳、杭州、成都等城市。这样,我们可以根据城市名直接查询特定的分区,提高了查询效率。
3.哈希分区(Hash Partitioning):
哈希分区是通过哈希算法将数据均匀分布到不同的分区中。Oracle数据库使用了基于分区键的哈希值来决定数据应该放在哪个分区。这种方式保证了数据在各个分区中的均匀分布,对于处理大数据量的表非常有效。
4.复合分区(Composite Partitioning):
复合分区是Oracle数据库中复杂的分区方式。它允许你在同一时间使用两种或更多的分区方法。比如,你可以首先使用范围分区,然后在每个范围分区中再使用哈希分区。这种方式提供了极高的灵活性,使得你可以更精细地控制数据的分布和访问。
以上四种就是Oracle数据库的主要分区方式。它们都有各自的适用场景,选择哪种分区方式取决于你的具体需求和数据特性。正确的分区方式可以提高数据查询效率,提升系统性能,是优化Oracle数据库的重要手段。
二、oracle 在删除表,表空间,用户时 如何释放磁盘空间
一、drop表
执行drop table xx语句
drop后的表被放在回收站(user_recycle**n)里,而不是直接删除掉。这样,回收站里的表信息就可以被恢复,或彻底清除。
通过查询回收站user_recycle**n获取被删除的表信息,然后使用语句
flashback table<user_recycle**n.object_name or user_recycle**n.original_name> to before drop [rename to<new_table_name>];
将回收站里的表恢复为原名称或指定新名称,表中数据不会丢失。
若要彻底删除表,则使用语句:drop table<table_name> purge;
清除回收站里的信息
清除指定表:purge table<table_name>;
清除当前用户的回收站:purge recycle**n;
清除所有用户的回收站:purge dba_recycle**n;
不放入回收站,直接删除则是:drop table xx purge;
举例如下:
===============================================================================
SQL> select* from test1;
A B C
--------------
11 5
11 10
2 rows selected
SQL> create table test2 as select* from test1;
Table created
SQL> select* from test2;
A B C
--------------
11 5
11 10
2 rows selected
SQL> drop table test2;
Table dropped
SQL> select object_name, original_name, operation, type from user_recycle**n;
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE
------------------------------------------------------------------------------------------------
BIN$vQwemDg4R9mK9fYJNdYzvg==$0 TEST2 DROP TABLE
SQL> flashback table test2 to before drop rename to test3;--【to test3】将表重命名
Done
SQL> select* from test3;
A B C
--------------
11 5
11 10
2 rows selected
SQL> select* from test2
ORA-00942:表或视图不存在
--彻底删除表
SQL> drop table test3 purge;
Table dropped
二、清除表中的数据
truncate*作同没有where条件的delete*作十分相似,只是把表里的信息全部删除,但是表依然存在。
例如:truncate table XX
Truncate不支持回滚,并且不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。
truncate table后,有可能表空间仍没有释放,可以使用如下语句:
alter table表名称 deallocate UNUSED KEEP 0;
注意如果不加KEEP 0的话,表空间是不会释放的。
例如:
alter table F_MINUTE_TD_NET_FHO_B7 deallocate UNUSED KEEP 0;
或者:
TRUNCATE TABLE(schema)table_name DROP(REUSE) STORAGE才能释放表空间。
例如: truncate table test1 DROP STORAGE;
三、查询分区表存在哪些分区:
查询分区表的情况,可以在USER_TAB_PARTITIONS中查询。例如:
select'alter table'||t.table_name||' truncate partition'|| t.partition_name from USER_TAB_PARTITIONS t where t.table_name like'F_%'
清除指定某个分区表的分区数据:
alter table表名称 truncate partition分区名称;
四、清除分区表占用的空间:
alter table表名称 DROP partition分区名称;
例如:
alter table F_HOUR_TD_NET_MPVOICE DROP partition P_09121913;
五、查询表空间信息
可以利用如下语句查询各表在存储空间的使用分情况:
SELECT TABLESPACE_NAME,TO_CHAR(SUM(BYTES)/(1024*1024),'999G999D999') CNT_MB FROM DBA_EXTENTS WHERE OWNER='&OWNER' AND SEGMENT_NAME='&TABLE_NAME' AND SEGMENT_TYPE LIKE'TABLE%' GROUP BY TABLESPACE_NAME;
可以使用如下语句,查询存储空间情况:
Select Tablespace_Name, Sum(bytes)/1024/1024 From Dba_Segments group By Tablespace_Name
六、查询用户下的表
如果你的用户权限不是DBA:
那你用
select* from user_tables;
可以查询到当前用户所拥有的表。
如果是DBA用户:
select* from dba_tables;
三、oracle中分区查询时,怎样一次查询多个分区
CREATETABLECUSTOMER
(
CUSTOMER_IDNUMBERNOTNULLPRIMARYKEY,
FIRST_NAMEVARCHAR2(30)NOTNULL,
LAST_NAMEVARCHAR2(30)NOTNULL,
PHONEVARCHAR2(15)NOTNULL,
EMAILVARCHAR2(80),
STATUSCHAR(1)
)
PARTITIONBYRANGE(CUSTOMER_ID)
(
PARTITIONCUS_PART1VALUESLESSTHAN(100000)TABLESPACECUS_TS01,
PARTITIONCUS_PART2VALUESLESSTHAN(200000)TABLESPACECUS_TS02
)
具体如下:
1、简介
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的适应高吞吐量的数据库解决方案。
2、介绍
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。比如SilverStream就是基于数据库的一种中间件。ORACLE数据库是目前世界上使用为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。但它的所有知识,只要在一种机型上学习了ORACLE知识,便能在各种类型的机器上使用它。
3、支持平台
在2001年发布的Oracle9i之前,甲骨文公司把他们的数据库产品广泛的移植到了不同的平台上。近期,甲骨文公司巩固了一小部分的*作系统平台。
四、oracle查询分区表的数据的时候默认查询哪个分区
oracle查询分区表的数据的时候默认查询B分区。oracle中是根据分区键决定的,分区键有可能是通过某一个函数算出来的。Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护*作的性能大大提高。