ITPub博客

首页 > 数据库 > Oracle > 《Oracle从入门到精通》读书笔记第八章 管理表空间和数据文件之二

《Oracle从入门到精通》读书笔记第八章 管理表空间和数据文件之二

Oracle 作者:RPWT006 时间:2014-02-13 22:02:16 0 删除 编辑

8.5 治理undo表空间
8.5.1 undo表空间的作用
1、使读写分歧
2、可以回滚事物
3、事物恢复
4、闪回操作

8.5.2 undo表空间的初始化参数
1、undo_tablespace:指定要利用的undo表空间
2、undo_management:指定undo数据的治理形式,若是为auto,则为自动消除治理形式,为manual,则为回滚段治理形式
3、undo_retention:把握undo数据的最大年夜保存时间,默许为900s
SQL> col name for a20;
SQL> col type for a10;
SQL> col value for a20;
SQL> show parameter undo_tablespace;
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
undo_tablespace string UNDOTBS1
SQL> show parameter undo_management;
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
undo_management string AUTO
SQL> show parameter undo_retention;
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
undo_retention integer 900

8.5.3 消除表空间的基本操作
1、竖坐undo表空间
需求属意一下两个方里:
a、undo表空间对应的数据文件巨细凡是由DML操作可以产死的最大年夜数据量来必然,凡是该数据文件的巨细最少为1G;
b、undo表空间只用于存储消除数据,没有要再undo表空间内树坐任何数据东西
SQL> col tablespace_name for a10;
SQL> col file_name for a50;
SQL> col bytes for 999,999,999;
SQL> select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name;
TABLESPACE FILE_NAME BYTES
---------- -------------------------------------------------- ------------
EXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf 104,857,600
SYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf 555,745,280
SYSTEM /ora/app/oracle/oradata/stone1/system01.dbf 713,031,680
TBS_BIG /ora/app/oracle/oradata/stone1/datafilebig.dbf 20,971,520
TBS_TEST_1 /ora/app/oracle/oradata/stone1/datafile1.dbf 10,485,760
TBS_TEST_2 /ora/app/oracle/oradata/stone1/datafile2.dbf 10,485,760
TBS_TEST_3 /ora/app/oracle/oradata/stone1/datafile3.dbf 10,485,760
TBS_TEST_4 /ora/app/oracle/oradata/stone1/datafile4.dbf 20,971,520
UNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf 89,128,960
USERS /ora/app/oracle/oradata/stone1/users01.dbf 5,242,880
10 rows selected.
SQL> create undo tablespace undo_test1
  datafile "/ora/app/oracle/oradata/stone1/undo_test1.dbf"
  size 10m;
Tablespace created.
SQL> select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name;
TABLESPACE FILE_NAME BYTES
---------- -------------------------------------------------- ------------
EXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf 104,857,600
SYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf 555,745,280
SYSTEM /ora/app/oracle/oradata/stone1/system01.dbf 713,031,680
TBS_BIG /ora/app/oracle/oradata/stone1/datafilebig.dbf 20,971,520
TBS_TEST_1 /ora/app/oracle/oradata/stone1/datafile1.dbf 10,485,760
TBS_TEST_2 /ora/app/oracle/oradata/stone1/datafile2.dbf 10,485,760
TBS_TEST_3 /ora/app/oracle/oradata/stone1/datafile3.dbf 10,485,760
TBS_TEST_4 /ora/app/oracle/oradata/stone1/datafile4.dbf 20,971,520
UNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf 89,128,960
UNDO_TEST1 /ora/app/oracle/oradata/stone1/undo_test1.dbf 10,485,760
USERS /ora/app/oracle/oradata/stone1/users01.dbf 5,242,880
11 rows selected.

2、批改undo表空间
SQL> alter tablespace undo_test1
  add datafile "/ora/app/oracle/oradata/stone1/undo_test2.dbf"
  size 10m;
Tablespace altered.
SQL> select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name;
TABLESPACE FILE_NAME BYTES
---------- -------------------------------------------------- ------------
EXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf 104,857,600
SYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf 555,745,280
SYSTEM /ora/app/oracle/oradata/stone1/system01.dbf 713,031,680
TBS_BIG /ora/app/oracle/oradata/stone1/datafilebig.dbf 20,971,520
TBS_TEST_1 /ora/app/oracle/oradata/stone1/datafile1.dbf 10,485,760
TBS_TEST_2 /ora/app/oracle/oradata/stone1/datafile2.dbf 10,485,760
TBS_TEST_3 /ora/app/oracle/oradata/stone1/datafile3.dbf 10,485,760
TBS_TEST_4 /ora/app/oracle/oradata/stone1/datafile4.dbf 20,971,520
UNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf 89,128,960
UNDO_TEST1 /ora/app/oracle/oradata/stone1/undo_test2.dbf 10,485,760
UNDO_TEST1 /ora/app/oracle/oradata/stone1/undo_test1.dbf 10,485,760
TABLESPACE FILE_NAME BYTES
---------- -------------------------------------------------- ------------
USERS /ora/app/oracle/oradata/stone1/users01.dbf 5,242,880
12 rows selected.

3、切换undo表空间
oracle 11g默许的undo表空间是undotbs1
SQL> alter system set undo_tablespace=undo_test1;
System altered.
SQL> show parameter undo_tablespace;
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
undo_tablespace string UNDO_TEST1

4、删除undo表空间
SQL> alter system set undo_tablespace=undotbs1;
System altered.
SQL> drop tablespace undo_test1;
Tablespace dropped.
SQL> show parameter undo_tablespace;
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
undo_tablespace string UNDOTBS1
SQL> select tablespace_name,file_name,bytes from dba_data_files order by tablespace_name;
TABLESPACE FILE_NAME BYTES
---------- -------------------------------------------------- ------------
EXAMPLE /ora/app/oracle/oradata/stone1/example01.dbf 104,857,600
SYSAUX /ora/app/oracle/oradata/stone1/sysaux01.dbf 555,745,280
SYSTEM /ora/app/oracle/oradata/stone1/system01.dbf 713,031,680
TBS_BIG /ora/app/oracle/oradata/stone1/datafilebig.dbf 20,971,520
TBS_TEST_1 /ora/app/oracle/oradata/stone1/datafile1.dbf 10,485,760
TBS_TEST_2 /ora/app/oracle/oradata/stone1/datafile2.dbf 10,485,760
TBS_TEST_3 /ora/app/oracle/oradata/stone1/datafile3.dbf 10,485,760
TBS_TEST_4 /ora/app/oracle/oradata/stone1/datafile4.dbf 20,971,520
UNDOTBS1 /ora/app/oracle/oradata/stone1/undotbs01.dbf 89,128,960
USERS /ora/app/oracle/oradata/stone1/users01.dbf 5,242,880
10 rows selected.

5、查询undo表空间信息
(1)当前实例正正在利用的undo表空间
查询初始化参数undo_tablespaces
SQL> show parameter undo_tablespace;
NAME TYPE VALUE
------------------------------------ ---------- ------------------------------
undo_tablespace string UNDOTBS1

(2)实例的所有undo表空间
查询数据字典dba_tablespaces
SQL> select tablespace_name as name from dba_tablespaces where contents="UNDO";
NAME
--------------------
UNDOTBS1

(3)undo表空间的统计信息
正在数据库运止岑岭期聚集undo表空间的统计信息,按照统计信息必然undo表空间的巨细
查询动态性能视图v$undostat
SQL> select to_char(begin_time,"hh24:mi:ss") as BeginTime,
  to_char(end_time,"hh24:mi:ss") as EndTime,
  undoblks as numbers
  from v$undostat
  order by begin_time;
BEGINTIME ENDTIME NUMBERS
------------------------ ------------------------ ----------
20:19:49 20:29:49 3
20:29:49 20:39:49 55
20:39:49 20:49:49 1
20:49:49 20:59:16 1

(4)显示undo段统计信息
利用自动undo治理形式时,oracle会正在undo表空间上自动树坐10个undo段
查询动态性能视图v$rollname显示所有联机undo段的名称
查询动态性能视图v$rollstat显示undo段的统计信息

SQL> select rn.name,rs.xacts,rs.writes,rs.extents
  from v$rollname rn,v$rollstat rs
  where rn.usn=rs.usn;
NAME XACTS WRITES EXTENTS
-------------------- ---------- ---------- ----------
SYSTEM 46174 6
_SYSSMU1_3780397527$ 14538 4
_SYSSMU2_2232571081$ 39166 5
_SYSSMU3_2097677531$ 71240 7
_SYSSMU4_1152005954$ 18086 5
_SYSSMU5_1527469038$ 17184 6
_SYSSMU6_2443381498$ 20054 5
_SYSSMU7_3286610060$ 30472 5
_SYSSMU8_2012382730$ 17480 7
_SYSSMU9_1424341975$ 156986 6
_SYSSMU10_3550978943 17594 4
NAME XACTS WRITES EXTENTS
-------------------- ---------- ---------- ----------
$
11 rows selected.

name:标识undo段的名称
xacts:标识undo段所搜罗的流动事物个数
writers:标识正在undo段写进的字节数
extents:标识undo段的区个数

(5)显示流动事物信息
利用动态性能视图v$session显示会话的具体信息
利用动态性能视图v$transaction显示事物的具体信息
SQL> select name,status from v$transaction;
no rows selected

(6)显示undo区信息
正在数据字典dba_undo_extents中,用户可以查询undo表空间中所有区得具体信息,包含undo区的巨细和状态等信息
SQL> desc dba_undo_extents;
 Name Null? Type
 ----------------------------------------- -------- ----------------------------
 OWNER CHAR(3)
 SEGMENT_NAME NOT NULL VARCHAR2(30)
 TABLESPACE_NAME NOT NULL VARCHAR2(30)
 EXTENT_ID NUMBER
 FILE_ID NOT NULL NUMBER
 BLOCK_ID NUMBER
 BYTES NUMBER
 BLOCKS NUMBER
 RELATIVE_FNO NUMBER
 COMMIT_JTIME NUMBER
 COMMIT_WTIME VARCHAR2(20)
 STATUS VARCHAR2(9)

8.6 治理暂时表空间
8.6.1 暂时表空间概述
次要用于内存排序区没有够而必须将数据写到磁盘的阿谁逻辑区域
上里几种操作常常会常常用的暂时表空间:
select distinct没有重复检索
union 联开查询
minus斗劲图论
analyze阐明
连接两个没有索引的表

8.6.2 竖坐暂时表空间
SQL> create temporary tablespace temp_01
  tempfile "/ora/app/oracle/oradata/stone1/temp_01.tbf"
  size 10m;
Tablespace created.
SQL> alter database default temporary tablespace temp_01;
Database altered.

8.6.3 查询暂时表空间信息
暂时表空间信息寄存正在dba_temp_files中
正在v$tempfiles中可以审查暂时表空间的利用环境
SQL> col file_name for a50;
SQL> col tablespace_name for a20;
SQL> show linesize;
linesize 80
SQL> set linesize 100;
SQL> show linesize;
linesize 100
SQL> select file_name,tablespace_name,bytes from dba_temp_files;
FILE_NAME TABLESPACE_NAME BYTES
-------------------------------------------------- -------------------- ------------
/ora/app/oracle/oradata/stone1/temp01.dbf TEMP 30,408,704
/ora/app/oracle/oradata/stone1/temp_01.tbf TEMP_01 10,485,760

8.6.4 关于暂时表空间组
作用:
a、防止因大年夜量排序数据招致单一暂时表空间没有敷
b、一个用户有多个会话时,可利用组中的没有同暂时表空间
c、使并止的管事器正在单节点上利用多个暂时表空间

1、竖坐暂时表空间组
SQL> col name for a10;
SQL> select tablespace_name as name,file_name,bytes from dba_temp_files;
NAME FILE_NAME BYTES
---------- -------------------------------------------------- ------------
TEMP /ora/app/oracle/oradata/stone1/temp01.dbf 30,408,704
TEMP_01 /ora/app/oracle/oradata/stone1/temp_01.tbf 10,485,760
SQL> create temporary tablespace tp1
  tempfile "/ora/app/oracle/oradata/stone1/tp1.tpf"
  size 10m
  tablespace group group1;
Tablespace created.
SQL> create temporary tablespace tp2
  tempfile "/ora/app/oracle/oradata/stone1/tp2.tpf"
  size 10m
  tablespace group group1;
Tablespace created.
SQL> select tablespace_name as name,file_name,bytes from dba_temp_files;
NAME FILE_NAME BYTES
---------- -------------------------------------------------- ------------
TEMP /ora/app/oracle/oradata/stone1/temp01.dbf 30,408,704
TEMP_01 /ora/app/oracle/oradata/stone1/temp_01.tbf 10,485,760
TP1 /ora/app/oracle/oradata/stone1/tp1.tpf 10,485,760
TP2 /ora/app/oracle/oradata/stone1/tp2.tpf 10,485,760

2、转移暂时表空间到别的一个组
SQL> create temporary tablespace tp3
  tempfile "/ora/app/oracle/oradata/stone1/tp3.tpf"
  size 10m
  tablespace group group3;
Tablespace created.

SQL> col group_name for a15;
SQL> select from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
--------------- --------------------
GROUP1 TP1
GROUP1 TP2
GROUP3 TP3

SQL> alter tablespace tp1 tablespace group group3;
Tablespace altered.
SQL> select from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
--------------- --------------------
GROUP3 TP1
GROUP1 TP2
GROUP3 TP3

3、把暂时表空间组分派给指定的用户利用
SQL> alter user scott temporary tablespace group3;
User altered.

4、设置默许的暂时表空间组
SQL> alter database stone1 default temporary tablespace group3;
Database altered.

SQL> alter database stone1 default temporary tablespace temp;
Database altered.


5、删除暂时表空间组
SQL> drop tablespace tp1 including contents and datafiles;
Tablespace dropped.
SQL> select from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
--------------- --------------------
GROUP1 TP2
GROUP3 TP3
SQL> drop tablespace tp3 including contents and datafiles;
Tablespace dropped.
SQL> select from dba_tablespace_groups;
GROUP_NAME TABLESPACE_NAME
--------------- --------------------
GROUP1 TP2

本文出自 “石头记” 专客,请务必保存此出处http://stonebox.blog.51cto.com/5409313/1357962


瑞丰国际是个不错的体育平台,来贱贱的推荐下地址:http://www.16aq.com/
<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24031068/viewspace-1116931/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-06-03