20160822Oracle 11g Temporary Tablespace

[20160822]Oracle 11g Temporary Tablespace.txt

1.11G改进了Temporary Tablespace管理,可以回收临时表空间.

alter tablespace temp shrink space;
alter tablespace temp shrink space keep 10m;

--也可以单独回收一个临时表空间数据文件.
alter tablespace temp shrink tempfile  '/u01/app/Oracle/oradata/test/temp01.dbf' keep 5m;

2.可以指定临时表使用那个临时表空间,这点对于一些应用比较有用.通过例子来说明:

SCOTT@test01p> @ ver1
PORT_STRING                    VERSION        BANNER                                                                               CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0           12.1.0.1.0     Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0

--//家里仅仅12c,应该也能说明问题.
--//缺省已经建立了临时表空间.

CREATE TEMPORARY TABLESPACE TEMP TEMPFILE
  'D:\APP\ORACLE\ORADATA\TEST\TEST01P\TEST01P_TEMP01.DBF' SIZE 388M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
TABLESPACE GROUP ''
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;

--//可以发现UNIFORM SIZE=1M,这样加入每个session都要使用一些小的临时表,每个至少需要1M,大量的会话占用许多临时表空间.
--//我们可以建立UNIFORM SIZE=64K的临时表空间,而建立的临时表指定到这个临时表空间,这样空间就没有这么浪费了.

CREATE TEMPORARY TABLESPACE TEMP01 TEMPFILE
  'D:\APP\ORACLE\ORADATA\TEST\TEST01P\TEST01P_TEMP02.DBF' SIZE 100M AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 64K;

SCOTT@test01p> SCOTT@test01p> create global temporary table temp_test(id number ,text varchar2(100)) on commit delete rows tablespace temp01;
Table created.

SCOTT@test01p> insert into temp_test values (1,'a');
1 row created.

SCOTT@test01p> @ spid
       SID    SERIAL# SPID       PID  P_SERIAL# C50
---------- ---------- ------ ------- ---------- --------------------------------------------------
       242         25 6808        22          5 alter system kill session '242,25' immediate;

--不提交执行如下:
  SELECT s.username
        ,s.sid
        ,u.tablespace
        ,u.contents
        ,u.segtype
        ,ROUND (u.blocks * 8192 / 1024) KB
    FROM v$session s, v$sort_usage u
   WHERE s.saddr = u.session_addr AND u.contents = 'TEMPORARY'
ORDER BY KB DESC;

USERNAME                    SID TABLESPACE                     CONTENTS  SEGTYPE           KB
-------------------- ---------- ------------------------------ --------- --------- ----------
SCOTT                       242 TEMP01                         TEMPORARY DATA              64

--//这样仅仅需要64K.
SCOTT@test01p> commit ;
Commit complete.

--如果不指定:
SCOTT@test01p> create global temporary table temp_testx(id number ,text varchar2(100)) on commit delete rows;
Table created.

SCOTT@test01p> insert into temp_testx values (1,'a');
1 row created.
USERNAME                    SID TABLESPACE                     CONTENTS  SEGTYPE           KB
-------------------- ---------- ------------------------------ --------- --------- ----------
SCOTT                       242 TEMP                           TEMPORARY DATA            1024

--这样即使插入很少的数据也使用1M.

3.看看这两种不同UNIFORM SIZE的是否可以建立临时表空间组:

SCOTT@test01p> ALTER TABLESPACE TEMP TABLESPACE GROUP ttt;
Tablespace altered.

SCOTT@test01p> ALTER TABLESPACE TEMP01 TABLESPACE GROUP ttt;
Tablespace altered.

--取消.
SCOTT@test01p> ALTER TABLESPACE TEMP TABLESPACE GROUP '';
Tablespace altered.

SCOTT@test01p> ALTER TABLESPACE TEMP01 TABLESPACE GROUP '';
Tablespace altered.

时间: 2024-10-23 08:47:03

20160822Oracle 11g Temporary Tablespace的相关文章

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

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

使用带dblink方式的datapump迁移Oracle 10g到11g

      对于从Oracle 10g下迁移数据库到Oracle 11g,除了使用RMAN方式之外,我们可以使用带dblink的datapump方式来实现基于逻辑上的迁移.其步骤也相对简单,而且不会产生中间过程生成的dump文件.本文即针对如何使用该方法给出了示例,供大家参考.   1.确保源数据库和目标数据库处于可用状态 --环境描述 --源库: mftst Oracle 10.2.0.3 + Enterprise Linux Enterprise Linux Server release 5

【Oracle】Installing and Using Standby Statspack in 11g

Statspack/AWR cannot be executed on a standby due to its read-only nature. Therefore tuning the performance of the apply process involves manually collecting statistics. In 11gR1, using the new Active Data Guard option, users can now use statspack fr

ORA-1652: unable to extend temp segment by 128 in tablespace xxx Troubleshootin

当收到告警信息ORA-01652: unable to extend temp segment by 128 in tablespace xxxx 时,如何Troubleshooting ORA-1652这样的问题呢? 当然一般xxx是临时表空间,也有可能是用户表空间.   我们先来模拟一下这个情况,在两个会话窗口执行下面SQL语句,这个视图比较特殊(因为比较懒,不想去构造一个大量消耗临时段的SQL,便使用手头的一个案例脚本),它里面有一个DISTINCT操作会消耗TEMP表空间中大量的临时段

Oracle 11g R2 手动建库(create database manually)

      手动创建数据库是DBA们经常遇到的情形,因为有些情况下无法提供GUI环境.实际上手动建库,只要设置好了相关的参数或值,也是非常方便的.本文基于Oracle 11g首先描述了手动建库的大致步骤并给出示例演示.最后提供了一个shell脚本直接执行来实现手动建库.在执行前该脚本可根据你的路径进行适当的修改.   一.手动建库大致步骤    设置环境变量.bash_profile    创建参数文件(位置:$ORACLE_HOME/dbs)    创建目录结构    执行建库脚本   二.手

[20171120]11G关闭直接路径读.txt

[20171120]11G关闭直接路径读.txt --//今天做filesystemio_options参数测试时,遇到一个关于直接路径读的问题. --//如果看以前的博客介绍,设置"_serial_direct_read"=never或者events '10949 trace name context forever';就可以关闭直接路径读. --//我的测试在11GR2下set events '10949 trace name context forever';不行. --//通过

Oracle 11g 的 VKTM 进程 - virtual keeper of time

链接:http://www.eygle.com/archives/2012/06/oracle_11g_vktm.html 在Oracle Database 11g中,VKTM是一个新增的后台进程.这个进程的含义是: VKTM (virtual keeper of time) is responsible for providing a wall-clock time (updated every second) and reference-time counter (updated every

关于create database语句在10g,11g中的不同

最近抽空练习了下手工建库,在10g的时候基本都在20分钟搞定,在11g中其实还可以更快,因为10g中需要配置的admin目录,需要创建bdump,udump之类的目录等等,在11g都被adr给默认替代了,只要提供了$ORACLE_BASE,就会默认在$ORACLE_BASE下生成对应的目录结构. 其它步骤完全可以按照10g的脚本来使用,没有任何问题,但是如果反过来,在11g里使用的一些语句在10g中可能会有一些问题,这一点也是在今天的测试中发现的一个小细节. 首先我在11g的库中创建了一个数据库

Oracle GoldenGate 11g的单向DDL配置实战

在认真学习了GoldenGate企业级运维实战后,重点是对OGG几个进程的理解,结合对原理的理解,在整整实验了近两天,反复配置了四次之后,终于配置成功.本文经过多次配置成功实践整理而成,还有很多的细节需要完善. 目录 ================================ 一.环境准备并安装GoldenGate 1. 数据库准备情况 2. 下载OGG软件并解压安装 3. 准备OGG环境变量 4. 配置日志模式 5. 创建GoldenGate用户帐号 6. 安装GoldenGate软件