Oracle 删除数据的几种方法

合集下载

oracle数据库删除数据Delete语句和Truncate语句的使用比较

oracle数据库删除数据Delete语句和Truncate语句的使用比较

oracle数据库删除数据Delete语句和Truncate语句的使⽤⽐较当表中的数据不需要时,则应该删除该数据并释放所占⽤的空间,删除表中的数据可以使⽤Delete语句或者Truncate语句,下⾯分别介绍。

(1)有条件删除语法格式:delete [from] table_name [where condition];如:删除users表中的userid为‘001'的数据:delete from users where userid='001';(2)⽆条件删除整个表数据语法格式:delete table_name;如:删除user表中的所有数据:delete users ;使⽤Truncate语句是删除表中的所有记录。

语法格式: Truncate [table] table_name;(1)删除所有记录不保留记录占⽤空间Truncate [table] table_name [drop storage];如:删除users表中的所有数据并不保存占⽤空间: Truncate table users drop storage; 由于默认使⽤drop storage关键字,所以可以省略 drop storage;(2)删除所有记录保留记录占⽤空间Truncate [table] table_name [reuse storage];如:删除users表中的所有数据并保存占⽤空间: Truncate table users reuse storage;由于delete语句删除记录时候,记录是逐条删除的,⽽Truncate 语句删除数据时不产⽣回退信息;所以如果需要删除⼤量数据的时候使⽤delete则占⽤较多的系统资源,⽽如果使⽤Truncate 则会快的多。

下⾯通过实例说明⼀下:1、⾸先建⽴user表:create table users(userid varchar2(20) ,username varchar2(30),userpass varchar2(30));复制代码2、接着插⼊⼀条数据insert into users values('001','GavinDream','123456'); 3、使⽤复制插⼊⽅法插⼊⼏万条数据insert into users(userid,username,userpass) select * from users;我插⼊了 4194304条数据,使⽤delete删除花费时间为:90.964 seconds,然后⼜插⼊了⼆倍的数据,但使⽤truncate花费时间仅仅为2.215 seconds,如下图所⽰:。

Oracle数据库默认永久表空间的查询及删除方法

Oracle数据库默认永久表空间的查询及删除方法
BTW,通过database_properties视图我们可以获取数据库很多其他默认信息。如下所示。
sys@ora10g> select * from database_properties;
PROPERTY_NAME PROPERTY_VALUE DESCRIPTION
NLS_CHARACTERSET WE8ISO8859P1 Character set
NLS_CALENDAR GREGORIAN Calendar system
DEFAULT_TEMP_TABLESPACE TEMP Name of default temporary tablespace
DEFAULT_PERMANENT_TABLESPACE TBS_SEC_D Name of default permanent tablespace
---------------------------- -------------- ------------------------------------
DEFAULT_PERMANENT_TABLESPACE USERS Name of default permanent tablespace
NLS_NCHAR_CONV_EXCP FALSE NLS conversion exception
NLS_NCHAR_CHARACTERSET AL16UTF16 NCHAR Character set
NLS_RDBMS_VERSION 10.2.0.1.0 RDBMS version for NLS parameters
GLOBAL_DB_NAME ORA10G Global database name
EXPORT_VIEWS_VERSION 8 Export views revision #

oracle中删除多表数据的方法

oracle中删除多表数据的方法

oracle中删除多表数据的方法### Oracle中删除多表数据的方法在Oracle数据库管理中,删除多表数据是一项常见的操作。

它涉及到单个或多个表的数据删除,可能基于特定条件或关联关系。

以下将详细介绍几种在Oracle中删除多表数据的方法。

#### 方法一:使用`DELETE`语句删除单个表中的数据若只需从一个表中删除数据,但基于与其他表的关联条件,可使用以下方法:```sqlDELETE FROM table1WHERE column1 IN (SELECT column1 FROM table2 WHERE condition);```在此示例中,从`table1`中删除所有与`table2`中满足特定条件(`condition`)的记录。

#### 方法二:使用`DELETE JOIN`语句删除多个表中的数据如果需要同时删除多个表中的相关数据,可以使用`JOIN`子句:```sqlDELETE FROM table1USING table2, table3WHERE table1.column1 = table2.column1AND table1.column2 = table3.column2AND table2.condition = "value";```此语句将删除`table1`中与`table2`和`table3`中匹配的行。

#### 方法三:级联删除在设置了级联约束的情况下,当删除父表中的记录时,子表中的相关记录也会自动被删除。

```sqlALTER TABLE table2ADD CONSTRAINT fk_table1FOREIGN KEY (column1)REFERENCES table1(column1)ON DELETE CASCADE;```之后,删除`table1`中的记录将会自动删除`table2`中依赖的记录。

#### 方法四:使用`DELETE`和子查询当你需要删除基于复杂查询条件的数据时,可以使用子查询:```sqlDELETE FROM table1WHERE column1 NOT IN (SELECT column1 FROM table2 WHERE column2 > value);```此操作将删除`table1`中那些在`table2`中没有对应记录或不符合给定条件的行。

删除大量Oracle数据方法总结

删除大量Oracle数据方法总结

删除大量Oracle数据方法总结Oracle中删除超过50w条记录的数据,如果直接使用delete,效率就严重受到了影响。

那么首先我们需要了解对于这个表的数据,我们到底是全部删除,还是部分删除。

这里有三个关键字我们需要注意:truncate,delete,drop。

全部删除,不保留数据结构就直接drop最好。

如果是部分删除,一般就这样一些办法:1. 如果删除的数据是大部分,分段提交删除的数据。

create or replace proceduredelete_table is i number(10);beginfor x in (select * from emp where DEPTNO like‘a%’)loopdelete emp where emp.id = x.id i:=i+1;if i>1000thencommit;i:=0;end if;end loop;exception when others then dbms_out.put_line(sqlcode);rollback;end delete_table;或者–每500条数据提交一次DECLARE CNT NUMBER(10):=0;I NUMBER(10);BEGINSELECT COUNT(*) INTO CNT FROM ep_arrearage_bakWHERE TO_CHAR(DF_DATE,‘MM’)=’01′;FOR I IN1..TRUNC(CNT/500)+1LOOPDELETE FROM ep_arrearage_bak WHERE TO_CHAR(DF_DATE,‘MM’)=’01′AND ROWNUM<=500;COMMIT;END LOOP;END;2、把要保留的数据放在一个临时表里,truncate table原表后再放回来;create table t_back as select * from t where….drop table t;rename t_back to t;3. 专门使用一个大回滚段,比如定义:undo tablespace 2G4、如果将方法1做一点修改,可以这么做:有条件的分步删除数据表中的记录–创建测试表create table test as select * from dba_objects;–创建删除表的存储过程create or replace procedure deleteTab–插入语句SQL> insert into test select * from dba_objects;6374rows created.SQL> / 6374rows created.SQL> / 6374rows created.SQL> commit;–创建删除的存储过程create or replace procedure deleteTab/**** Usage: run the script to create the proc deleteTab** in SQL*PLUS, type "execdeleteTab(‘Foo’,'ID>=1000000′,’3000′);"** to delete the records in the table "Foo", commit per 3000 records.** Condition with default value ’1=1′ and default Commit batch is 10000.**/(p_TableName in varchar2, –The TableName which you want to delete fromp_Condition in varchar2 default’1=1′, –Delete condition, such as "id>=100000"p_Count in varchar2 default’10000′– Commit after delete How many records)as pragma autonomous_transaction;n_delete number:=0;beginwhile 1=1 loopEXECUTE IMMEDIATE‘delete from ‘||p_TableName||‘ where ‘||p_Condition||‘ and rownum <= :rn’USING p_Count;if SQL%NOTFOUND thenexit;elsen_delete:=n_delete + SQL%ROWCOUNT;end if;commit;end loop;commit;DBMS_OUTPUT.PUT_LINE(‘Finished!’);DBMS_OUTPUT.PUT_LINE(‘Totally ‘||to_char(n_delete)||‘ records deleted!’);end; /–执行语句SQL> exec deleteTab(‘TEST’,‘object_id >0′,’10000′)5、如果确认将来不需要做恢复,改为非归档模式,删除完改回来再做个备份。

oracle批量删除表数据的4种方式

oracle批量删除表数据的4种方式

oracle批量删除表数据的4种⽅式1.情景展⽰ 情景⼀: 删除PRIMARY_INDEX_TEST表中,MINDEX_ID字段为空的数据 情景⼆: 删除VIRTUAL_CARD_TEST表中的脏数据2.解决⽅案 情景⼀的解决⽅案:DELETE FROM PRIMARY_INDEX_TEST WHERE MINDEX_ID IS NULL 情景⼆的解决⽅案: 最简单的⽅法,见⽂末 2019/10/17 2018/12/10 ⽅案1:使⽤快速游标法(删除⼀次提交⼀次);1--快速游标法2BEGIN3FOR TEMP_CURSOR IN (SELECT ID4FROM VIRTUAL_CARD35WHERE INSTR(NAME, '*') >06UNION7SELECT ID8FROM VIRTUAL_CARD39WHERE INSTR(NAME, '#') >010UNION11SELECT ID12FROM VIRTUAL_CARD313WHERE INSTR(NAME, '/') >014UNION15SELECT ID16FROM VIRTUAL_CARD317WHERE INSTR(NAME, '+') >018UNION19SELECT ID20FROM VIRTUAL_CARD321WHERE INSTR(NAME, '!') >022UNION23SELECT ID24FROM VIRTUAL_CARD325WHERE INSTR(NAME, '.') >0) LOOP26/* LOOP循环的是TEMP_CURSOR(逐条读取TEMP_CURSOR) */27DELETE FROM VIRTUAL_CARD3 WHERE VIRTUAL_CARD3.ID = TEMP_CURSOR.ID;28COMMIT; --提交29END LOOP;30END; 执⾏时间: ⽅案2:更多游标使⽤⽅法,见⽂末推荐; ⽅案3:使⽤存储过程按id进⾏逐条删除。

Oracle大批量删除数据方法

Oracle大批量删除数据方法

批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交。

下面是删除过程,数据表可以通过主键删除,测试过Delete和For all两种方法,for all在这里并没有带来性能提高,所以仍然选择了批量直接删除。

首先创建一下过程,使用自制事务进行处理:create or replace procedure delBigTab(p_TableName in varchar2,p_Condition in varchar2,p_Count in varchar2)aspragma autonomous_transaction;n_delete number:=0;beginwhile 1=1 loopEXECUTE IMMEDIATE'delete from '||p_TableName||' where '||p_Condition||' and rownum <= :rn'USING p_Count;if SQL%NOTFOUND thenexit;elsen_delete:=n_delete + SQL%ROWCOUNT;end if;commit;end loop;commit;DBMS_OUTPUT.PUT_LINE('Finished!');DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');end;以下是删除过程及时间:SQL> create or replace procedure delBigTab2 (3 p_TableName in varchar2,4 p_Condition in varchar2,5 p_Count in varchar26 )7 as8 pragma autonomous_transaction;9 n_delete number:=0;10 begin11 while 1=1 loop12 EXECUTE IMMEDIATE13 'delete from '||p_TableName||' where '||p_Condition||' and rownum <= :rn'14 USING p_Count;15 if SQL%NOTFOUND then16 exit;17 else18 n_delete:=n_delete + SQL%ROWCOUNT;19 end if;20 commit;21 end loop;22 commit;23 DBMS_OUTPUT.PUT_LINE('Finished!');24 DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');25 end;26 /Procedure created.SQL> set timing onSQL> select min(NUMDLFLOGGUID) from HS_DLF_DOWNLOG_HISTORY;MIN(NUMDLFLOGGUID)------------------11000000Elapsed: 00:00:00.23SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11100000','10000');PL/SQL procedure successfully completed.Elapsed: 00:00:18.54SQL> select min(NUMDLFLOGGUID) from HS_DLF_DOWNLOG_HISTORY;MIN(NUMDLFLOGGUID)------------------11100000Elapsed: 00:00:00.18SQL> set serveroutput onSQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11200000','10000'); Finished!Totally 96936 records deleted!PL/SQL procedure successfully completed.Elapsed: 00:00:18.6110万记录大约19sSQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11300000','10000'); Finished!Totally 100000 records deleted!PL/SQL procedure successfully completed.Elapsed: 00:00:18.62SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11400000','10000'); Finished!Totally 100000 records deleted!PL/SQL procedure successfully completed.Elapsed: 00:00:18.85SQL>SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 13000000','10000');Finished!Totally 1000000 records deleted!PL/SQL procedure successfully completed.Elapsed: 00:03:13.87100万记录大约3分钟SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 20000000','10000');Finished!Totally 6999977 records deleted!PL/SQL procedure successfully completed.Elapsed: 00:27:24.69700万大约27分钟以上过程仅供参考.来源:网络编辑:联动北方技术论坛。

Oracle中的Merge函数(批量更新删除)

Oracle中的Merge函数(批量更新删除)

Oracle中的Merge函数(批量更新删除)Oracle中的Merge函数(批量更新/删除)摘⾄⽹上的⼏个例⼦⼀、*****************************************************************Merger into是oracle从9i开始增加的⼀个语句,从merge的字⾯上的意思:合并,兼并不难理解merge在oracle中的含义,merge在oracle所起的作⽤是:如果你从以组值中有选择的更新和插⼊到到⼀张表,具体来说是:如果该表中已经匹配了这组值的某些条件,那么可以使⽤这组值的部分数据来更新这个表的,如果该表中⽆法匹配了这组值的某些条件,那么可以使⽤这组值的数据来为这个表新增⼀条数据。

⽆论你在使⽤任何DBMS,你总是难以避免的将会遇到上⾯提到的这种需求,如果你不使⽤merge语句,你将会不得不在程序中增加⼤段的代码,或者是在oracle⽤很长的代码来实现。

好在现在我们有了merge,可以帮我们省下很多时间。

好了废话少说:Merge 的基本语法是这样的Merge into table[alias]Using table or sql query [alias]On conditionWhen matched thenUpdate set ….When not matched thenInsert values…以上是merge的基本语法,其中alias是为表或者查询写的别名如果你看着空洞的语法觉得头很痛,看下⾯的例⼦吧⾸先我们创建两个表create table test1(id int,name varchar(20));create table test2(id int,name varchar(20))然后随意插⼊⼏⾏数据insert into test1 values(1,’hi’);insert into test1 values(2,’hello’);insert into test2 values(2,’你好’);insert into test2 values(3,’morning’);下⾯我们要使⽤了merge了,将test2中的数据有选择地转移或者更新到test1中如果你运⾏了下下⾯的merge语句,你将会的到⼀个错误,这是因为oracle规定在merge语句中不能更新作为连接的列,也就是on后⾯的那些列merge into test1 t1using test2 t2on (t1.id = t2.id)when matched thenupdate set t1.id = t2.idwhen not matched theninsert values(t2.id,);所以将会得到如下的错误,虽然这个错误翻译的并不怎么样,甚⾄带有明显的误导on (t1.id = t2.id)*ERROR 位于第 3 ⾏:ORA-00904: “T1″.”ID”: ⽆效的标识符好了,知错就改,我们再来运⾏下⾯的merge语句。

oracle delete语法

oracle delete语法

oracle delete语法Oracle Delete语法详解Oracle是一种常用的关系型数据库管理系统,它提供了强大的数据操作功能,其中Delete语句用于删除数据库中的记录。

本文将详细介绍Oracle Delete语法的使用方法和注意事项。

一、基本语法Delete语句的基本语法如下:```DELETE FROM 表名 WHERE 条件;```其中,DELETE FROM表示从指定的表中删除记录;表名是要删除记录的表的名称;WHERE子句用于指定删除记录的条件。

二、删除所有记录要删除表中的所有记录,可以省略WHERE子句。

示例:```DELETE FROM 表名;```这将删除表中的所有记录,但不会删除表本身。

三、删除满足条件的记录如果只想删除满足特定条件的记录,则需要在WHERE子句中指定条件。

条件可以使用比较运算符(如=、<>、<、>、<=、>=)和逻辑运算符(如AND、OR、NOT)组合而成。

示例:```DELETE FROM 表名 WHERE 列名 = 值;```这将删除表中指定列等于指定值的记录。

四、删除多个条件的记录如果要删除满足多个条件的记录,可以使用AND或OR运算符将多个条件组合起来。

示例:```DELETE FROM 表名 WHERE 条件1 AND 条件2;```这将删除表中满足条件1和条件2的记录。

五、删除部分记录如果只想删除表中的前几条记录,可以使用ROWNUM关键字。

示例:```DELETE FROM 表名 WHERE ROWNUM <= n;```这将删除表中的前n条记录。

六、删除相关表的记录在Oracle数据库中,表之间可能存在关联关系。

如果要删除一张表中的记录,同时删除与其相关的其他表中的记录,可以使用级联删除功能。

示例:```DELETE FROM 表名1 WHERE 条件;DELETE FROM 表名2 WHERE 条件;```这将先删除表1中满足条件的记录,然后再删除表2中满足条件的记录。

oracle去除重复数据的方法

oracle去除重复数据的方法

oracle去除重复数据的⽅法⽐如现在有⼀⼈员表(表名:peosons)若想将姓名、⾝份证号、住址这三个字段完全相同的记录查询出来代码如下:select p1.*from persons p1,persons p2where p1.id<>p2.idand p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address可以实现上述效果.⼏个删除重复记录的SQL语句1.⽤rowid⽅法2.⽤group by⽅法3.⽤distinct⽅法1。

⽤rowid⽅法据据oracle带的rowid属性,进⾏判断,是否存在重复,语句如下:查数据:代码如下:select * from table1 a where rowid !=(select max(rowid)from table1 b where 1=1 and 2=2......)删数据:代码如下:delete from table1 a where rowid !=(select max(rowid)from table1 b where 1=1 and 2=2......)2.group by⽅法查数据:代码如下:select count(num), max(name) from student --列出重复的记录数,并列出他的name属性group by numhaving count(num) >1 --按num分组后找出表中num列重复,即出现次数⼤于⼀次删数据:代码如下:delete from studentgroup by numhaving count(num) >1这样的话就把所有重复的都删除了。

3.⽤distinct⽅法 -对于⼩的表⽐较有⽤代码如下:create table table_new as select distinct * from table1 minuxtruncate table table1;insert into table1 select * from table_new;查询及删除重复记录的⽅法⼤全1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断代码如下:select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最⼩的记录代码如下:delete from peoplewhere peopleId in (select peopleId from people group by peopleIdhaving count(peopleId) > 1)and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)3、查找表中多余的重复记录(多个字段)代码如下select * from vitae awhere (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)4、删除表中多余的重复记录(多个字段),只留有rowid最⼩的记录代码如下:delete from vitae awhere (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)5、查找表中多余的重复记录(多个字段),不包含rowid最⼩的记录代码如下:select * from vitae awhere (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)(⼆)⽐⽅说在A表中存在⼀个字段“name”,⽽且不同记录之间的“name”值有可能会相同,现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;代码如下:Select Name,Count(*) From A Group By Name Having Count(*) > 1如果还查性别也相同⼤则如下:代码如下:Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1(三)⽅法⼀代码如下:declare @max integer,@id integerdeclare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1open cur_rowsfetch cur_rows into @id,@maxwhile @@fetch_status=0beginselect @max = @max -1set rowcount @maxdelete from 表名 where 主字段 = @idfetch cur_rows into @id,@maxendclose cur_rowsset rowcount 0⽅法⼆"重复记录"有两个意义上的重复记录,⼀是完全重复的记录,也即所有字段均重复的记录,⼆是部分关键字段重复的记录,⽐如Name字段重复,⽽其他字段不⼀定重复或都重复可以忽略。

Oracle中使用DBCA 创建和删除数据库

Oracle中使用DBCA 创建和删除数据库

Oracle数据库管理:使用DBCA 创建和删除数据库一、数据库管理概述在完成Oracle软件安装后,DBA就应该对组织和管理数据库负责任,其主要任务是:(1)启动和关闭数据库;(2)创建数据库;(3)删除数据库;(4)调整初始化参数;(5)管理网络。

对于数据库的管理,必须要具有SYSDBA和SYSOPER的角色,才有权启动、关闭、运行数据库。

SYSDBA角色拥有SYS数据表的所有权限,SYSOPER的角色拥有Public数据表的所有权限。

二、数据库的管理方法(1)DOS命令行方式命令行管理是DBA管理数据库服务器的传统方法。

在数据库服务器上,Oracle提供了一些在DOS方式下的可执行文件,存放在bin目录下。

这些可执行文件可以用于完成启动、关闭、逻辑备份和口令更改等基本功能。

但这种方法只能在数据库服务器上运行,无法进行远程分布式管理,且管理功能有限。

进入命令行管理方式的简单步骤:在命令行提示符后面输入dgmgrl后,按回车,运行dgmgrl.exe文件;输入help命令,将显示可以在命令行管理方式下使用的命令;输入help <command>,可以查看各个命令的语法,如help startup。

(2)SQL*Plus命令行方式SQL*Plus命令行方式主要依靠编写和使用脚本来简化工作。

其命令、脚本所提供的功能比命令行方式多,但命令、脚本的语法都需要记忆和掌握。

(3)数据库配置助手(DBCA,Database Configuration Assistant)图形化方式DBCA是一个操作简单、灵活而强大的GUI环境。

安装Oracle数据库软件后,可以使用DBCA来创建和配置数据库。

DBCA能够按步骤知道用户完成创建新数据库、更改现有数据库的配置或删除数据库。

通过DBCA选择数据库选项后,许多通常需要手动执行的数据库创建任务会自动执行。

使用DBCA可以从预定义的数据库模板列表中进行选择,也可以使用现有数据库作为创建模板的样本。

Oracle删除数据的三种方式

Oracle删除数据的三种方式

Oracle删除数据的三种⽅式Oracle 删除数据的三种⽅法删除表(记录和结构)的语名delete ———— truncate ————dropdrop 命令drop table 表名;例如:删除学⽣表(student)drop table student;注意:1. ⽤drop删除表数据,不但会删除表中的数据,连表结构也被删除了!truncate 命令truncate table 表名;例如:删除学⽣表(student)truncate table student;注意:1. ⽤truncate删除表数据,只是删除表中的数据,表结构不会被删除!2. 删除整个表的数据时,过程是系统⼀次性删除数据,效率⽐较⾼3. truncate删除释放空间delete 命令delete table 表名;例如:删除学⽣表(student)delete table student;注意:1. ⽤delete删除表数据,只是删除表中的数据,表结构不会被删除!2. 虽然也是删除整个表的数据,但是过程是系统⼀⾏⼀⾏地删,效率⽐truncate低3. delete删除是不释放空间的关于truncate的⼩⼩总结:truncate table 在功能上与不带 WHERE ⼦句的 delete语句相同:⼆者均删除表中的全部⾏。

但 truncate ⽐ delete速度快,且使⽤的系统和事务⽇志资源少。

delete 语句每次删除⼀⾏,并在事务⽇志中为所删除的每⾏记录⼀项。

所以可以对delete操作进⾏roll back。

1、truncate 在各种表上⽆论是⼤的还是⼩的都⾮常快。

如果有ROLLBACK命令Delete将被撤销,⽽ truncate 则不会被撤销。

2、truncate 是⼀个DDL语⾔,向其他所有的DDL语⾔⼀样,他将被隐式提交,不能对 truncate 使⽤ROLLBACK命令。

3、truncate 将重新设置⾼⽔平线和所有的索引。

oracle删除表数据的方法

oracle删除表数据的方法

oracle删除表数据的方法
在Oracle数据库中,删除表数据的方法有三种:DELETE、TRUNCATE和DROP。

1. DELETE语句:用于删除表中的数据,但表结构不会被删除。

这个操作会被放到rollback segment中,事务提交之后才生效。

如果有相应的trigger,执行的时候将被触发。

DELETE语句不会隐式提交,需要手动提交。

2. TRUNCATE语句:是DDL(数据定义语言)的一种,操作立即生效,原数据不放到rollback segment中,不能回滚,操作不触发trigger。

TRUNCATE和delete只删除数据不删除表的结构。

TRUNCATE语句缺省
情况下将空间释放到minextents个extent,除非使用reuse storage,TRUNCATE会将高水线复位(回到最开始)。

3. DROP语句:将删除表的结构以及被依赖的约束(constrain)、触发器(trigger)、索引;依赖于该表的存储过程/函数将保留,但是变为invalid (无效)状态。

DROP语句将表所占用的空间全部释放。

DROP命令的速度最快,因为它不会记录在日志中。

一旦执行没有退步的余地。

请注意,这些操作都应谨慎使用,特别是DROP和TRUNCATE,因为一旦执行没有退步的余地。

oracle数据库删除数据Delete语句和Truncate语句的对比

oracle数据库删除数据Delete语句和Truncate语句的对比

当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍。

一、delete语句(1)有条件删除语法格式:delete [from] table_name [where condition];如:删除users表中的userid为‘001’的数据:delete from users where userid='001';(2)无条件删除整个表数据语法格式:delete table_name;如:删除user表中的所有数据:delete users ;二、Truncate语句使用Truncate语句是删除表中的所有记录。

语法格式: Truncate [table] table_name;(1)删除所有记录不保留记录占用空间Truncate [table] table_name [drop storage];如:删除users表中的所有数据并不保存占用空间: Truncate table users drop storage; 由于默认使用drop storage关键字,所以可以省略 drop storage;(2)删除所有记录保留记录占用空间Truncate [table] table_name [reuse storage];如:删除users表中的所有数据并保存占用空间: Truncate table users reuse storage;三、两种删除语句的对比由于delete语句删除记录时候,记录是逐条删除的,而Truncate 语句删除数据时不产生回退信息;所以如果需要删除大量数据的时候使用delete则占用较多的系统资源,而如果使用Truncate 则会快的多。

下面通过实例说明一下:1、首先建立user表:create table users(userid varchar2(20) ,username varchar2(30),userpass varchar2(30));2、接着插入一条数据insert into users values('001','GavinDream','123456');3、使用复制插入方法插入几万条数据insert into users(userid,username,userpass) select * from users;我插入了 4194304条数据,使用delete删除花费时间为:90.964 seconds,然后又插入了二倍的数据,但使用truncate花费时间仅仅为2.215 seconds,。

oracle删除大数据方法

oracle删除大数据方法
第17到19行,检查删除数据的结果,如果已无数据,则退出,程序结束。
这个程序,通过利用dbms_output.sleep()过程,在删除过程中当需要归档的日志文件达到认定的限制时,使删除过程暂时停止,等待ARCH进程将日志文件归档后再继续进行,从而达到避免归档日志文件来不及归档,导致数据库挂起的问题。
此方法适用于oracle的各个版本。
4、使用NOLOGGING选项重新建表。
在ORACLE 8以后的版本中,CREATE TABLE命令提供了NOLOGGING的选项,在建表时不用写日志文件。
这样当我们在删除大量的数据时可以将要保留的数据通过CREATE TABLE ... NOLOGGING ... AS SELECT * FROM...的方法将要保留的数据备份到另一个表中,将原来的表删除,然后再 ALTER TABLE RENAME TO 命令将备份的表改为原来表的名字。
关于Oracle中大批量删除数据的方法,也可以参考Oracle专家eygle的文章:
档进程来不及归档日志文件而导致数据库挂起的可能性。下面的程序通过ORACLE所提供的dbms_lock包中的过程sleep,解决了这个问题,从而达到安全快速大量删除数据的目的。
1 DECLARE
9 IF V_NEEDARC &lt; V_LOGNUM - 1 THEN
10 EXIT;
11 ELSE
12 DBMS_LOCK.SLEEP(6P;
15
16 DELETE FROM t_table WHERE c_date &lt; to_date(2000/01/01,yyyy/mm/dd) AND rownum &lt; 100;

oracle 删除数据后释放数据文件大小的方法

oracle 删除数据后释放数据文件大小的方法

Oracle 删除数据后释放数据文件大小的方法在Oracle数据库中,删除数据后,数据文件的大小并不会立即减小,而是会维持不变,这是因为Oracle使用了一种称为“延迟块清理”的机制来处理已删除的数据。

延迟块清理机制的目的是为了提高性能,避免频繁的磁盘写入操作。

然而,如果数据库中存在大量已删除的数据,这些未释放的空间可能会导致数据文件变得非常庞大,浪费存储资源。

为了解决这个问题,我们需要采取一些措施来释放已删除数据所占用的空间。

本文将介绍一些有效的方法,可以帮助您在Oracle数据库中删除数据后释放数据文件大小。

方法一:使用ALTER TABLE语句进行数据重组ALTER TABLE语句可以用来重新组织表中的数据,将已删除的数据空间释放出来。

具体步骤如下:1.首先,使用以下语句查看表的碎片化情况:SELECT segment_name, sum(bytes)/1024/1024 AS "Size(MB)"FROM dba_extentsWHERE segment_type = 'TABLE'GROUP BY segment_name;2.找到需要重组的表,并使用以下语句执行数据重组:ALTER TABLE table_name MOVE;其中,table_name是需要重组的表名。

3.重复步骤1,确认表的碎片化情况是否得到改善。

方法二:使用TRUNCATE TABLE语句TRUNCATE TABLE语句可以删除表中的所有数据,并释放已删除数据所占用的空间。

具体步骤如下:1.使用以下语句删除表中的所有数据:TRUNCATE TABLE table_name;其中,table_name是需要清空的表名。

2.使用以下语句查看表的碎片化情况:SELECT segment_name, sum(bytes)/1024/1024 AS "Size(MB)"FROM dba_extentsWHERE segment_type = 'TABLE'GROUP BY segment_name;确认表的空间是否得到释放。

Oracle删除、查看表空间及数据文件方法

Oracle删除、查看表空间及数据文件方法

Oracle删除、查看表空间及数据⽂件⽅法1、查找⼯作空间的路径select * from dba_data_files;2、删除⽤户,及级联关系也删除掉drop user ⽤户名 cascade;3、删除表空间,及对应的表空间⽂件也删除掉drop tablespace 表空间名including contents and datafiles cascade constraint;4、删除表空间--删除空的表空间,但是不包含物理⽂件drop tablespace tablespace_name;--删除⾮空表空间,但是不包含物理⽂件drop tablespace tablespace_name including contents;--删除空表空间,包含物理⽂件drop tablespace tablespace_name including datafiles;--删除⾮空表空间,包含物理⽂件drop tablespace tablespace_name including contents and datafiles;--如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTSdrop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;5、删除⽆任何数据对象的表空间(1)、登录⽤户,确认当前⽤户是否有删除表空间的权限,如果没有使⽤更⾼级的⽤户登录drop tablespace xxx ,删除需要删除的表空间。

6、删除有任何数据对象的表空间drop tablespace xxx including contents and datafiles;注意事项:如果drop tablespace语句中含有datafiles,那datafiles之前必须有contents关键字,不然会提⽰ora-01911错误7、查看表空间容量SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_sizeFROM dba_tablespaces t, dba_data_files dWHERE t.tablespace_name = d.tablespace_nameGROUP BY t.tablespace_name;8、查看表空间物理⽂件的名称及⼤⼩SELECT tablespace_name,file_id,file_name,round(bytes / (1024 * 1024), 0) total_spaceFROM dba_data_filesORDER BY tablespace_name;9、查看回滚段名称及⼤⼩SELECT segment_name,tablespace_name,r.status,(initial_extent / 1024) initialextent,(next_extent / 1024) nextextent,max_extents,v.curext curextentFROM dba_rollback_segs r, v$rollstat vWHERE r.segment_id = n(+)ORDER BY segment_name;10、查看控制⽂件SELECT NAME FROM v$controlfile;11、查看⽇志⽂件SELECT MEMBER FROM v$logfile;12、查看表空间的使⽤情况SELECT SUM(bytes) / (1024 * 1024) AS free_space, tablespace_nameFROM dba_free_spaceGROUP BY tablespace_name;SELECT a.tablespace_name,a.bytes total,b.bytes used,c.bytes free,(b.bytes * 100) / a.bytes "% USED ",(c.bytes * 100) / a.bytes "% FREE "FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c WHERE a.tablespace_name = b.tablespace_nameAND a.tablespace_name = c.tablespace_name;13、查看数据库库对象SELECT owner, object_type, status, COUNT(*) count# FROM all_objectsGROUP BY owner, object_type, status;14、查看数据库的版本SELECT versionFROM product_component_versionWHERE substr(product, 1, 6) = 'Oracle';15、查看数据库的创建⽇期和归档⽅式SELECT created, log_mode, log_mode FROM v$database; --1G=1024MB--1M=1024KB--1K=1024Bytes--1M=11048576Bytes--1G=1024*11048576Bytes=11313741824BytesSELECT a.tablespace_name "表空间名",total "表空间⼤⼩",free "表空间剩余⼤⼩",(total - free) "表空间使⽤⼤⼩",total / (1024 * 1024 * 1024) "表空间⼤⼩(G)",free / (1024 * 1024 * 1024) "表空间剩余⼤⼩(G)",(total - free) / (1024 * 1024 * 1024) "表空间使⽤⼤⼩(G)", round((total - free) / total, 4) * 100 "使⽤率 %"FROM (SELECT tablespace_name, SUM(bytes) freeFROM dba_free_spaceGROUP BY tablespace_name) a,(SELECT tablespace_name, SUM(bytes) totalFROM dba_data_filesGROUP BY tablespace_name) bWHERE a.tablespace_name = b.tablespace_name。

oracle里删除临时表语句

oracle里删除临时表语句

在使用Oracle数据库时,经常会遇到删除临时表的情况。

临时表是一种特殊的数据库对象,通常用于在会话级别保存临时数据。

使用临时表可以有效地管理临时数据,提高数据库的性能和效率。

在Oracle数据库中,删除临时表的语句可以通过以下几种方式实现:1. 使用DROP TABLE语句删除临时表DROP TABLE 临时表名;使用DROP TABLE语句可以直接删除临时表,但需要谨慎使用,因为一旦执行该语句,临时表及其数据将被永久删除,不可恢复。

在执行DROP TABLE语句之前,务必确认是否需要删除该临时表。

2. 使用TRUNCATE TABLE语句清空临时表数据TRUNCATE TABLE 临时表名;TRUNCATE TABLE语句用于清空表中的数据,但保留表的结构及其定义。

与DROP TABLE不同,TRUNCATE TABLE仅删除表中的数据,而不删除表本身。

在删除临时表数据时,可以使用TRUNCATE TABLE 语句保留表的定义及结构,以便后续重新使用。

3. 使用DELETE FROM语句删除临时表数据DELETE FROM 临时表名;DELETE FROM语句用于删除表中的数据,但不会删除表的结构。

通过使用DELETE FROM语句,可以逐行地删除临时表中的数据,但保留表的结构不变。

无论是使用DROP TABLE、TRUNCATE TABLE还是DELETE FROM语句删除临时表,都需要在实际操作前进行充分的确认和备份工作,以避免因操作失误导致不可逆的数据丢失。

在进行删除临时表的操作时,还需要注意以下几点:1. 确认临时表是否仍在使用中在删除临时表之前,需要确认该临时表是否仍在当前会话或其他会话中使用。

如果临时表仍在使用中,需要先断开与临时表的关联,再执行删除操作。

2. 备份临时表数据在执行删除操作之前,应该对临时表的数据进行备份。

即使是临时表,也可能含有重要的临时数据,一旦删除不可恢复,可能会给业务或应用程序带来不必要的损失。

Oracle删除数据文件

Oracle删除数据文件

Oracle删除数据文件在我们详细介绍之前,我们必须说清楚一点:Oracle不提供如删除表、视图一样删除数据文件的方法,数据文件是表空间的一部分,所以不能“移走”表空间。

一、使用offline数据文件的方法非归档模式使用:alter database datafile '...' offline drop;归档模式使用:alter database datafile '...' offline;说明:1) 以上命令只是将该数据文件OFFLINE,而不是在数据库中删除数据文件。

该数据文件的信息在控制文件种仍存在。

查询v$datafile,仍显示该文件。

2) 归档模式下offline和offline drop效果是一样的3) offline后,存在此datafile上的对象将不能访问4) noarchivelog模式下,只要online redo日志没有被重写,可以对这个文件recover 后进行online操作实际使用案例:直接删除数据文件后无法进入系统的解决方案正常情况下,删除表空间的正确方法为:DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;如果没有通过以上命令删除而直接删除了数据文件,将导致数据库无法打开。

如果直接删除了数据文件普通用户登录时,则报错:ORA-01033: ORACLE initialization or shutdown in progresssys用户可以正常登录但进行操作时(SELECT count(1) FROM user_tables),则会报错:ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询如果执行命令alter database open以打开数据库时,又报如下错:ORA-01157: 无法标识/锁定数据文件12 - 请参阅DBWR 跟踪文件ORA-01110: 数据文件12: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TSTEST001.DBF'说明数据库没找到这个数据文件因为数据文件在没有被offline的情况下物理删除了,导致oracle的数据不一致,因此启动失败.通过以下方法即可解决解决方法:sqlplus sys/orcl@orcl as sysdba;SQL> alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TSTEST001.DBF' offline drop;SQL> alter database open;SQL> drop tablespace CTBASEDATA;二、Oracle 10G R2开始,可以采用:Alter tablespace tablespace_name drop datafile file_name;来删除一个空数据文件,并且相应的数据字典信息也会清除:sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files2 where tablespace_name='USERS';FILE_ID FILE_NAME TABLESPACE_NAME------- -------------------------------------------- ------------------ 4 /u01/app/oracle/oradata/orcl/users01.dbf USERSsys@ORCL>alter tablespace users add datafile2 '/u01/app/oracle/oradata/orcl/users02.dbf' size 5M autoextend off; Tablespace altered.sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files 2 where tablespace_name='USERS';FILE_ID FILE_NAME TABLESPACE_NAME------- -------------------------------------------- ------------------- 4 /u01/app/oracle/oradata/orcl/users01.dbf USERS9 /u01/app/oracle/oradata/orcl/users02.dbf USERSsys@ORCL>drop table test;Table dropped.sys@ORCL>create table test tablespace users2 as3 select * from dba_objects;Table created.sys@ORCL>select SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents2 where file_id=9;SEGMENT_NAME FILE_ID BLOCKS------------------------------ ---------- ---------- TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 8TEST 9 128TEST 9 12817 rows selected.sys@ORCL>alter table test move tablespace PERFSTAT; --把表移动到其它表空间Table altered.sys@ORCL>select SEGMENT_NAME,FILE_ID,BLOCKS from dba_extents2 where file_id=9;no rows selectedsys@ORCL>alter tablespace users drop datafile2 '/u01/app/oracle/oradata/orcl/users02.dbf';Tablespace altered.sys@ORCL>select file_id,file_name,tablespace_name from dba_data_files2 where tablespace_name='USERS';FILE_ID FILE_NAME TABLESPACE_NAME------- -------------------------------------------- ---------------------4 /u01/app/oracle/oradata/orcl/users01.dbf USERS三、oracle 10g可以删除临时表空间的文件alter database tempfile '/home/oracle/temp01.dbf' drop including datafiles;ALTER DATABASE 与ALTER TABLESPACE OFFLINE的区别一.DataFile脱机或联机的两种方法:① ALTER DATABASE 语句修改单独的DataFile② ALTER TABLESPACE 语句修改所有的DataFile1、在ARCHIVRLOG模式下的更改DataFile状态ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf' ONLINE;ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/stuff01.dbf' OFFLINE;或者用文件号来表示:ALTER DATABASE DATAFILE 5 ONLINE;ALTER DATABASE DATAFILE 5 OFFLINE;注:只有在ARCHIVELOG模式下才可使用ALTER DATABASE来更改DataFile2、在NOARCHIVELOG模式下使DataFile脱机由于在NOARCHIVELOG模式下,数据文件脱机后会造成数据的遗失,所以只能使用ALTER DATABASE语句下带有DATAFILE和OFFLINE DROP子句的选项将该DataFile直接取消,例如该DataFile只包含临时段数据,并没有备份时ALTER DATABASE DATAFILE '/u02/oracle/rbdb1/users3.dbf' OFFLINE DROP;3、修改TableSpace中所有DataFile或TempFile的可用性ALTER TABLESPACE ... DATAFILE {ONLINE|OFFLINE}ALTER TABLESPACE ... TEMPFILE {ONLINE|OFFLINE}注:修改某TableSpace中的所有数据文件,但是TableSpace本身的状态不改变。

centos oracle dbca 删除实例-概述说明以及解释

centos oracle dbca 删除实例-概述说明以及解释

centos oracle dbca 删除实例-概述说明以及解释1.引言1.1 概述Oracle数据库是一种常用的关系型数据库管理系统,在企业中被广泛应用。

在CentOS操作系统下部署Oracle数据库时,使用Oracle Database Configuration Assistant(DBCA)可以方便地管理数据库实例的创建和删除。

本文将介绍如何在CentOS下使用DBCA删除Oracle数据库实例。

首先将简要介绍CentOS下Oracle数据库的特点,然后详细讲解使用DBCA删除实例的步骤和注意事项。

通过本文的指导,读者将能够轻松地进行Oracle数据库实例的管理操作。

文章结构是指整篇文章在内容和组织上的布局和安排,它可以有效地引导读者理解和阅读文章的内容。

本文按照以下结构进行组织:1. 引言1.1 概述:介绍CentOS下Oracle数据库的背景和重要性。

1.2 文章结构:说明本文的结构和内容安排。

1.3 目的:阐述本文的撰写目的和意义。

2. 正文2.1 CentOS下Oracle数据库简介:介绍CentOS操作系统和Oracle数据库的概况。

2.2 使用DBCA删除Oracle实例的步骤:详细介绍使用DBCA删除Oracle实例的具体步骤和操作方法。

2.3 注意事项:列举在删除Oracle实例时需要注意的细节和问题。

3. 结论3.1 总结:对本文所述内容进行总结和归纳。

3.2 结果展望:展望使用DBCA删除Oracle实例之后的影响和效果。

3.3 结束语:对文章进行总结和提出进一步研究的展望。

通过以上结构安排,可以使读者清晰地了解整篇文章的内容和主题,帮助读者更好地理解和掌握文章所述知识。

1.3 目的:本文的主要目的是介绍在CentOS系统下使用Oracle Database Configuration Assistant (DBCA) 工具来删除Oracle数据库实例的步骤。

通过了解如何正确地删除Oracle实例,可以帮助用户更好地管理数据库,释放系统资源,提高系统性能,同时避免不必要的数据泄霎。

矿产

矿产

矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。

如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。

㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。

(2 列出开发利用方案编制所依据的主要基础性资料的名称。

如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。

对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。

二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。

2、国内近、远期的需求量及主要销向预测。

㈡产品价格分析
1、国内矿产品价格现状。

2、矿产品价格稳定性及变化趋势。

三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。

2、矿区矿产资源概况。

3、该设计与矿区总体开发的关系。

㈡该设计项目的资源概况
1、矿床地质及构造特征。

2、矿床开采技术条件及水文地质条件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

删除表(记录和结构)的语名delete ————truncate ———— drop DELETE (删除数据表里记录的语句)
DELETE FROM表名WHERE 条件;
注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused.
如果确实要删除一个大表里的全部记录, 可以用TRUNCATE 命令, 它可以释放占用的数据块表空间
TRUNCATE TABLE 表名;
此操作不可回退.
相同点
truncate和不带where子句的delete, 以及drop都会删除表内的数据
注意:
1.这里说的delete是指不带where子句的delete语句
2.在存储过程中默认是不允许执行truncate table tablename操作的,所以要使用execute immediate 'truncate table tablename';
例如:
[sql]view plaincopyprint?
1.CREATE OR REPLACE PROCEDURE proc_delete_all_data
2.IS
3.BEGIN
4.execute immediate 'truncate table T_FLOW_ACCOUNT';
5.execute immediate 'truncate table T_FLOW_MERCHANT';
6.END proc_delete_all_data;
不同点:
1. truncate和delete只删除数据不删除表的结构(定义)
drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.
2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.
truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.
3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动
显然drop语句将表所占用的空间全部释放
truncate 语句缺省情况下见空间释放到minextents个extent,除非使用reuse storage; truncate会将高水线复位(回到最开始).
4.速度,一般来说: drop>; truncate >; delete
5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.
想删除表,当然用drop
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据oracle中删除表中的一列语句
alter table 表名drop colum 列名。

相关文档
最新文档