当前位置:文档之家› Db2 DMS 表空间管理

Db2 DMS 表空间管理

Db2 DMS 表空间管理
Db2 DMS 表空间管理

D B2DMS方式表空间管理指南

在DB2数据库系统中存在两种类型的基本表空间:系统管理的空间(SMS)和数据库管理的空间(DMS)。

与SMS表空间相关联的容器是文件系统目录,而这些目录中的文件会随着表空间中对象的增长而增长。文件会增加至达到其中一个容器上的文件系统限制或达到数据库的表空间大小限制。

DMS表空间由文件容器或原始设备容器组成,它们的大小是在将容器指定给表空间时设置的。当容器中的所有空间都已被使用时,则认为表空间已满。但是,与SMS不同,您可以使用ALTER TABLESPACE语句来添加或扩展容器,从而允许将更多的存储器空间提供给表空间。DMS表空间还具有称为“自动调整大小”的功能。当可以自动调整大小的DMS表空间中的空间被消耗时,DB2数据库系统可能回扩展一个或多个文件容器。SMS表空间具有类似于自动增长的功能但术语“自动调整大小”专门用于DMS。

启用和禁用自动调整大小(AUTORESIZE)

缺省情况下,不会对DMS表空间启用自动调整大小功能。下列语句创建不启用自动调整大小功能的DMS表空间:

CREATE TABLESPACE DMS1MANAGED BY DATABASE

USING(FILE'/db2files/DMS1'10M)

要启用自动调整大小功能,将AUTORESIZE YES子句指定为CREATE TABLESPACE 语句的一部分:

CREATE TABLESPACE DMS1MANAGED BY DATABASE

USING(FILE'/db2files/DMS1'10M)AUTORESIZE YES

启用或禁用自动调整大小功能

在已创建DMS表空间之后,还可以通过在ALTER TABLESPACE语句上使用

AUTORESIZE子句来启用或禁用自动调整大小功能:

ALTER TABLESPACE DMS1AUTORESIZE YES

ALTER TABLESPACE DMS1AUTORESIZE NO

有两个其他属性(MAXSIZE和INCREASESIZE)与自动调整大小的表空间相关联。

调整最大大小(MAXSIZE)

CREATE TABLESPACE语句上的MAXSIZE子句定义表空间的最大大小。例如,以下语句创建可增长至100兆字节(如果数据库有多个数据库分区,则是每个数据库分区的大小)的表空间:

CREATE TABLESPACE DMS1MANAGED BY DATABASE

USING(FILE'/db2files/DMS1'10M)

AUTORESIZE YES MAXSIZE100MMAXSIZE NONE

子句指定表空间没有最大限制。表空间可以一直增长,直到达到文件系统限制或DB2表空间限制(请参阅SQL Reference中的SQL Limits部分)。如果在启用自动调整大小功能时不指定MAXSIZE子句,则使用缺省值无最大大小限制。

ALTER TABLESPACE语句更改已经启用了自动调整大小的表空间的MAXSIZE的值。例如:

ALTER TABLESPACE DMS1MAXSIZE1G

ALTER TABLESPACE DMS1MAXSIZE NONE

如果指定了最大大小,则DB2强制使用的实际值可能会比提供的值略小,原因是DB2会尝试使容器增长保持一致。不可能通过使两个数量并准确达到最大值来扩展容器。

增大大小(INCREASESIZE)

当表空间中已没有空闲扩展数据块但请求了一个或多个扩展数据块时,CREATE TABLESPACE语句上的INCREASESIZE子句定义用来增大表空间的空间量。可以显式大小或百分比的形式指定该值。例如:

CREATE TABLESPACE DMS1MANAGED BY DATABASE

USING(FILE'/db2files/DMS1'10M)

AUTORESIZE YES INCREASESIZE5M

CREATE TABLESPACE DMS1MANAGED BY DATABASE

USING(FILE'/db2files/DMS1'10M)

AUTORESIZE YES INCREASESIZE50PERCENT

百分比值意味着每次需要增大表空间时都要计算增大大小,并且增大量基于增大时表空间大小的百分比。例如,如果表空间大小是20兆字节而增大大小是百分之50,则第一次表空间增大10兆字节(增大到大小为30兆字节),下一次增大15兆字节。

如果在启用了自动调整大小功能时未指定INCREASESIZE子句,则DB2确定要使用的适当值,该值在表空间的存在期间可能会有变化。与AUTORESIZE和MAXSIZE一样,可以使用ALTER TABLESPACE语句更改INCREASESIZE的值。

如果指定了增长大小,则DB2使用的实际值可能会与提供的值稍有不同。对所用值进行这种调整是为了使表空间中各容器的增大保持一致。

如何扩展表空间

对于可以自动调整大小的表空间,当所有现有空间都已被使用并请求了更多空间时,DB2会尝试增大该表空间的大小。DB2确定可以扩展表空间中的哪些容器以便不需要进行重新平衡。DB2只扩展位于表空间图(该图描述表空间的存储器布局)的最后范围内的那些容器,并且对它们扩展相同的数量。

例如,考虑下列语句:

CREATE TABLESPACE TS1MANAGED BY DATABASE

USING(FILE'C:\TS1CONT'1000,FILE'D:\TS1CONT'1000,

FILE'E:\TS1CONT'2000,FILE'F:\TS1CONT'2000)

EXTENTSIZE4

AUTORESIZE YES

如果创建表空间时所有容器的大小都一样,在这种情况下,DB2扩展每一个容器。要防止限制为只扩展一小部分容器,创建表空间时使各容器大小相等。如在MAXSIZE部分中所讨论的那样,可以指定对表空间大小的最大限制,也可以提供NONE值以便可无限增大表空间。(当使用NONE或无限制时,上限实际上是由文件系统或DB2表空间限制定义的。)DB2不会尝试增大表空间至超过上限。但是,在达到上限之前,尝试增大容器可能会因为文件系统已满而失败。在这种情况下,DB2不会在增大表空间并将会向应用程序返回“空间不足”条件。

解决此情况有两种方法:

增大已满文件系统上可用的空间量。

对表空间执行一些容器操作,使得这些容器不再位于表空间图的最后。使正被讨论的容器不再处于表空间图的最后的最简易方法是将新的分割集添加至具有一组新容器的表空间。最佳示例确保所有容器大小相等。可以使用ALTER TABLESPACE语句的STRIPE SET子句来添加新的分割集。通过添加新的分割集,就会将新的范围添加至表空间图。借助于新的范围,DB2自动尝试扩展的容器就会处于此新的分割集中,而旧的容器保持不变。

注:

当暂挂用户启动的容器操作或者正在执行后续生新平衡时,会禁用自动调整大小功能,直到落实了操作或重新平衡完成为止。

例如,表空间具有三个大小一样的容器,每个容器都位于它自己的文件系统上。当对表空间执行一些操作时,DB2会自动扩展这三个容器。最后,其中一个文件系统变满了,对应的容器就不能再增大了。如果该文件系统上不能再提供更多的可用空间,则必须对表空间执行容器操作,使得存在问题的容器不再处于表空间图的最后范围内。在这种情况下,您可以添加新的分割集并指定两个两个容器(仍然具有空间的每个文件系统上一个),也可以指定多一些或少一些容器(再次确保要添加的每个窗口大小一样并且要使用的每个文件系统上有足够的空间)。当DB2尝试增大表空间的大小时,现在它将尝试扩展这些新分割集中的容器而不是旧容器。

上面描述的情况仅适用于未启用自动调整大小的自动存储器表空间。如果自动存储器表空间启用了自动调整大小,则DB2会通过添加容器的新分割集来自动处理文件系统变满的情况。

监视

对DMS表空间自动调整大小是作为表空间监视器快照输出的一部分显示的。还会显示增大大小值和最大大小值:

启用自动调整大小=Yes或No

当前表空间大小(字节)=###

最大表空间大小(字节)=###或NONE

增加大小(字节)=###

增加大小(百分比)=###

上一次成功调整大小的时间=YYYY/MM/DD HH:MM:SS.SSSSSS

上一次调整大小尝试失败=Yes或No使用说明

自动调整表空间大小具有下列含义:

启用了自动调整大小的表空间具有DB2通用数据库?版本8.2.1或更早版本不能识别的相关元数据。在这些版本上尝试使用启用了自动调整大小的表空间的数据库会产生故障(极有可能会返回SQL0980C或SQL0902C错误)。可能会对尝试连接至数据库或尝试复原数据库发送错误。如果表空间启用了自动调整大小,则对这些表空间禁用“自动调整大小”功能会除去元数据,从而允许在DB2版本8.2.1或更早版本上使用该数据库。

禁用“自动调整大小”功能时,如果后来再启用此功能,则与INCREASESIZE和MAXSIZE 相关联的值会丢失。不能对使用原始设备容器的表空间启用此功能。同样,不能将原始设备容器添加至可以自动调整大小的表空间。这些操作会产生错误(SQL0109N)。如果需要添加原始设备容器,则必须首先禁用此功能。

重定向复原操作不能更改容器定义以包括原始设备容器(SQL0109N)。

由于最大大小限制了DB2自动增大表空间的方式,所以最大大小也限制了用户可增大表空间的方式。换言之,当执行向表空间添加空间的操作时,生成的大小必须小于或等于最大大

小。可以使用ALTER TABLESPACE语句的ADD、EXTEND、RESIZE或BEGIN NEW STRIPE SET子句来添加空间。

常用扩容方法

DB2现有表空间扩容方法

1)直接添加一个容器

db2"ALTER TABLESPACE PAYROLL ADD(DEVICE'/dev/rhdisk9'10000)"

加容器之后DB2会有一个自动balance的过程,可能会持续几个小时.

2)改变现有容器的大小(该方法不会触发balance,但如果表空间建立在裸设备上,则要扩冲裸设备空间):

db2"ALTER TABLESPACE TS1RESIZE(FILE'/conts/cont0'2000,DEVICE'/dev/rcont1'2000,FILE'cont2' 2000)"

此种方式就是将原有的相应容器都改成大小是2000页

db2"ALTER TABLESPACE TS1RESIZE(ALL2000)"

此方式就是把表空间中所有的容器大小都改成2000页

db2"ALTER TABLESPACE TS1EXTEND(FILE'/conts/cont0'1000,DEVICE'/dev/rcont1'1000,FILE'cont2' 1000)"

此种方式就是将相应的容器都扩大1000页,也就是增加1000页。

db2"ALTER TABLESPACE DATA_TS EXTEND(ALL1000)"

这种方式就是将所有的容器都增加1000页

来源于互联网、root@https://www.doczj.com/doc/da4401833.html,收集整理、盗版不纠

Oracle临时表空间管理及清理策略

正常来说,在完成Select语句、create index等一些使用TEMP表空间的排序操作后,Oracle是会自动释放掉临时段a的。但有些有侯我们则会遇 到临时段没有被释放,TEMP表空间几乎满的状况,甚至是我们重启了数据库仍没有解决问题。这个问题在论坛中也常被网友问到,下面我总结 一下,给出几种处理方法。 法一、重启库 库重启时,Smon进程会完成临时段释放,TEMP表空间的清理操作,不过很多的时侯我们的库是不允许down的,所以这种方法缺少了一点的 应用机会,不过这种方法还是很好用的。 法二、Metalink给出的一个方法 修改一下TEMP表空间的storage参数,让Smon进程观注一下临时段,从而达到清理和TEMP表空间的目的。 SQL>alter tablespace temp increase 1; SQL>alter tablespace temp increase 0; 法三、我常用的一个方法,具体内容如下: 1、使用如下语句a查看一下认谁在用临时段 SELECT username, sid, serial#, sql_address, machine, program, tablespace, segtype, contents

FROM v$session se, v$sort_usage su WHERE se.saddr=su.session_addr 2、那些正在使用临时段的进程 SQL>Alter system kill session 'sid,serial#'; 3、把TEMP表空间回缩一下 SQL>Alter tablespace TEMP coalesce; 法四、使用诊断事件的一种方法,也是被我认为是“杀手锏”的一种方法 1、确定TEMP表空间的ts# SQL>select ts#, name from sys.ts$ ; TS# NAME ----------------------- 0 SYSYEM 1 RBS 2 USERS 3* TEMP 4 TOOLS 5 INDX 6 DRSYS 2、执行清理操作

Oracle tablespace创建参数

Oracle tablespace创建参数 ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中,也就是用户有空间的使用权,才能创建用户对象.否则是不充许创建对象,因为就是想创建对象,如表,索引等,也没有地方存放,Oracle会提示:没有存储配额.因此,在创建对象之前,首先要分配存储空间. 分配存储,就要创建表空间: 创建表空间示例如下: CREATE TABLESPACE "SAMPLE" LOGGING DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SIZE 5M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO 上面的语句分以下几部分: 第一: CREATE TABLESPACE "SAMPLE" 创建一个名为 "SAMPLE" 的表空间. 对表空间的命名,遵守Oracle 的命名规范就可了. ORACLE可以创建的表空间有三种类型: (1)TEMPORARY: 临时表空间,用于临时数据的存放; 创建临时表空间的语法如下: CREATE TEMPORARY TABLESPACE "SAMPLE"...... (2)UNDO : 还原表空间. 用于存入重做日志文件. 创建还原表空间的语法如下: CREATE UNDO TABLESPACE "SAMPLE"...... (3)用户表空间: 最重要,也是用于存放用户数据表空间 可以直接写成: CREATE TABLESPACE "SAMPLE" TEMPORARY 和 UNDO 表空间是ORACLE 管理的特殊的表空间.只用于存放系统相关数据. 第二: LOGGING 有 NOLOGGING 和 LOGGING 两个选项, NOLOGGING: 创建表空间时,不创建重做日志. LOGGING 和NOLOGGING正好相反, 就是在创建表空间时生成重做日志. 用NOLOGGING时,好处在于创建时不用生成日志,这样表空间的创建较快,但是没能日志,数据丢失后,不能恢复,但是一般我们在创建表空间时,是没有数据的,按通常的做法,是建完表空间,并导入数据后,是要对数据做备份的,所以通常不需要表空间的创建日志,因此,在创建表空间时,选择NOLOGGING,以加快表空间的创建速度. 第三: DATAFILE 用于指定数据文件的具体位置和大小. 如: DATAFILE 'D:\ORACLE\ORADATA\ORA92\LUNTAN.ora' SIZE 5M

oracle表空间管理

实验一数据文件和表空间的管理 【开发语言及实现平台或实验环境】 Oracle10g 【实验目的】 (1)熟悉ORACLE的环境,学习使用SQL*Plus与ORACLE进行交互;(2)掌握连接数据库以及断开连接的方法; (3)掌握数据文件和控制文件的管理基本命令 (4)掌握表空间管理的基本命令 【实验原理】 1.SQL*Plus命令

2.数据文件的管理 (1)创建数据文件 数据文件依附于表空间而存在,创建数据文件就是向表空间添加文件 在创建数据文件时应该根据文件数据量的大小确定文件的大小以及文件的增长方式。 语法: ALTER TABLESPACE…ADD DA TAFILE ALTER TABLESPACE…ADD TEMPFILE 例:向ORCL数据库的USERS表空间中添加一个大小为10 MB的数据文件。 ALTER TABLESPACE USERS ADD DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS02.DBF' SIZE 10M; (2)修改数据文件大小 创建后修改数据文件为自动增长: AUTOEXTEND ON NEXT …MAXSIZE…|UNLIMITED 手工改变数据文件的大小 ALTER DA TABASE DA TAFILE…RESIZE… 例:为ORCL数据库的USERS表空间添加一个自动增长的数据文件。 ALTER TABLESPACE USERS ADD DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS03.DBF' SIZE 10M AUTOEXTEND ON NEXT 512K MAXSIZE 50M; 例:修改ORCL数据库USERS表空间的数据文件USERS02.DBF为自动增长方式。ALTER DA TABASE DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS02.DBF ' AUTOEXTEND ON NEXT 512K MAXSIZE UNLIMITED; 例:取消ORCL数据库USERS表空间的数据文件USERS02.DBF的自动增长方式。ALTER DA TABASE DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS02.DBF ' AUTOEXTEND OFF; 例:将ORCL数据库USERS表空间的数据文件USERS02.DBF大小设置为8 MB 。ALTER DA TABASE DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS02.DBF' RESIZE 8M; (3)删除数据文件 删除某个表空间中的某个空数据文件 ALTER TABLESPACE…DROP DA TAFILE 例:删除USERS表空间中的数据文件USERS003.DBF。 ALTER TABLESPACE USERS DROP DA TAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADA TA\ORCL\USERS003.DBF'; 3.表空间的管理

Oracle表空间操作详解

Oracle表空间操作详解 1.创建表空间: createtablespacedatafile '' size autoextend on next maxsize eg: createtablespace sales datafile 'c:\1.txt' size 10m autoextend on next 1m maxsize 100m 2.为表空间增加数据文件: altertablespace add datafile 'filepath' size autoextend on next maxsizefilemaxsize[unlimited]; eg: altertablespace sales datafile 'c:\2.txt' size 10m autoextend on next 1m maxsize unlimited 3.调整表空间: alter database datafile 'filepath' resize ;--重置表空间的大小 eg: alter database datafile 'c:\2.txt' resize 10m 在实际使用中我们经常会遇到oracle某个表空间占用了大量的空间而其中的数据量却只占用了少量空间,此时我们可以用ALTER DATABASE DATAFILE '***.dbf' RESIZE nnM的命令来收缩表空间,但在收缩的过程中会遇到ora-03297错误,表示在所定义的空间之后有数据存在,不能收缩,此时的解决办法有: (1). 先估算该表空间内各个数据文件的空间使用情况: SQL>select file#,name from v$datafile;

Oracle如何创建表空间-2012年5月1日

oracle创建表空间 SYS用户在CMD下以DBA身份登陆: 打开黑窗口 在CMD中打sqlplus /no log 然后再 conn / as sysdba // 分为四步 //第1步:创建临时表空间,路径自己换 create temporary tablespace user_temp tempfile 'E:\AProgramMy\Oracle11g\tablespace\user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; //第2步:创建数据表空间,路径自己换 create tablespace user_data logging datafile 'E:\AProgramMy\Oracle11g\tablespace\user_data.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; (删除表空间: DROP TABLESPACE user_data INCLUDING CONTENTS AND DATAFILES; )

//第3步:创建用户并指定表空间 create user yzk identified by yzk default tablespace user_data temporary tablespace user_temp; (删除用户: drop user yzk cascade; ) //第4步:给用户授予权限,没有create sessio n权限就不能登录! grant connect,resource,create sessio n,create table to yzk; (撤销权限: revoke connect,resource,create session,create table from yzk; ) 查看已创建的表空间:select tablespace_name,status from dba_tablespaces; 这样就可以用此用户登录了,登录后是没有表的(如果管理员登录会有很多乱七八糟的表看着十分不爽,都不知道哪个是自己创建的)因为用户和表空间都是新的所以什么也没,此时就可以新建表了,终于解决了我的疑问,爽! --------------------------------------------------------------------------------- //以后以该用户登录,创建的任何数据库对象都属于user_temp 和user_data 表空间, 这就不用在每创建一个对象给其指定表空间了 查看创建的表空间的名称和状态: select tablespace_name,status from dba_tablespaces; 撤权: revoke 权限... from 用户名; 删除用户命令 drop user user_name cascade; 删除表空间 DROP TABLESPACE data01 INCLUDING CONTENTS AND

实验一表空间管理

实验一表空间管理 一、实验目的 (1)了解表空间的区、段管理方式; (2)熟练掌握表空间状态查询、表空间创建、修改、扩展、删 除等基本操作; (3)掌握数据文件的创建方法; (4)了解数据文件与表空间的关系; 二、主要仪器设备 Windows系统、Oracle 10g、SQL*PLUS。 三、实验内容 表空间是Oracle数据库的逻辑概念,用户创建的对象在逻辑上都存放在表空间里,所以用户的活动是在表空间之上的。管理表空间,可以分为创建、修改和删除。 四、操作方法与实验步骤 (1)使用autoallocate方式创建表空间: (2)使用uniform区分配方式创建表空间:

(3)使用auto段管理方式创建数据库: (4)创建临时表空间及撤销表空间: (5)修改表空间: 增加文件: 修改大小: 修改状态使其脱机: (6)删除表空间: (7)查询创建的某些表空间的信息:

五、问题解答 (1)在创建表空间时,其对应的物理数据文件需要提前创建吗? 新建表空间时,不需要提前创建对应的数据文件,而且也不能单独创建不属于任何表空间的数据文件。一个数据文件一旦创建成功,那么它必定对应一个表空间。 (2)一个表空间可以有多个数据文件吗?一个数据文件可以存放多个表空间吗? 在例子中我们可以看到,一个表空间可以对应多个数据文件,但是一个数据文件只能属于一个表空间。 六、思考题 (1)SYSYTEM表空间、SYSAUX表空间、TEMP表空间、UNDOTBS1表空间可以被脱机吗? 在数据库打开后,需要用到system、sysaux系统表空间,因此它们不可以被脱机,否则数据库不可用。TEMP表空间也不可以被脱机,UNDOTBS1可以被设置为脱机。

Oracle存储空间管理及应用方案

Oracle存储空间管理及应用 摘要:本文详细介绍了Oracle存储架构及其存储体系的管理和应用,包括表空间、回滚段、临时表等,还对其在管理和应用时常见的错误进行了分析探讨 主题词:Oracle技术表空间数据文件回滚段临时表错误 一、引言 数据库空间的有效使用和维护不仅是数据库管理的重要工作,也是大多数开发人员所关心的内容,它直接关系到数据库性能的发挥。 Oracle提供了不少方法用于数据空间的使用、监控和维护,同时也在各版本中陆续对这方面的功能进行了增强,目的在于简化这方面工作的复杂度,提高应用的运行效率。 本文希望通过系统地介绍这方面的有关概念,让大家能更好地规划使用数据空间,正确使用Oracle提供的有关功能特性,提高应用的执行效率。 二、O racle数据库的存储体系及有关概念 2.1 Oracle数据库的逻辑结构 从应用者的角度来考察数据库的组成。自下向上,数据库的逻辑结构共有6层:

2.2 Oracle数据库的存储结构 数据库的存储结构指逻辑结构在物理上的实现,共有3层 其中: 数据文件:用于存放所有的数据,以DBF为扩展名。 日志文件:记录了对数据库进行的所有操作,以LOG为扩展名。 控制文件:记录了数据库所有文件的控制信息,以CTL为扩展名。 综上,Oracle数据库的数据存储空间在逻辑上分为多个表空间,每个表空间由系统中的一个或多个物理数据文件构成;Oracle存储数据的基本单位是块,其大小在建库时由DB_BLOCK_SIZE参数确定,一个或多个连续的块构成一个区间(EXTENT),它作为数据对象存储的基本单位来使用。在Oracle中,每个基本数据对象使用的空间称为段(SEGMENT),段存放在唯一的表空间上,每个段实际上是一系列区片(更为准确地是数据块)的集合。每个简单数据对象对应一个段;对于分区对象如分区表、索引,则每个(子)

Oracle 11g表空间——创建和扩展(永久)表空间

Oracle 11g表空间——创建和扩展(永久)表空间 本文内容 创建(永久)表空间 查看表空间 扩展表空间 创建(永久)表空间 Oracle 按照区和段空间进行管理表空间。 区管理方式 - 针对区的分配方式的不同,有两种方式:字典管理方式 (dictionary-managed tablespace,DMT)和本地管理方式(local-managed tablespace,LMT)。Oracle 10g 开始强烈建议使用 LMT 方式。从 Oracle 9i 开始,创建表空间时默认使用 LMT。 其中,LMT 区的分配方式: 统一(UNIFORM)- 统一分配。指定表空间中所有区的大小都相同。默认值是 1MB。自动(AUTOALLOCATE 或 SYSTEM)- 自动分配。指定有 Oracle 系统来自动管理区的大小。这是默认设置。 段管理方式– LMT 方式,除了可以指定区的分配方式外,还可以指定段的管理方式。段空间管理方式主要是指 Oracle 用来管理段中已用数据块和空闲数据块的机制。分为两种: 手动(MANUAL)- Oracle 将使用空闲列表(free list)管理段的已用数据块和空闲数据块。这是传统的段空间管理方式,为了与以前的版本兼容。 自动(AUTO)- Oracle 将使用位图(bitmap)来管理段的已用数据块和空闲数据块。通过位图中单元的取值判断段中的数据块是否可用。 字典管理方式没有段管理。 下面示例演示用本地管理方式创建表空间。这是 Oracle 推荐的方式。 示例 1:使用 AUTOALLOCATE 区分配方式。创建表空间 mytbs01,数据文件是 D:\oracledata\mytbs01_1.dbf,大小为 2M,并指定区分配方式为 AUTOALLOCATE。create tablespace mytbs01 datafile 'D:\oracledata\mytbs01_1.dbf' size 2M

Oracle表空间和数据文件的管理

第六章表空间和数据文件的管理 6.1 Oracle引入逻辑结构的目的 Oracle数据库管理系统并没有像不少其它数据库管理系统那样直接地操作数据文件,而是引入一组逻辑结构。如图6-1所示。 图6-1 图6-1的虚线左边为逻辑结构,右边为物理结构。与计算机原理或计算机操作系统中所讲的有些不同,在Oracle数据库中,逻辑结构为Oracle引入的结构,而物理结构为操作系统所拥有的结构。 曾有不少学生问过我同样的一个问题,那就是Oracle为什么要引入逻辑结构呢? 首先可能是为了增加Oracle的可移植性。Oracle公司声称它的Oracle数据库是与IT 平台无关的,即在某一厂家的某个操作系统上开发的Oracle数据库(包括应用程序等)可以几乎不加修改地移植到另一厂家的另外的操作系统上。要做到这一点就不能直接操作数据文件,因为数据文件是跟操作系统相关的。 其次可能是为了减少Oracle从业人员学习的难度。因为有了逻辑结构Oracle的从业人员就可以只对逻辑结构进行操作,而在所有的IT平台上逻辑结构的操作都几乎完全相同,至于从逻辑结构到物理结构的映射(转换)是由Oracle数据库管理系统来完成的。 6.2 Oracle数据库中存储结构之间的关系 其实图6-1类似于一个Oracle数据库的存储结构之间关系的实体-关系图。如果读者学过实体-关系模型(E-R模型)的话,从图6-1中可以很容易地得到Oracle数据库中存储结构之间的关系。为了帮助那些没有学过E-R模型的读者理解图6-1,也是为了帮助那些

学过但已经忘的差不多了的读者恢复一下记忆,在下面对E-R模型和图6-1给出一些简单的解释。 在图6-1中,园角型方框为实体,实线表示关系,单线表示一的关系,三条线(鹰爪)表示多的关系。于是可以得到: 每个数据库是由一个或多个表空间所组成(至少一个)。 每个表空间基于一个或多个操作系统的数据文件(至少一个)。 每个表空间中可以存放有零个或多个段(Segment)。 每个段是由一个或多个区段(Extent)所组成。 每个区段是由一个或多个连续的Oracle数据块所组成。 每个Oracle数据块是由一个或多个连续的操作系统数据块所组成。 每个操作系统数据文件是由一个或多个区段(Extent)所组成。 每个操作系统数据文件是由一个或多个操作系统数据块所组成。 有关段,区段,和Oracle数据块等我们在接下来的章节中要详细地介绍。 6.3 表空间和数据文件之间的关系及表空间的分类 通过前面的讨论可知:Oracle将数据逻辑地存放在表空间里,而物理地存放在数据文件里。表空间(Tablespaces)在任何一个时刻只能属于一个数据库,但是反过来并不成立,因为一个数据库一般都有多个表空间。每个表空间都是由一个或多个操作系统的数据文件所组成,但是一个操作系统的数据文件只能属于一个表空间。 表空间可以被进一步划分成一些更小的逻辑存储单位。在一个Oracle数据库中,每个数据文件(Data files)可以而且只能属于一个表空间和一个数据库。数据文件实际上是存储模式对象数据的一个容器/仓库。 在一个Oracle数据库中一般有两类表空间,他们是系统(SYSTEM)表空间和非系统(Non-SYSTEM)表空间。 系统(SYSTEM)表空间是与数据库一起建立的,在系统表空间中存有数据字典,在系统表空间中还包含了系统还原(回滚)段。虽然在系统表空间中可以存放用户数据,但考虑到Oracle系统的效率和管理上的方便,在系统表空间上不应该存放任何用户数据。非系统(Non-SYSTEM)表空间可以由数据库管理员创建,在非系统表空间中存储一些单独的段,这些段可以是用户的数据段,索引段,还原段,和临时段等。引入非系统表空间可以方便磁盘空间的管理,也可以更好地控制分配给用户磁盘空间的数量。引入非系统表空间还可以将静态数据和动态数据有效地分开,也可以按照备份的要求将数据分开存放。使用如下的命令创建一个非系统表空间:CREATE TABLESPACE表空间名 [DATAFILE子句] [MINIMUM EXTENT 正整数[K|M]] [BLOCKSIZE正整数[K]] [LOGGING|NOLOGGING] [DEFAULT 存储子句] [ONLINE|OFFLINE] [PERMANENT|TEMPORARY] [区段管理子句] [段管理子句] 在这里对以上命令中的一些子句和选项给出进一步的解释: 表空间名:所要创建的表空间名。

Oracle tablespace (表空间)的创建、删除、修改、扩展及检查等

Oracle tablespace (表空间)的创建、删除、修改、扩展及检查等 oracle 数据库表空间的作用 1.决定数据库实体的空间分配; 2.设置数据库用户的空间份额; 3.控制数据库部分数据的可用性; 4.分布数据于不同的设备之间以改善性能; 5.备份和恢复数据。 --oracle 可以创建的表空间有三种类型: 1.temporary: 临时表空间,用于临时数据的存放; create temporary tablespace "sample"...... 2.undo : 还原表空间. 用于存入重做日志文件. create undo tablespace "sample"...... 3.用户表空间: 最重要,也是用于存放用户数据表空间 create tablespace "sample"...... --注:temporary 和undo 表空间是oracle 管理的特殊的表空间.只用于存放系统相关数据. --oracle 创建表空间应该授予的权限 1.被授予关于一个或多个表空间中的resource特权; 2.被指定缺省表空间; 3.被分配指定表空间的存储空间使用份额; 4.被指定缺省临时段表空间。 select tablespace_name "表空间名称",status "状态",extent_management "区管理方式",allocation_type "磁盘扩展管理方式",segment_space_management "段管理方式" from dba_tablespaces; --查询各个表空间的区、段管理方式 --1、建立表空间 --语法格式: create tablespace 表空间名

Oracle用户管理、表空间、临时表空间、索引学习

一、用户的创建和管理 创建和删除用户是Oracle用户管理中的常见操作,但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识。掌握还Oracle用户的授权操作和原理,可以有效提升我们的工作效率。Oracle数据库的权限系统分为系统权限与对象权限。系统权限( Database System Privilege )可以让用户执行特定的命令集。例如,CREATE TABLE权限允许用户创建表,GRANT ANY PRIVILEGE 权限允许用户授予任何系统权限。对象权限( Database Object Privilege )可以让用户能够对各个对象进行某些操作。例如DELETE权限允许用户删除表或视图的行,SELECT权限允许用户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。 每个Oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。Oracle 角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。一个用户也可以直接给其他用户授权。 1、创建用户 Oracle内部有两个建好的用户:SYSTEM和SYS。用户可直接登录到SYSTEM用户以创建其他用户,因为SYSTEM具有创建别的用户的权限。在安装Oracle时,用户或系统管理员首先可以为自己建立一个用户。例如: create user user01 identified by u01; 该命令还可以用来设置其他权限,详细情况参见自学资料。要改变一个口令,可以使用alter user命令: alter user user01 identified by usr01; 现在user01的口令已由“u01”改为“usr01”。 2、删除用户 删除用户,可以使用drop user命令,如下所示: drop user user01; 如果用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字CASCADE,可删除用户所有的对象,然后再删除用户。下面的例子用来删除用户与其对象: drop user user01 CASCADE; 3、三种标准角色

oracle数据库建表空间语句汇总

建立表空间和用户的步骤: 用户 建立:create user 用户名identified by "密码"; 授权:grant create session to 用户名; grant create table to 用户名; grant create tablespace to 用户名; grant create view to 用户名; 表空间 建立表空间(一般建N个存数据的表空间和一个索引空间): create tablespace 表空间名 datafile ' 路径(要先建好路径)\***.dbf ' size *M tempfile ' 路径\***.dbf ' size *M autoextend on --自动增长 --还有一些定义大小的命令,看需要 default storage( initial 100K, next 100k, ); 用户权限 授予用户使用表空间的权限: alter user 用户名quota unlimited on 表空间; 或alter user 用户名quota *M on 表空间; --表空间 CREATE TABLESPACE deej DA TAFILE 'E:\database\deej.dbf' size 2G EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; --索引表空间 CREATE TABLESPACE sdt_Index DA TAFILE 'F:\tablespace\demo' size 512M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO; --2.建用户 create user deej identified by deej default tablespace deej; --3.赋权

oracle创建表空间命令

eclipse+webservice开发实例 spring mvc数据绑定 oracle11g 创建表空间和用户授权 2013-01-27 10:54:18| 分类:默认分类| 标签:|举报|字号大中小订阅 *分为四步*/ /*第1步:创建临时表空间*/ create temporary tablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第2步:创建数据表空间*/ create tablespace AKJY_DATA logging datafile 'E:\oracleDATA\akjy_data.dbf' size 50m autoextend on next 50m maxsize 2048m extent management local; eclipse+webservice开发实例 spring mvc数据绑定 create tablespace DATA datafile 'D:\Program Files\oracle11g\DATA.dbf’size 1G autoextend on next 50m maxsize 20480m oracle11g 创建表空间和用户授权 2013-01-27 10:54:18| 分类:默认分类| 标签:|举报|字号大中小订阅 *分为四步*/ /*第1步:创建临时表空间*/ create temporary tablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; /*第2步:创建数据表空间*/

ORACLE的逻辑存储管理

ORACLE的逻辑存储管理 Oracle在逻辑存储上分4个粒度:表空间Tablespace、段Segment、盘区Extent、块Block。 Oracle数据库在逻辑上是由多个表间组成的,表空间中存储的对象叫段,段由区组成,区是磁盘分配的最小单位。 每个区的大小是数据块大小的整数倍,区的大小可以不相同。 数据块是数据库中最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。 一、数据库由一个或多个表空间组成; 二、表空间由一个或多个数据文件组成,一个表空间包含多个段; 三、段由一个或多个区组成(Oracle的分区表可以包括多个分区,每个分区都是一个独立的段);一个段对应唯一的表空间。 四、区是数据文件中一个连续的分配空间,由一个或多个块组成; 五、块是数据库中最小、最基本的单位,是数据库使用的最小的I/O单元。 一、块(Block) 数据块Block是Oracle存储数据信息的最小单位。 Oracle就是通过数据块来屏蔽不同操作系统存储结构的差异。无论是Windows环境,还是Unix/Linux环境,他们的操作系统存储结构和方式、甚至字符排列的方式都是不同的。Oracle利用数据块将这些差异加以屏蔽,全部数据操作采用对Block的操作,相当于是一

个层次的抽象。 Oracle所有对数据的操作和空间分配,实际上都是针对数据块Block的操作。我们从数据表中搜索出一行,实际中Oracle就会从内存缓冲区(或者硬盘)中读取到该行所在的数据块,再返回该数据块上的指定数据行。 数据块是有大小的,在一个数据库建立的时候,通过参数进行设置。(注意:Oracle数据库参数中,数据块大小的参数db_block_size 是建库之后不能进行修改的)。 数据库中每个块的大小都是相同的,而且所有的块都有相同的格式,由“块头+表目录+行目录+空闲空间+数据空间”组成。块头包含着块类型(比如是表块、还是索引块)的信息、磁盘上块的位置等信息。表目录(table directory),如果有的话,包含着此块中存储各行的表的信息(如果一个块中存有多个表中的数据)。行目录(row directory)包含着数据行的描述信息,它是一个指针数组,指示了每一行在数据块中的物理位置。块头、表目录、行目录统称为块开销(block overhead),是oracle原来统计、管理块本身的。剩下的两部分很简单,已经存有数据的就是数据空间,暂时没存的就是空闲空间。 数据块的大小是通过KB字节个数来指定的,默认为8KB。相关参数为db_block_size。 查看参数设置:show parameter db_block_size; 设置数据块的大小是依据不同类型的系统的。如果数据块设置比

Oracle12C用户创建与表空间分配

Oracle 12C用户创建与表空间分配 数据库安装完成后,首先用系统用户链接数据库容器(CDB), 在数据库容器(CDB)中创建表空间‘imei’ SQL>create tablespace iemi datafile'E:\Oracle_DB\ cdb_iemi.dbf'size 10240m autoextend on next 200m; 表空间已创建。 接下来在Oracle 12C数据库中创建用户时会报ORA-65096错误。SQL> create user imei identified by imei default tablespace imei temporary tablespace imei_temp; * ERROR at line 1: ORA-65096: invalid common user or role name ORA-65096:公用用户名或角色名无效 以前没见过这个错误,通用用户(common user)是什么?之前的版本可是没这概念啊,上网搜索看到了下面的图片,原来和common user 对应的还有local user。

这个common user 和local user是和oracle 12c的新特性pluggable database(PDB)有关。在PDB中创建的用户就是local user。从上图可以看出,common user必须以大写或小写的c##开头,尝试建立以c##开头的common user。 SQL> create user c##imei identified by imei default tablespace imei temporary tablespace imei_temp;; User created. SQL> grant dba to c##imei; Grant succeeded. 每个PDB都是独立的单元,有自己的用户(local user)、表空间、数据文件,每个local user只能访问自己的PDB,而common user只要权限足够,可以访问任意PDB。

ORACLE_UNDO表空间的管理总结

undo表空间的管理: 1、undo作用 2、undo管理模式 3、undo参数 4、undo表空间的建立删除 作用: 事务回退、事务恢复、读一致性、闪回数据 读一致性:用户看到的所有数据都是别人已经提交的或者是自己操作过但还没提交的 事务恢复、前滚:oracle重启时会恢复到没有commit的状态,系统监控进程读取undo表空间段头查找已提交事务,在日志文件中找到记录,然后实例恢复。 事务回退:用户可以用roolback回滚没有commit的数据 闪回(flash back):任何操作都会把数据的操作保存到undo,运用undo表空间的记录,来恢复近期的数据。9i以后版本才支持 管理模式: 现在版本一般用自动管理

新手最好自动管理 show parameter undo_m 参数中的undo_management 定义了是否自动管理。 show parameter undo_t 查看undo_tablespace参数指定用的是哪个表空间 undo表空间中的段分三种: 系统段----------系统表空间镜像数据 非系统段-----------非系统表空间的镜像数据 deferred段---------临时段---任何表空间脱机后,所有变化的数据存入undo临时段,当再次联机时在从undo写入 查看段: SQL> select * from v$rollname; USN NAME ---------- ------------------------------ 0 SYSTEM 1 _SYSSMU1$ 2 _SYSSMU2$ 3 _SYSSMU3$ 4 _SYSSMU4$ 5 _SYSSMU5$ 6 _SYSSMU6$ 7 _SYSSMU7$ 8 _SYSSMU8$ 9 _SYSSMU9$ 10 _SYSSMU10$ 其中0为系统段,其他为非系统段,分公有还是私有默认都是公有,oracle中至少要有一个非系统段。 查看文件状态 SQL> select status,enabled from v$datafile; 查看deferred段 select segment_name,segment_type from dba_segments where segment_type like '%defe%' 只有某个表空间脱机时,就会产生deferred段,一旦online后deferred段消失 参数: SQL> show parameter undo_ NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ undo_management string AUTO undo_retention integer 900 undo_tablespace string UNDOTBS1

Oracle_如何创建表空间

SYS用户在CMD下以DBA身份登陆: 在CMD中打sqlplus /nolog 然后再 conn / as sysdba //创建临时表空间 create temporary tablespace user_temp tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; //创建数据表空间 create tablespace test_data logging datafile 'D:\oracle\oradata\Oracle9i\user_data.dbf' size 50m autoextend on next 50m maxsize 20480m extent management local; //创建用户并指定表空间 create user username identified by password

default tablespace user_data temporary tablespace user_temp; //给用户授予权限 grant connect,resource to username; //以后以该用户登录,创建的任何数据库对象都属于user_temp 和user_data表空间,这就不用在每创建一个对象给其指定表空间了 撤权: revoke 权限... from 用户名; 删除用户命令 drop user user_name cascade; 建立表空间 CREATE TABLESPACE data01 DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k 删除表空间 DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES; 一、建立表空间 CREATE TABLESPACE data01 DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M UNIFORM SIZE 128k; #指定区尺寸为128k,如不指定,区尺寸默认为64k 二、建立UNDO表空间 CREATE UNDO TABLESPACE UNDOTBS02

Oracle表空间管理逻辑

表空间(Tablespace)——为数据库提供使用空间的逻辑结构,其对应物理结构是数据文件,一个表空间可以包含多个数据文件。本地管理表空间(Locally Managed Tablespace简称LMT)——8i以后出现的一种新的表空间的管理模式,通过本地位图来管理表空间的空间使用。字典管理表空间(Dictionary-Managed Tablespace简称DMT)——8i以前包括以后都还可以使用的一种表空间管理模式,通过数据字典管理表空间的空间。 本地化管理: 就是指Oracle不再利用数据字典表来记录Oracle表空间里面的区的使用状况,而是在每个表空间的数据文件的头部加入了一个位图区,在其中记录每个区的使用状况。每当一个区被使用,或者被释放以供重新使用时,Oracle都会更新数据文件头部的这个记录,反映这个变化。 本地化管理的表空间的创建过程: 语法:CREATE TABLESPACE 表空间名字 DATAFILE ’数据文件详细信息’ [EXTENT MANAGEMENT { LOCAL {AUTOALLOCATE | UNIFORM [SIZE INTETER [K|M] ] } } ] 关键字EXTENT MANAGEMENT LOCAL 指定这是一个本地化管理的表空间。对于系统表空间,只能在创建数据库的时候指定EXTENT MANGEMENT LOCAL,因为它是数据库创建时建立的第一个表空间。在8i中,字典管理还是默认的管理方式,当选择了LOCAL关键字,即表明这是一个本地管理的表空间。当然还可以继续选择更细的管理方式:是AUTOALLOCATE 还是UNIFORM.。若为AUTOALLOCATE,则表明让Oracle来决定区块的使用办法;若选择了UNIFORM,则还可以详细指定每个区块的大小,若不加指定,则为每个区使用1M大小。 本地管理表空间的优点: 1)减少了递归空间管理 本地管理表空间是自己管理分配,而不是象字典管理表空间需要系统来管理空间分配,本地表空间是通过在表空间的每个数据文件中维持一个位图来跟踪在此文件中块的剩余空间及使用情况。并及时做更新。这种更新只对表空间的额度情况做修改而不对其他数据字典表做任何update操作,所以不会产生任何回退信息,从而大大减少了空间管理,提高了管理效率。同时由于本地管理表空间可以采用统一大小分配方式(UNIFORM),因此也大大减小了空间管理,提高了数据库性能。 2)系统自动管理extents大小或采用统一extents大小 本地管理表空间有自动分配(AUTOALLOCATE)和统一大小分配(UNIFORM)两种空间分配方式,自动分配方式(AUTOALLOCATE)是由系统来自动决定extents大小,而统一大小分配(UNIFORM)则是由用户指定extents大小。这两种分配方式都提高了空间管理效率。 3)减少了数据字典之间的竞争 因为本地管理表空间通过维持每个数据文件的一个位图来跟踪在此文件中块的空间情况并做更新,这种更新只修改表空间的额度情况,而不涉及到其他数据字典表,从而大大减少了数据字典表之间的竞争,提高了数据库性能。 4)不产生回退信息

相关主题
文本预览
相关文档 最新文档