搜档网
当前位置:搜档网 › Oracle 删除表分区

Oracle 删除表分区

Oracle 删除表分区
Oracle 删除表分区

删除表分区

作者:来源:发布日期:2008-05-23 删除表分区(drop partition)

删除表分区包含两种操作,分别是:

? 删除分区:alter table [tbname] drop partition [ptname];

? 删除子分区:alter table [tbname] drop subpartition [ptname];

除hash分区和hash子分区外,其它的分区格式都可以支持这项操作。例如,删除分区:

JSSWEB> select table_name,partition_name

2 from user_tab_partitions where table_name='T_PARTITION_LIST';

TABLE_NAME PARTITION_NAME

------------------------------ ------------------------------

T_PARTITION_LIST T_LIST_P1

T_PARTITION_LIST T_LIST_P2

T_PARTITION_LIST T_LIST_P3

T_PARTITION_LIST T_LIST_PD

JSSWEB> alter table t_partition_list drop partition t_list_p2;

表已更改。

提示,drop partition时,该分区内存储的数据也将同时删除,例如:

JSSWEB> insert into t_partition_list values (1,'a'); ..........

--插入一批记录,分布于当前各个分区..........

JSSWEB> commit;

提交完成。

JSSWEB> select *from t_partition_list;

ID NAME

---------- --------------------------------------------------

1 a

2 b

21 a

22 b

--单独查询t_list_p3分区,当前有数据

JSSWEB> select *from t_partition_list partition(t_list_p3);

ID NAME

---------- --------------------------------------------------

21 a

22 b

--删除t_list_p3分区,数据会被同时删除

JSSWEB> alter table t_partition_list drop partition t_list_p3;

表已更改。

JSSWEB> select *from t_partition_list partition(t_list_p3);

select *from t_partition_list partition(t_list_p3)

*

第 1 行出现错误:

ORA-02149: 指定的分区不存在

JSSWEB> select *from t_partition_list;

ID NAME

---------- --------------------------------------------------

1 a

2 b

由于是ddl操作,这种删除也会是非常迅速的,因此如果你确认某个分区的数据都要被删除,使用drop partition会比delete更加高效。如果你的本意是希望删除掉指定的分区但保留数据,你应该使用merge partition,后面也会讲到。

同样,如果你在执行该语句时没有指定update indexes子句,也会导致glocal索引的失效,至于local索引嘛,删除分区时对应的索引分区会被同时删除,但其它分区的local 索引不会受到影响。

oracle 建立分区表

oracle 建立分区表 从上次在亚旭培训的时候,我和dba讨论一次我开发系统中为了一张表不是非常的大,采用了动态sql创建多个部门的表,然后存取相应的数据,从而解决了一张表过大的问题。当时dba和我说了分区表,我第一感觉,如果当时我知道数据库还有这种表,那我当时开发起来应该轻松的多,后来就一直有个想法,去了解分区表,因为最近自己一直都比较忙,被琐事所困,今天晚上终于抽出了点时间,了解了相关的知识,并做了400多w条数据的一个分区表的测试。 一.范围分区 范围分区将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。 1 2 3 4 5 6 7 8 9 10 11 12 --例一取值范围: 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) (

13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01, PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02, PARTITION CUS_PART3 VALUES LESS THEN(MAXVALUE) 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')) TABLESPACE ORD_TS01, PARTITION ORD_ACT_PART02 VALUES LESS THAN (TO_DATE('01-JUN-2003','DD-MON-YYYY')) TABLESPACE ORD_TS02, PARTITION ORD_ACT_PART03 VALUES LESS THAN (TO_DATE('01-JUL-2003','DD-MON-YYYY')) TABLESPACE ORD_TS03

oracle常用命令及格式

oracle常用命令及格式 一:关于日志管理的 1.切换日志:sql> alter system switch logfile; 2.切换checkpoints:sql> alter system checkpoint; 3.增加日志组:sql> alter database add logfile [group 4] sql> ('/disk3/log4a.rdo','/disk4/log4b.rdo') size1m; 4.增加日志成员 sql> alter database add logfile member sql> '/disk3/log1b.rdo' to group 1, sql> '/disk4/log2b.rdo' to group 2; 5.改变日志文件名字或路径 sql> alter database rename file 'c:/oracle/oradata/oradb/re do01.log' sql> to 'c:/oracle/oradata/redo01.log'; (此处注意,那个文件路径的输入格式) 6.删除日志文件组:sql> alter database drop logfile group 3;

7.删除日志文件成员 sql> alter database drop logfile member 'c:/oracle/oradata/ redo01.log'; 8.清除日志文件内容 sql> alter database clear [unarchived] logfile 'c:/oracle/l og2a.rdo'; 二、关于表空间管理的 1.创建表空间 sql> create tablespace tablespace_name datafile 'c:\oracle\ oradata\file1.dbf' size100m, sql> 'c:\oracle\oradata\file2.dbf' size100mminimum extent 5 50k [logging/nologging] sql> default storage (initial 500k next 500k maxextents 500 pctinccease 0) sql> [online/offline] [permanent/temporary] [extent_managem ent_clause]

详解ORACLE簇表、堆表、IOT表、分区表

详解ORACLE簇表、堆表、IOT表、分区表 簇和簇表 簇其实就是一组表,是一组共享相同数据块的多个表组成。将经常一起使用的表组合在一起成簇可以提高处理效率。 在一个簇中的表就叫做簇表。建立顺序是:簇→簇表→数据→簇索引 1、创建簇的格式 CREATE CLUSTER cluster_name (column date_type [,column datatype]...) [PCTUSED 40 | integer] [PCTFREE 10 | integer] [SIZE integer] [INITRANS 1 | integer] [MAXTRANS 255 | integer] [TABLESPACE tablespace] [STORAGE storage] SIZE:指定估计平均簇键,以及与其相关的行所需的字节数。 2、创建簇 create cluster my_clu (deptno number) pctused60 pctfree10 size1024 tablespace users storage( initial128k next128k minextents2 maxextents20

);

3、创建簇表 create table t1_dept( deptno number, dname varchar2(20) ) cluster my_clu(deptno); create table t1_emp( empno number, ename varchar2(20), birth_date date, deptno number ) cluster my_clu(deptno); 4、为簇创建索引 create index clu_index on cluster my_clu; 注:若不创建索引,则在插入数据时报错:ORA-02032: clustered tables cannot be used before the cluster index is built 管理簇 使用ALTER修改簇属性(必须拥有ALTER ANY CLUSTER的权限) 1、修改簇属性 可以修改的簇属性包括: * PCTFREE、PCTUSED、INITRANS、MAXTRANS、STORAGE * 为了存储簇键值所有行所需空间的平均值SIZE * 默认并行度

postgresql和oracle表分区对比

PostgreSQL和oracle表分区对比 PostgreSQL是开源数据库,完全免费,oracle是有强大厂商支持和维护的数据库,把这两个的表分区特性放在一起对比,似乎有些勉强。但对于我们多了解一些特性,在实际开发中可以更好地进行理性选择和快速入手。

总结,数据库的表分区特性优点很多,比如: 1、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。

2、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用; 3、维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可; 4、均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。 5、将很少用的数据可以移动到便宜的、慢一些地存储介质上。 这两种数据库的分区表都具有这些优点。 对比来说,Oracle的分区创建和管理更加方便,很多工作是由oracle的内部机制来实现的。postgreSQL的分区表其实是一个个实际存在的数据表,分区的创建和管理都需要我们用语言来控制,增加了应用人员的工作量。 但,由于oracle自身的“侵占式”硬盘存储,对过期数据进行清除时,即便是drop分区表,也不能直接释放硬盘空间,属于“占了就占了”,这个管理起来就比较麻烦,除非对每个分区表都建立各个独立的tablespace,放在独立的物理文件上,删除过期分区表时,可以同时drop tablespace including contents。而postgreSQL在truncate 分区表时,可以直接释放硬盘,会看到硬盘使用率下降了,这一点对硬盘资源紧张时,就非常好了。 两种数据库的分区表使用,各有利弊,但总的来说,比较偏向postgreSQL,毕竟硬盘有限。而且,oracle收费。 Ps,在数据量很大时,任何关系型数据库都有性能上的瓶颈,不属于我们这两种数据库分区表对比的范围了。 以上,是一些使用中的总结,还请达人们指教:)。

ORACLE SQLPLUS 常用命令及解释

Oracle SQLPlus常用命令及解释 1.@ 执行位于指定脚本中的SQLPlus语句。可以从本地文件系统或Web服务器中调用脚本。可以为脚本中的变量传递值。在iSQL*Plus中只能从Web服务器中调用脚本。 2.@@ 执行位于指定脚本中的SQL*Plus语句。这个命令和@(“at”符号)命令功能差不多。在执行嵌套的命令文件时它很有用,因为它会在与调用它的命令文件相同的路径或url中查找指定的命令文件。在iSQL*Plus中只支持url形式。 3./ 执行保存在SQL缓冲区中的最近执行的SQL命令或PL/SQL块。在SQL*Plus命令行中,可在命令提示符或行号提示符使用斜线(/)。也可在iSQL*Plus的输入区中使用斜线(/)。斜线不会列出要执行的命令。 4.ACCEPT 可以修改既有变量,也可定义一个新变量并等待用户输入初始值,读取一行输入并保存到给出的用户变量中。ACCEPT在iSQL*Plus中不可用。 5.APPEND 把指定文本添加到SQL缓冲区中当前行的后面。如果text的最前面包含一个空格可在APPEND和text间输入两个空格。如果text的最后是一个分号,可在命令结尾输入两个分号(SQL*Plus会把单个的分号解释为一个命令结束符)。APPEND 在iSQL*Plus中不可用。 6.ARCHIVE LOG 查看和管理归档信息。启动或停止自动归档联机重做日志,手工(显示地)归档指定的重做日志,或者显示重做日志文件的信息。 7.ATTRIBUTE 为对象类型列的给定属性指定其显示特性,或者列出单个属性或所有属性的当前显示特性。 8.BREAK 分开重复列。指定报表中格式发生更改的位置和要执行的格式化动作(例如,在列值每次发生变化时跳过一行)。只输入BREAK而不包含任何子句可列出当前的BREAK定义。 9.BTITLE 在每个报表页的底部放置一个标题并对其格式化,或者列出当前BTITLE定义。

Oracle 分区表的优点

ORACLE 表分区 表分区的好处和事处理 表分区描述 表分区(partition):表分区技术是在超大型数据库(VLDB)中将大表及其索引通过分区(patition)的形式分割为若干较小、可管理的小块,并且每一分区可进一步划分为更小的子分区(sub partition)。而这种分区对于应用来说是透明的。Oracle的表分区功能通过改善可管理性、性能和可用性,从而为各式应用程序带来了极大的好处。通常,分区可以使某些查询以及维护操作的性能大大提高。此外,分区还可以极大简化常见的管理任务,分区是构建千兆字节数据系统或超高可用性系统的关键工具。 分区功能能够将表、索引或索引组织表进一步细分为段,这些数据库对象的段叫做分区。每个分区有自己的名称,还可以选择自己的存储特性。每个分区都是一个独立的段(SEGMENT),可以存放到相同(不同)的表空间中。从数据库管理员的角度来看,一个分区后的对象具有多个段,这些段既可进行集体管理,也可单独管理,这就使数据库管理员在管理分区后的对象时有相当大的灵活性。但是,从应用程序的角度来看,分区后的表与非分区表完全相同,使用SQL DML 命令访问分区后的表时,无需任何修改。(对于高效率查询是有影响,主要差别是对某一分区数据时行查询时和对整体数据进行查询) 表分区的好处 通过对表进行分区,可以获得以下的好处: 1)增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用; 2)维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可; 3)均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能; 4)改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速

深入学习分区表及分区索引(详解oracle分区)

下载的,写的非常好,给大家分享下。 什么时候使用分区: 1、大数据量的表,比如大于2GB。一方面2GB文件对于32位os是一个上限,另外备份时间长。 2、包括历史数据的表,比如最新的数据放入到最新的分区中。典型的例子:历史表,只有当前月份的数据可以被修改,而其他月份只能read-only ORACLE只支持以下分区:tables, indexes on tables, materialized views, and indexes on materialized views 分区对SQL和DML是透明的(应用程序不必知道已经作了分区),但是DDL 可以对不同的分区进行管理。 不同的分区之间必须有相同的逻辑属性,比如共同的表名,列名,数据类型,约束; 但是可以有不同的物理属性,比如pctfree, pctused, and tablespaces. 分区独立性:即使某些分区不可用,其他分区仍然可用。 最多可以分成64000个分区,但是具有LONG or LONG RAW列的表不可以,但是有CLOB or BLOB列的表可以。 可以不用to_date函数,比如: alter session set nls_date_format='mm/dd/yyyy'; CREATE TABLE sales_range (salesman_id NUMBER(5), salesman_name VARCHAR2(30), sales_amount NUMBER(10), sales_date DATE) PARTITION BY RANGE(sales_date) ( PARTITION sales_jan2000 VALUES LESS THAN('02/01/2000'),

oracle数据库基本命令

oracle数据库基本命令 oracle安装后 sys:超级管理员(dba),默认密码为:change_on_install system:系统管理员(dbaoper),默认密码为:manager; sys与system的不同在于sys能够create datebase而system则不能。scott:普通用户,默认密码:tiger 1.切换用户:conn 用户名/密码; SQL> conn system/manager; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as system SQL> conn sys/change_on_install as sysdba; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as SYS 注意:sys与其他用户在命令窗口切换时的不同。 2.修改密码:passw username;(普通用户可以修改自己密码,管理员可以修改其他人的密码) 3.显示当前用户。show user; 4.断开数据库同时推出:exit; 文件操作 5.运行sql脚本,start d:\a.sql; 6.编辑指定的sql脚本。Edit d:\a.sql; 7.将屏幕上指定的内容输出到指定文本中去。spool e:\b.sql;执行语句;spool off;

8.显示设置环境变量; 可以用来控制输出的各种格式,如果希望永久保存可以修改glogin.sql脚本。 Linesize(行宽): show linesize;显示行宽 set linesize 90;设置行宽为90个字符。 Pagesize(页面大小): Show pagesize;显示页面大小 Set pagesize 180;设置页面的小。 (做报表时可以用。一页设定几行。)

oracle大表分区

摘要:本篇文章介绍了ORACLE数据库的新特性—分区管理,并用例子说明使用方法。 关键词:ORACLE,分区 一、分区概述: 为了简化数据库大表的管理,ORACLE8推出了分区选项。分区将表分离在若干不同的表空间上,用分而治之的方法来支撑无限膨胀的大表,给大表在物理一级的可管理性。将大表分割成较小的分区可以改善表的维护、备份、恢复、事务及查询性能。针对当前社保及电信行业的大量日常业务数据,可以推荐使用ORACLE8的该选项。 二、分区的优点: 1 、增强可用性:如果表的一个分区由于系统故障而不能使用,表的其余好的分区仍然可以使用; 2 、减少关闭时间:如果系统故障只影响表的一部分分区,那么只有这部分分区需要修复,故能比整个大表修复花的时间更少; 3 、维护轻松:如果需要重建表,独立管理每个分区比管理单个大表要轻松得多; 4 、均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O改善性能;

5 、改善性能:对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快; 6 、分区对用户透明,最终用户感觉不到分区的存在。 三、分区的管理: 1 、分区表的建立: 某公司的每年产生巨大的销售记录,DBA向公司建议每季度的数据放在一个分区内,以下示范的是该公司1999年的数据(假设每月产生30M的数据),操作如下: STEP1、建立表的各个分区的表空间: CREATE TABLESPACE ts_sale1999q1 DATAFILE ‘/u1/oradata/sales/sales1999_q1.dat’ SIZE 100M DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0) CREATE TABLESPACE ts_sale1999q2 DATAFILE ‘/u1/oradata/sales/sales1999_q2.dat’ SIZE 100M DEFAULT STORAGE (INITIAL 30m NEXT 30m MINEXTENTS 3 PCTINCREASE 0)

oracle大表分区

oracle大表分区 回答人:软界网友我来回答回答(3) STEP2、利用操作系统的工具删除以上表空间占用的文件(表空间基于裸设备无须次步),UNIX系统为例: oracle$ rm /u1/oradata/sales/sales1999_q1.dat oracle$ rm /u1/oradata/sales/sales1999_q2.dat oracle$ rm /u1/oradata/sales/sales1999_q3.dat oracle$ rm /u1/oradata/sales/sales1999_q4.dat 4 、分区的其他操作: 分区的其他操作包括截短分区(truncate),将存在的分区划分为多个分区(split),交换分区(exchange),重命名(rename),为分区建立索引等。DBA能够依照适当的情形使用。 以下仅说明分裂分区(split),例如该公司1999年第四季度销售明细数据急剧增加(因为庆国庆、迎千禧、贺回来),DBA向公司建议将第四季度的分区划分为两个分区,每个分区放两个月份的数据,操作如下: STEP1、按(1)的方法建立两个分区的表空间ts_sales1999q4p1, ts_sales1999q4p2;

STEP2、给表添加两个分区sales1999_q4_p1,sales1999_q4_p2; STEP3、分裂分区: ALTER TABLE sales SPLIT PARTITON sales1999_q4 AT TO_DATE (‘1999-11-01’,’YYYY-MM-DD’) INTO (partition sales1999_q4_p1, partition sales1999_q4_p2) 5 、查看分区信息: DBA要查看表的分区信息,可查看数据字典USER_EXTENTS,操作如下:SVRMGRL>SELECT * FROM user_extents WHERE SEGMENT_NAME=’SALES’; SEGMENT_NA PARTITION_ SEGMENT_TYPE TABLESPACE ---------- ------------ --------------- -------------- SALES SALES1999_Q1 TABLE PARTITION TS_SALES1999Q1 SALES SALES1999_Q2 TABLE PARTITION TS_SALES1999Q2 SALES SALES1999_Q3 TABLE PARTITION TS_SALES1999Q3 SALES SALES1999_Q4 TABLE PARTITION TS_SALES1999Q4 SALES SALES2000_Q1 TABLE PARTITION TS_SALES1999Q1 SALES SALES2000_Q2 TABLE PARTITION TS_SALES1999Q2 SALES SALES2000_Q3 TABLE PARTITION TS_SALES1999Q3 SALES SALES2000_Q4 TABLE PARTITION TS_SALES1999Q4

oracle常用命令大全和环境变量路径

Oracle 命令大全 底部为环境变量配置路径。 1 运行SQLPLUS工具 sqlplus 2 以OS的默认身份连接 / as sysdba 3 显示当前用户名 show user 4 直接进入SQLPLUS命令提示符 sqlplus /nolog 5 在命令提示符以OS身份连接 connect / as sysdba 6 以SYSTEM的身份连接 connect system/xxxxxxx@服务名 7 显示当然用户有哪些表 select * from tab; 8 显示有用户名和帐户的状态 select username,account_status from dba_users; 9 将SCOTT帐号解锁(加锁) alter user scott account unlock(lock); 10 以SCOTT的身份连接并且查看所属表 connect scott/tiger select * from tab; 11 查看EMP的表结构及记录内容 desc emp select empno,ename from emp; 12 以OS的身份登看SGA,共享池,CACHE的信息 connect / as sysdba show sga select name,value/1024/1024 from v$sga; show parameter shared_pool_size select value/1024/1024 from v$parameter where name ='shared_pool_size';

show parameter db_cache_size select value/1024/1024 from v$parameter where name ='db_cache_size'; 13 查看所有含有SIZE的信息 show parameter size bitmap_merge_area_size integer 1048576 create_bitmap_area_size integer 8388608 db_16k_cache_size big integer 0 db_2k_cache_size big integer 0 db_32k_cache_size big integer 0 db_4k_cache_size big integer 0 db_8k_cache_size big integer 0 db_block_size integer 4096 db_cache_size big integer 33554432 db_keep_cache_size big integer 0 db_recycle_cache_size big integer 0 NAME TYPE V ALUE ------------------------------------ ----------- ------------- global_context_pool_size string hash_area_size integer 1048576 java_max_sessionspace_size integer 0 java_pool_size big integer 33554432 large_pool_size big integer 8388608 max_dump_file_size string UNLIMITED object_cache_max_size_percent integer 10 object_cache_optimal_size integer 102400 olap_page_pool_size integer 33554432 oracle_trace_collection_size integer 5242880 parallel_execution_message_size integer 2148 NAME TYPE V ALUE ------------------------------------ ----------- ------------- sga_max_size big integer 143727516 shared_pool_reserved_size big integer 2516582 shared_pool_size big integer 50331648 sort_area_retained_size integer 0 sort_area_size integer 524288 workarea_size_policy string AUTO 14 显示SGA的信息 select * from v$sgastat; POOL NAME BYTES

ORACLE分区表、分区索引

深入学习Oracle分区表及分区索引 关于分区表和分区索引(About Partitioned Tables and Indexes)对于10gR2而言,基本上可以分成几类: ?Range(范围)分区 ?Hash(哈希)分区 ?List(列表)分区 ?以及组合分区:Range-Hash,Range-List。 对于表而言(常规意义上的堆组织表),上述分区形式都可以应用(甚至可以对某个分区指定compress属性),只不过分区依赖列不能是lob,long之类数据类型,每个表的分区或子分区数的总数不能超过1023个。 对于索引组织表,只能够支持普通分区方式,不支持组合分区,常规表的限制对于索引组织表同样有效,除此之外呢,还有一些其实的限制,比如要求索引组织表的分区依赖列必须是主键才可以等。 注:本篇所有示例仅针对常规表,即堆组织表! 对于索引,需要区分创建的是全局索引,或本地索引: l 全局索引(global index):即可以分区,也可以不分区。即可以建range分区,也可以建hash分区,即可建于分区表,又可创建于非分区表上,就是说,全局索引是完全独立的,因此它也需要我们更多的维护操作。 l 本地索引(local index):其分区形式与表的分区完全相同,依赖列相同,存储属性也相同。对于本地索引,其索引分区的维护自动进行,就是说你add/drop/split/truncate表的分区时,本地索引会自动维护其索引分区。 Oracle建议如果单个表超过2G就最好对其进行分区,对于大表创建分区的好处是显而易见的,这里不多论述why,而将重点放在when以及how。 ORACLE对于分区表方式其实就是将表分段存储,一般普通表格是一个段存储,而分区表会分成多个段,所以查找数据过程都是先定位根据查询条件定位分区范围,即数据在那个分区或那几个内部,然后在分区内部去查找数据,一个分区一般保证四十多万条数据就比较正常了,但是分区表并非乱建立,而其维护性也相对较为复杂一点,而索引的创建也是有点讲究的,这些以下尽量阐述详细即可。 range分区方式,也算是最常用的分区方式,其通过某字段或几个字段的组合的值,从小到大,按照指定的范围说明进行分区,我们在INSERT数据的时候就会存储到指定的分区中。 List分区方式,一般是在range基础上做的二级分区较多,是一种列举方式进行分区,一般讲某些地区、状态或指定规则的编码等进行划分。 Hash分区方式,它没有固定的规则,由ORACLE管理,只需要将值INSERT进去,ORACLE 会自动去根据一套HASH算法去划分分区,只需要告诉ORACLE要分几个区即可。 WHEN 一、When使用Range分区 Range分区呢是应用范围比较广的表分区方式,它是以列的值的范围来做为分区的划分条件,将记录存放到列值所在的range分区中,比如按照时间划分,2008年1季度的数据

Oracle查询语句基本命令一

oracle查询语句大全--基本命令大全一 1.create user username identified by password;//建用户名和密码oracle ,oracle 2.grant connect,resource,dba to username;//授权grant connect,resource,dba,sysdba to username; 3.connect username/password//进入。 4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。 5. 如何执行脚本SQL文件? SQL>@PATH/filename.sql; 6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体. 使用C#描述应如下所示: https://www.sodocs.net/doc/aa4144642.html,mandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) V ALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) V ALUES (2, \'2\'); end;"; 7.查询用户下的表的信息select distinct table_name from user_tab_columns; 8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum show user 3、查看系统拥有哪些用户SQL> select * from all_users; 4、新建用户并授权 SQL> create user a identified by a;(默认建在SYSTEM表空间下) SQL> grant connect,resource to a; 5、连接到新用户SQL> conn a/a

ORACLE_分区表_分区索引_索引分区

分区表_分区索引_索引分区 在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能并方便数据管理,本文详细介绍了分区表的使用。 在大型的企业应用或企业级的数据库应用中,要处理的数据量通常可以达到几十到几百GB,有的甚至可以到TB级。虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。 使用分区的优点: ·增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用; ·维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可; ·均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能; ·改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。 Oracle数据库提供对表或索引的分区方法有三种: ·范围分区 ·Hash分区(散列分区) ·复合分区 下面将以实例的方式分别对这三种分区方法来说明分区表的使用。为了测试方便,我们先建三个表空间。 create tablespace dinya_space01 datafile ’/test/demo/oracle/demodata/dinya01.dnf’ size 50M create tablespace dinya_space01 datafile ’/test/demo/oracle/demodata/dinya02.dnf’ size 50M create tablespace dinya_space01 datafile ’/test/demo/oracle/demodata/dinya03.dnf’ size 50M 1.1. 分区表的创建 1.1.1. 范围分区

多做知识的积累 详解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分区表彻底删除的办法

oracle分区表彻底删除的办法 当对一个不再使用的分区表进行drop后,查询user_tab_partitions视图发现出现如下不规则的分区表表名: SQL> select distinct table_name from user_tab_partitions; BIN$l+Pv5l1jCMXgQKjAyQFA0A==$0 这样很容易导致自己写的"自动增加表的分区"的存过发生错误,因此为了避免再修改存过,只能把这些不规则的表名删除才行.现提供如下方法彻底删除这些不规则的表名. 其实当我们执行drop table tablename的时候,不是直接把表删除掉,而是放在了回收站里,可以通过查询user_recyclebin查看被删除的表信息.这样,回收站里的表信息就可以被恢复或彻底清除。 通过查询回收站user_recyclebin获取被删除的表信息,如果想恢复被drop掉的表,可以使用如下语句进行恢复 flashback table to before drop; 上面的语句是将回收站里的表恢复为原表名称 flashback table to before drop rename to ; 将回收站里的表恢复为指定的新表名称,表中数据不会丢失。 若要彻底删除表,则使用语句:drop table purge;这样drop后的表就不被放入回收站 如果是清除回收站中指定的表,可以使用语句purge table ; 如果是清除当前用户回收站所有的表,可以使用语句purge recyclebin; 如果是清除所有用户的回收站:purge dba_recyclebin; 到此,按上面的方法清除回收站的数据后,再查询user_tab_partitions视图,发现不规则表名已经没有了 SQL> select distinct table_name from user_tab_partitions; no rows selected 在此顺便再提一下truncate操作后不释放空间的解决办法 Truncate不支持回滚,并且不能truncate一个带有外键的表,如果要删除首先要取消外键,然后再删除。 truncate table 后,有可能表空间仍没有释放,可以使用如下语句: alter table 表名称deallocate UNUSED KEEP 0; 注意如果不加KEEP 0的话,表空间是不会释放的。 例如: alter table tablenamedeallocate UNUSED KEEP 0; 或者: TRUNCATE TABLE tablename DROP STORAGE才能释放表空间。 例如:truncate table tablename DROP STORAGE; 查看各表空间空置率: select a.tablespace_name,a.free_space,b.total_space, a.free_space/ b.total_spacefree_ratio from (select tablespace_name,sum(bytes)/1024/1024free_space from dba_free_spa

Oracle 数据库 常用命令

SPOOL将屏幕所有的输出输出到指定文件 -- spool 文件路径名; spool g:\mysql.sql; --业务操作 --结束输出 spool off; 执行一个SQL脚本文件 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 --start file_name -- @ file_name start g:\mysql.sql; @ g:\mysql.sql; 对当前的输入进行编辑 edit ed 重新运行上一次运行的sql语句 / 显示一个表的结构 desc table_name ; 清屏 clear screen; 退出 exit; 置当前session是否对修改的数据进行自动提交 --SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} set autocommit on; 在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句 -- SET ECHO {ON|OFF}; set echo on; 是否显示当前sql语句查询或修改的行数 --SET FEED[BACK] {6|n|ON|OFF}

-- 默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数 set feedback 1; 是否显示列标题 --当set heading off 时,在每页的上面不显示列标题,而是以空白行代替 --SET HEA[DING] {ON|OFF} set heading on; 设置一行可以容纳的字符数 -- 如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示 --SET LIN[ESIZE] {80|n} set linesize 100; 设置页与页之间的分隔 -- SET NEWP[AGE] {1|n|NONE} --当set newpage 0 时,会在每页的开头有一个小的黑方框。 --当set newpage n 时,会在页和页之间隔着n个空行。 --当set newpage none 时,会在页和页之间没有任何间隔 set newpage 1; 设置一页有多少行数 --如果设为0,则所有的输出内容为一页并且不显示列标题 --SET PAGES[IZE] {24|n} set pagesize 20; 是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 --SET SERVEROUT[PUT] {ON|OFF} set serveroutput on; 是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。 --在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,--设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度 --SET TERM[OUT] {ON|OFF} set termout off; 在dos里连接oracle数据库 CONNECT user_name/passwd@l_jiayou

相关主题