Oracle创建、管理撤销表空间
撤销管理模式:
用户通过设定撤销管理模式(undo mode)就可以灵活地选择使用手动撤销管理(manual undo management)或自动撤销管理(automatic undo management)。数据库系统既可以运行在手动撤销管理模式下,也可以运行于自动撤销管理模式下。在手动撤销管理模式下,撤销空间通过回滚段(rollback segment)管理。在自动撤销管理模式下,撤销空间通过撤销表空间(undo tablespace)管理。如需使用自动撤销管理模式,数据库管理员只需为每个实例(instance)创建一个撤销表空间,并将初始化参数 UNDO_MANAGEMENT 设为 AUTO 即可。Oracle建议用户使用自动撤销管理模式。
管理撤销表空间 如果下两种特殊情况需要人工干预自动撤销管理方式。他们需要确定撤销表空间的大小和撤销数据的保留时间。 1.没有足够的撤销空间来处理所有的活动事务。 2.没有足够的撤销空间来满足读一致性需要的撤销数据。 这些干预的结果都需要对撤销表空间进行管理。
(一)创建撤销表空间
可以在创建数据库的时候创建撤销表空间。也可以在创建数据库之后再创建撤销表空间。
创建撤销表空间的命令行语法与创建其他表空间的语句基本相同,但必须指定UNDO关键字,只能使用本地管理方式EXTENT MANAGEMENT LOCAL
而不能使用数据字典管理方式,区管理方式只能是使用AUTOALLOCATE而不能使用UNIFORM,不能指定任何段空间管理方式,所以其语法是:
CREATE UNDO TABLESPACE DATAFILE datafile_clause [,datafile_clause]
[EXTENT MANAGEMENT LOCAL]
[AUTOALLOCATE]
其中datafile_clause子句的语法是:
'path_filename_suffix' SIZE integer [K|M]
[REUSE]
[AUTOEXTEND OFF|ON] [NEXT integer [K|M]]
[MAXSIZE UNLIMITED |integer [K|M]]
在datafile_clause子句中指定数据文件时,不能使用相对路径,只能使用绝对路径。并且,如果没有提供文件名的后缀,则无后缀。
CREATE UNDO TABLESPACE undotbs01 DATAFILE 'e:\undotbs01_1.dbf' SIZE 3M AUTOEXTEND ON NEXT 1M MAXSIZE 15M;
CREATE UNDO TABLESPACE undotbs02 DATAFILE 'e:\undotbs02_1.dbf' SIZE 3M AUTOEXTEND OFF;
虽然DBA最初可以允许数据文件自动扩展,但一旦DBA认为撤销表空间的大小已经合适时,就应该关闭自动扩展特性或限制其最大大小,以防止
某个用户忘记了尽可能频繁提交事务而意外的用完该数据文件所在的磁盘空间。
(二)修改撤销表空间
与其他表空间一样,可以通过ALTER TABLESPACE语句,ALTER DATABASE语句来修改撤销表空间。但因为撤销表空间的大部分设置都由ORACLE本
身进行管理,所以只能对撤销表空间进行如下的修改操作:
1.添加新的数据文件以便增加更多的存储空间。
2.移动(修改位置与名称)数据文件。
3.将数据文件设置成联机或脱机状态。
给UNDOTBS02撤销表空间添加一个新的数据文件。
ALTER TABLESPACE undotbs02 ADD DATAFILE 'e:\undotbs02_2.dbf' SIZE 1M AUTOEXTEND OFF;
给UNDOTBS02撤销表空间中e:\undotbs02_2.dbf数据文件的大小。
ALTER DATABASE DATAFILE 'e:\undotbs02_2.dbf' RESIZE 2M;
删除UNDOTBS02表空间中的e:\undotbs02_2.dbf数据文件。
ALTER DATABASE DATAFILE 'e:\undotbs02_2.dbf' OFFLINE OFF;
这条语句只是将该数据文件的状态改变成了RECOVER了,而并没有从数据库、更没有从磁盘中删除该数据文件。要使该数据文件可以被重新使用,需要进行介质恢复,并将该数据文件的状态改变为ONLINE就可以了。
RECOVER DATAFILE 'e:\undotbs02_2.dbf';
ALTER DATABASE DATAFILE 'e:\undotbs02_2.dbf' ONLINE;
可以使表空间脱机,但不能使当前正在使用的表空间脱机。
(三)更改撤销表空间
启动例程并打开数据库后,在同一时刻一个例程只能使用一个撤销表空间。如果在数据库中创建了多个撤销表空间,那么在数据库的运行过程中,可以更改到另一个撤销表空间,即更改UNDO_TABLESPACE参数,并同时停止当前使用的撤销表空间。由于该参数是一个动态参数,所以可以在数据库运行过程中,通过ALTER SYSTEM SET语句进行更改,并无须重新启动数据库。 不能使当前正在使用的撤销表空间脱机; 如果指定的表空间不存在,或不是一个撤销类型的表空间,则更改时会有错误提示。 在成功更改表空间之后,任何新开始的事务都将在新的撤销表空间中保留撤销数据。但是在旧的撤销表空间中可能还会保留着当前未提交的事务的撤销数据。这时,旧的撤销表空间并不会立即进入脱机状态,而是进入“悬挂脱机状态”。在这种情况下,当前未提交的事务继续使用旧的撤销表空间,知道提交后,旧的撤销表空间才进入脱机状态。
需要注意,在RAC(REAL APPLICATION CLUSTER)结构中,不同例程必须使用各自的、独立的撤销表空间,而不能使用同一个撤销表空间。 更改撤销表空间,不会清空V$UNDOSTAT视图中的内容,仍然会继续向其中每隔10分钟就增加一条记录。只有在关闭数据库时才会清空V$UNDOSTAT视图中的内容。
(四)删除撤销表空间。
可以使用DROP TABLESPACE语句来删除表空间。 不能删除当前正在使用的撤销表空间。 可以删除没有使用的撤销表空间,并且尅指定INCLUDING CONTENTS AND DATAFILES子句,以便在删除撤销表空间的时候,将有内容的撤销表空间及其对应的操作系统数据文件也删除,否则需要在关闭数据库之后才能删除这些操作系统数据文件。
查询和监控撤消的有关信息
视图 |
作用 |
V$undostat |
包含所有撤消表空间的统计信息, 可用于监控和调整撤消表空间的。DBA可以利用该视图来估算撤消表空间的大小, ORACLE利用其完成对撤消表空间的自动管理 |
V$rollstat |
包含撤消表空间各个撤消段的信息 |
V$transcation |
包含各个事务所使用的撤消段信息 |
Dba_undo_extents |
包含撤消表空间的每个区所对应的事务的提交时间 |
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->--查询撤消有关的参数
SQL> SHOW PARAMETER UNDO; --查看撤消表空间的使用情况
SELECT BYTES// BYTE,MAXBYTES// MAX FROM
DBA_DATA_FILES WHERE TABLESPACE_NAME='UNDOTBS'; --通过V$undostat来查询最近产生的撤消数据的ORACLE块数,V$undostat每10分钟产生一条记录,最多包含144条记录。
SELECT TO_CHAR(END_TIME,'HH24:mi:ss') etime,
to_char(begin_time,'hh24:mi:ss') btime,
(end_time-begin_time)*** ttime,
undoblks
from v$undostat;
--撤消表空间以及数据文件的信息
select a.tablespace_name tbs,
a.file_name,a.blocks,a.bytes// bt,
a.maxbytes// max,
a.autoextensible
from dba_data_files a,dba_tablespaces b
where a.tablespace_name=b.tablespace_name;
--撤消段的统计信息
select a.name,b.xacts,b.writes,b.extents
from v$rollname a ,v$rollstat b
where a.usn=b.usn; --创建撤销表空间
create undo tablespace undotbs2
datafile 'e:\oradata\undo\undotbs2.dbf'
size 200M autoextend on next 50M; --使用撤销表空间
alter system set undo_tablespace = undotbs2;
Oracle创建、管理撤销表空间的更多相关文章
- Oracle创建新undo表空间最佳实践(包含段检查)
在处理一则ORA-600 [4194]案例时,参考MOS文档:Step by step to resolve ORA-600 4194 4193 4197 on database crash (文档 ...
- Oracle创建用户、表空间并设置权限
代码: //dba账户登录 sqlplus 请输入用户名:dpp_data as sysdba 请输入口令:dpp_data //创建账号 create user techrpt_data ident ...
- 用sqlplus为oracle创建用户和表空间<转>
用Oracle10g自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的,本文要介绍的是另一种方法,使用Oracle 9i所带的命令行工具:SQLPLUS来创建表空间 ...
- Linux环境下oracle创建和删除表空间及用户
#su - oracle $ sqlplus /nolog SQL> connect / as sysdba --//创建临时表空间 create temporary tablespace te ...
- 用sqlplus为oracle创建用户和表空间
用Oracle自带的企业管理器或PL/SQL图形化的方法创建表空间和用户以及分配权限是相对比较简单的, 本文要介绍的是另一种方法就是使用Oracle所带的命令行工具SQLPLUS来创建表空间. 打开S ...
- ORACLE创建用户,表空间,并且导出数据,导出表
1.创建用户: create user toptea2 identified by "用户名" 2.给用户授权 grant create session to 用户名; grant ...
- oracle创建用户、表空间、临时表空间、分配权限步骤详解
首先登陆管理员账号,或者有DBA权限的用户,接下来依次: --查询所有用户select * from dba_users;--创建新用户create user gpmgt identified by ...
- Oracle创建用户和表空间
一.概述 1.数据库实际管理中,不同业务系统需要使用'不同的用户'进行管理维护和使用,这样做把业务数据和系统数据独立分开管理,利于数据库系统管理: 2.在数据库中创建业务系统用户时候,建议为用户创建指 ...
- Oracle创建、删除表空间、用户
1.创建临时表空间 create temporary tablespace linshi tempfile 'e:\linshi.dbf' size 50m autoextend on next 50 ...
随机推荐
- Django入门实战【3步曲】
环境准备 junhongdeMacBook-Air:site-packages junhongchen$ python -V Python 2.7.10 junhongdeMacBook-Air: ...
- Java 测试驱动开发--“井字游戏” 游戏实战
TDD 介绍 TDD是测试驱动开发(Test-Driven Development)的英文简称,是敏捷开发中的一项核心实践和技术,也是一种设计方法论.TDD的原理是在开发功能代码之前,先编写单元测试用 ...
- 第二章:Python基础の快速认识基本数据类型和操作实战
本课主题 字符串和操作实战 二进制操作实战 List 列表和操作实战 Tuple 元組和操作实战 Dict 字典和操作实战 作業需求 引言 这遍文章简单介绍了 Python 字符串和集合的方法和应用, ...
- 利用scrapy框架进行爬虫
今天一个网友问爬虫知识,自己把许多小细节都忘了,很惭愧,所以这里写一下大概的步骤,主要是自己巩固一下知识,顺便复习一下.(scrapy框架有一个好处,就是可以爬取https的内容) [爬取的是杨子晚报 ...
- linux搭建SS服务
基本准备: 购买主机:www.virmach.com LINUX系统操作经验:vim , apt-get 等命令的使用 putty.exe连接ssh工具的使用 开始 使用putty连接上去,并输入密码 ...
- H5开发中的故障
本篇博文会不断的收录我在做H5页面时遇到的问题以及解决方案,当然有的问题,我也没有遇到好的解决方案,所以如果你有解决的办法,请务必不吝赐教! H5开发中的故障 微信APP返回按钮不刷新页面 ...
- 闲来无事,把node又拾起来看看
处在国企单位,整天闲的要死要死的,民族的花朵都快枯萎了 哎呀呀,打起精神.......早睡早起,多看书...开始进入苦读状态,苦练武功,争取有朝一日报效祖国...哈哈 开玩笑的 开始看书吧 记得N ...
- vue的爬坑之路-------axios中this的指向问题
在自己的vue小项目中使用了axios这个插件,但是发现在axios请求数据成功之后的回调函数中this并不是指向当前vue实例, 在如下代码中 谷歌浏览器中报 this.goodsArr 未被定义 ...
- 五分钟学习React(一): 什么是React
在前端的世界里,我们要处理的文件不是太多,而是太少.每天开发项目将html.css.js.图片.字体文件都像大杂烩一般加载都网页上.当应用变得越来越臃肿的时候,会发现js用了那么多全局变量,css的继 ...
- EMMC与nand flash的区别【转】
1.NAND Flash 是一种存储介质,要在上面读写数据,外部要加主控和电路设计. 2.eMMC是NAND flash+主控IC ,对外的接口协议与SD.TF卡类似:对厂家而言简化了电路设计,降低了 ...