[20111228]9i?临时表and truncate table.txt

[20111228]9i?临时表and truncate table.txt

这个问题以前遇到,今天再一次遭遇,把它写下来。

1.测试环境:
SQL> select * from v$version ;

BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
PL/SQL Release 9.2.0.8.0 - Production
CORE    9.2.0.8.0       Production
TNS for 32-bit Windows: Version 9.2.0.8.0 - Production
NLSRTL Version 9.2.0.8.0 - Production

SQL> CREATE GLOBAL TEMPORARY TABLE T (  id number,  name varchar2(10)) ON COMMIT PRESERVE ROWS;
Table created.

2.插入数据:

SQL> insert into t  select rownum id ,'test' from dual connect by level 10 rows created.
SQL> commit ;

SQL> select count(*) from t;
  COUNT(*)
----------
        10

SQL> truncate table t REUSE STORAGE ;
Table truncated.
SQL> select count(*) from t;
  COUNT(*)
----------
         10

--并没有删除记录。

3.如果这样,正常:
SQL> truncate table t ;
Table truncated.

SQL> select count(*) from t;
  COUNT(*)
----------
         0

4.在11GR2下结果如何呢?

SQL> select * from v$version ;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> CREATE GLOBAL TEMPORARY TABLE T (  id number,  name varchar2(10)) ON COMMIT PRESERVE ROWS;
SQL> insert into t  select rownum id ,'test' from dual connect by level SQL> commit ;
SQL> select count(*) from t ;
  COUNT(*)
----------
        10
SQL>  truncate table t REUSE STORAGE ;
 truncate table t REUSE STORAGE
                *
ERROR at line 1:
ORA-14461: cannot REUSE STORAGE on a temporary table TRUNCATE

SQL>  truncate table t drop STORAGE ;
Table truncated.
SQL> select count(*) from t ;
  COUNT(*)
----------
         0
SQL> insert into t  select rownum id ,'test' from dual connect by level 10 rows created.
SQL> commit;
Commit complete.

SQL> truncate table t;
Table truncated.

SQL> select count(*) from t ;
  COUNT(*)
----------
         0

时间: 2024-09-25 21:51:26

[20111228]9i?临时表and truncate table.txt的相关文章

oracle中针对临时表与truncate错误的分析

昨天晚上系统出现一个问题,一个存储过程执行异常,观察仅仅发现逻辑读越越高.当时情况比较紧 急,我只好将原来的修改成旧的样子. 实际上改动很简单,新的如下: EXECUTE IMMEDIATE 'TRUNCATE TABLE temp_test REUSE STORAGE ' ; 旧的如下: delete from TEMP_TEST ; TEMP_TEST 是一个临时表. 今天上午测试才发现临时表在truncate时与正常表不同. 测试实验如下: sleect * from v$version

关于mysql临时表、truncate、delete

  mysql 把select结果保存为临时表,有2种方法 第一种,建立正式的表,此表可供你反复查询 drop table if exists a_temp; create table a_temp as  select 表字段名称 from 表名称 truncate与delete的区别   truncate table命令将快速删除数据表中的所有记录,但保留数据表结构.这种快速删除与delete from 数据表的删除全部数据表记录不一样,delete命令删除的数据将存储在系统回滚段中,需要的

drop与truncate table 的区别*

我们先把上一篇的文章讲完:http://blog.csdn.net/changyanmanman/article/details/7767378 是这样的:truncate先把原来的表重新命名一下,所以,就像我们之前测试的OBJECT_ID 是不会变化的.又重新创建了一个表,这个表的名字和被truncate的表的名字相同,但是他的段(也可以说地址)必定发生变化,所以又出现了新的data_object_id.这个表是没有内容的,只有这个表的定义. truncate不会产生大量的roolback,不

SQL SERVER truncate table后会不会重置表的自增值

今天清理业务库数据的时候,开发人员说可以使用truncate table把两个表的所有数据清理掉 这两个表都有自增ID,都做了表分区,单表200GB,使用 SELECT IDENT_CURRENT('') 的时候两个表 的当前自增值是3000012,这两个表几乎是一模一样的,除了一两个字段不一样 我执行两个SQL语句把两个表都truncate掉,然后就忘记了收缩数据库和重置种子值 由于分区函数的最后一个值是2000000,那么后插入的数据都会积聚在最后一个文件组 1.重置种子值,让数据重新利用第

Oracle 临时事务表 全局临时表_global temporary table

所有的操作都在一个事务里,事务提交后,此表清空,特别适合做插入删除频率特别高的临时表操作,比如插入完数据就开始查询,查询完就删掉等,用完就扔! 临时表分事务级临时表和会话级临时表. 事务级临时表只对当前事务有效,通过语句:ON COMMIT DELETE ROWS 指定. 会话级临时表对当前会话有效,通过语句:ON COMMIT PRESERVE ROWS语句指定. -- Create table create global temporary table WFM_TMP_WORKLIST (

请问:mysql delete 很少的数据,用时要比TRUNCATE TABLE快呢?

问题描述 请问:mysql delete 很少的数据,用时要比TRUNCATE TABLE快呢? 如题; TRUNCATE TABLE 0.3S DELETE TABLE XX ;//数据量越少越快.100条不到100毫秒. 解决方案 http://www.jb51.net/article/31243.htm

mysql中TRUNCATE TABLE 语句用法详解

TRUNCATE TABLE删除表中的所有行,而不记录单个行删除操作. 语法    TRUNCATE TABLE name; 参数    name(是要截断的表的名称或要删除其全部行的表的名称) TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行.但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少. DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项.TRUNCATE TABLE

[20141106]type and table.txt

[20141106]type and table.txt --看看建立type与表. SCOTT@test> @ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Li

Truncate Table的时候不管是用drop storage 或reuse storage都会将HWM重新设置到第一

A, B 为两个Table . A, B 的数据分别放在 erp_data  表空间下  A, B 的索引分别放在 erp_indx  表空间下    那么我们使用下面的两个语句删除两个表中的数据 Truncate table A  drop    storage  ;  Truncate table B  reuse  storage  ;    得到的结果将是: Truncate table A  drop    storage  ;  --data :   数据部分所在的extent 空间