数据库中如何实现UNDO TABLESPACE

网友投稿 181 2023-12-07

数据库中如何实现UNDO TABLESPACE

这篇文章主要介绍数据库中如何实现UNDO TABLESPACE,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一、官档

数据库中如何实现UNDO TABLESPACE

BOOK → SQL Language Reference → 16 SQL Statements: CREATE SYNONYM to CREATE TRIGGER → CREATE TABLESPACE

二、基本语法

CREATE [BIGFILE|SMALLFILE] UNDO TABLESPACE

[数据文件语句]

[范围管理语句]

[一致性保护]

三、数据文件大小

1、数据文件的路径名:DATAFILE datefile_spec1 [,datefile_spec2] ...

2、文件的初始大小:[SIZE INTEGER [K|M|G|T|P|E]]

3、重用:[REUSE]

4、表明是否自动扩展:[AUTOEXTEND]

  a) 不自动扩展:OFF

  b) 自动扩展:ON

    i. 表示数据文件满了以后,扩展的大小:[NEXT INTEGER [K|M|G|T|P|E]]

    ii. 最大扩展到:[MAXSIZE ]

表示无限的表空间:[UNLIMITED]

      表示数据文件的最大大小:INTEGER [K|M|G|T|P|E]]

四、范围管理语句

说明了表空间如何管理范围。一旦你声明了这个子句,只能通过移植的方式改变这些参数

1、如果希望表空间本地管理的话,声明local选项,本地管理表空间是通过位图管理的

EXTENT MANAGEMENT LOCAL

a) 说明表空间自动分配范围,用户不能指定范围的大小。只有9.0以上的版本具有这个功能。

    AUTOALLOCATE

  b) uniform说明表空间的范围的固定大小,缺省是1m。

    UNIFORM [SIZE INTEGER [K|M|G|T|P|E]]

2、如果没有设置extent_management_clause,oracle会给他设置一个默认值。

  a) compatible小于9.0.0:如果初始化参数,那么系统创建字典管理表空间。

  b) compatible大于9.0.0:

i. 如果没有指定 default storage_clause,oracle创建一个自动分配的本地管理表空间。

    ii. 如果指定 default storage_clause

如果指定了mininum extent,那么oracle判断mininum extent 、initial、next是否相等,以及pctincrease是否=0.

如果满足以上的条件,oracle创建一个本地管理表空间,extent size是initial。

        如果不满足以上条件,那么oracle将创建一个自动分配的本地管理表空间。

如果没有指定mininum extent。initial、那么oracle判断next是否相等,以及pctincrease是否=0。

        如果满足oracle创建一个本地管理表空间并指定uniform。

        否则oracle将创建一个自动分配的本地管理表空间。

注意:本地管理表空间只能存储永久对象。如果你声明了local,将不能声明default storage_clause,mininum extent、temporary.

五、一致性保护

如果你倾向于保证数据一致性,也就是专注于查询,那么你有必要通过ALTER TABLESPACE undotbs1 RETENTION GUARANTEE,来保证一致性,也就是不管你空间够不够用,你都不可以使用inactive状态的区,这样就有可能导致由于没有可用的undo空间而导致数据库hang住,但是这样你可以保证查询语句执行时间在  undo_retention值之内的所有查询的一致性。

RETENTION

  GUARANTEE

  NOGUARANTEE

六、常用语句

CREATE UNDO TABLESPACE UNDOTBS1

DATAFILE +ARCHDG1 SIZE 30G

EXTENT MANAGEMENT LOCAL;

七、UNDO使用情况

SELECT TABLESPACE_NAME,

       SUM(ACTIVE_MB) ACTIVE_MB,

       SUM(UNEXPIRED_MB) UNEXPIRED_MB,

       SUM(EXPIRED_MB) EXPIRED_MB

FROM (SELECT TABLESPACE_NAME,

               DECODE(STATUS, ACTIVE, SIZE_MB) ACTIVE_MB,

DECODE(STATUS, UNEXPIRED, SIZE_MB) UNEXPIRED_MB,

               DECODE(STATUS, EXPIRED, SIZE_MB) EXPIRED_MB

          FROM (SELECT TABLESPACE_NAME,

(SUM(BLOCKS) * 8) / 1024 SIZE_MB,

                       STATUS

                  FROM DBA_UNDO_EXTENTS

                 GROUP BY TABLESPACE_NAME, STATUS))

GROUP BY TABLESPACE_NAME

 ORDER BY TABLESPACE_NAME

以上是“数据库中如何实现UNDO TABLESPACE”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据库中触发器trigger怎么用
下一篇:SQL中函数怎么用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~