转oracle 学习 - 表空间
Oracle 数据库的表空间和 Oracle 数据库数据文件
关于 Oracle 数据库的表空间。
很多 Oracle 初学者弄不明白表空间的概念和意义,他们只知道给数据库建表的时候需要到表空间这个东东。他们也不大明白执行 create tablespace 命令时用到的数据库数据文件的作用。作者总结了一些数据库表空间和数据库数据文件的概念性、意义性的资料,希望可以方便大家。
Oracle 的表空间是 Oracle 数据库的逻辑世界和操作系统的物理世界之间相互交互的地方。Oracle 数据库在表空间中存储对象(如表、索引等)。Oracle 数据库中的表空间提供一种机制来存储数据库引擎所管理的数据。当创建对象(如表对象和索引对象)时,需要指定在哪个表空间中创建对象(否则将给对象分配默认的表空间)。
典型的 Oracle 数据库包含各种类型的表空间,下面列出了最常见的表空间:
* SYSTEM 存储系统对象
* SYSAUX 存储 Oracle 数据库辅助模式对象,如 RMAN 恢复目录
* USERS 为所有用户分配典型的默认表空间
* RBS 用于手工回滚段
* UNDO 用于自动撤销段
* DATA 用于存储数据
* INDEX 用于存储索引
* TOOLS 用于为数据库管理员所使用的相关工具存储模式对象
本来就可以对表空间进行读写操作,或者也可以使表空间处于只读模式。当表空间中的数据都是静态数据时,只读模式的表空间在数据仓库环境中就显得非常有用。在这种情况下,可以先使表空间处于只读模式,然后再对该表空间进行备份。对表空间的本分完成以后,就不需要对该表空间进行再次备份了。
在 Oracle8i 和 Oracle9i 数据库中,表空间通过可传输表空间功能可以在不同的数据库之间进行传输。不同的数据库版本对传输有不同的约束,版本越新,对传输的约束越少。在很多时候,使用可传输的表空间可以带来很大的方便。例如:当在 OLP(online transaction processing,联机事务处理)表空间和数据仓库之间传输数据时,使用可传输的表空间可以带来很多的方便。
Oracle 10g 数据库去掉了以前版本中可传输表空间的基本约束:没有这些基本约束后,可以在大部分操作系统之间移动表空间,这样就进一步增强了数据库的可用性。在某些情况下,可以直接将表空间的集合移动到其他的硬件平台:然后在另外的一些情况下,表空间可能需要使用 RMAN 来进行转换。可以参见特定操作系统的 Oracle 数据库帮助文档来确定特定平台的需求。
关于 Oracle 数据库数据文件。
分配给表空间的空间来自于数据库的数据文件,这些数据文件或者是在一开始执行 create tablespace 命令时分配给表空间的,或者是在随后通过 alter tablespace 命令添加到表空间中的。当创建表空间时,至少需要定义一个数据文件。可用存储空间的总大小就是与表空间相关联的所有数据文件大小的综合。分配给表空间的数据文件的最大数目受使用的操作系统和 Oracle 数据库限制。
当给数据文件分配了磁盘空间之后,数据库数据文件所占的空间逻辑上可以再分成多个数据库快。当创建对象的时候,将数据库中的空闲空间以一个或多个扩展区的形式分配给所创建的对象。在一个单独的数据文件中,每一个扩展区都包含一个连续数据块的集合,因此扩展区自身不能超过数据库数据文件的范围。当创建对象时,初始扩展区的大小由参数 initial 定义,而后继扩展区的分配则通过 next 参数来定义。
底层表空间中数据文件所使用的空间在初始需要预先分配,所以当定义好这些数据文件后,就可以使用设备上的物理空间了。像添加额外的数据文件或者重新设置已存在数据文件大小的操作一样,也可以很容易地向表空间中添加空间以获得更大的表空间。当然数据库中的可用空间可能会很快地用完,有时候速度可以快到数据库管理员来不及对这种情况进行处理。在大多数情况下,如果表空间已经用尽,对数据库的操作将会失败,并且将会给用户返回一个错误的信息。
通过在于表空间相关联的数据文件中使用 autoextend 选项可以避免出现空间耗尽的问题。 autoextend 选项可以使数据库动态地对各数据文件进行扩展,这在不希望出现故障和错误信息的情况下是非常重要的。如:
SQL> create tablespace wfcrmdb datafile 'e:/tools/oracle/oradata/wfcrm/wfcrmdb.dat' size 100m autoextend on next 50m maxsize unlimited;
在上面的 sql 语句中,创建了一个名为 wfcrmdb 的表空间,初始大小 100m,自动扩展大小 50m,没有最大上限,数据文件 wfcrmdb.dat 将会在 e:/tools/oracle/oradata/wfcrm 文件夹下被创建。
如果不想使用 autoextend,还有另一种解决空间用尽的方法,即使用可恢复的空间管理的方法。这个方法是使已经用尽空间的会话暂停运行以等待一段预先定义的时间长度,在此期间允许数据库管理员动态地向表空间中添加空间。
可以通过重新设置数据文件的大小来减小数据文件,然而不能将数据文件大小的边界减小到超过最后一个对象块所分配的位置。因此,如果数据文件大小是 1GB,最后一个块在 500MB 的位置上填充数据文件(通常数据文件的填充是从第一个块开始依次填充到最后一个块),则只能将数据文件的大小减小到 500MB,而不能继续地减小。
总结:用一句很形象的话讲,Oracle 数据库其实就是一个存储数据的硬盘,而表空间就是这个硬盘下存放对象的一个个文件夹,而数据文件则存储着你放入文件夹中的数据。
转oracle 学习 - 表空间的更多相关文章
- Oracle创建表空间、用户管理、角色管理
内容:Oracle创建表空间.用户管理.角色管理 1.用系统用户登录Oracle 默认的系统用户: sys/system.sysman.scott sys:权限最大,超级用户,可以完成所有任务, 默认 ...
- oracle数据库表空间追加数据库文件方法
oracle数据库表空间追加数据库文件方法 针对非大文件方式表空间,允许追加文件进行表空间的扩展,单个文件最大大小是32G 第一种方式:表空间增加数据文件 www.2cto.com 1 ...
- Oracle 设置表空间自增长
Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...
- Oracle Temp表空间切换
来源于: http://www.2cto.com/database/201507/418564.html 一.TEMP表空间作用 临时表空间主要用途是在数据库进行排序运算.管理索引.访问视图等操作时 ...
- Oracle基础表空间建立,以及练习
Oracle的表空间创建,可以采用网页的https://127.0.0.1:1158/em来进入oracle的页面进行创建表空间. 利用plsqldev.exe程序在表空间里添加数据: 首先要在use ...
- [转载]Oracle修改表空间大小
Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...
- Oracle建立表空间和用户
Oracle建立表空间和用户 建立表空间和用户的步骤: 用户 建立:create user 用户名 identified by "密码"; 授权:grant create sess ...
- oracle 11g 表空间使用率
Oracle数据库表空间使用量查询: select b.file_name 物理文件名,b.tablespace_name 表空间,b.bytes/1024/1024 大小M,(b.bytes-sum ...
- oracle暂时表空间 ORA-01652:无法通过16(在表空间XXX中)扩展 temp 字段
今天在查数据的时候报错 ORA-01652:无法通过16(在表空间temp1中)扩展 temp 字段 查看表空间使用明细 SELECT b.tablespace, b.segfile# ...
随机推荐
- 20170711xlVBA自定义分类汇总一例
Public Sub CustomSubTotal() AppSettings On Error GoTo ErrHandler Dim StartTime, UsedTime As Variant ...
- OC Foundation框架—字符串
一.Foundation框架中一些常用的类 字符串型: NSString:不可变字符串 NSMutableString:可变字符串 集合型: 1) NSArray:OC不可变数组 NSMutableA ...
- learning shell built-in variables (1)
Shell built-in variables [Purpose] Learning shell built-in variables, example $0,$1,$2,$3,$#, ...
- Wifi Troughput Test using iperf
learning wifi throughput test using iperf [Purpose] Learning how to do wifi throughput test u ...
- hdu6153
题解: EX_KMP 先计算出ex数组 然后ans统计前缀 然后乘一下就好了 代码: #include<cstdio> #include<cmath> #include< ...
- ReentrantReadWriteLock——写写互斥(二)
"读写" ."写读"."写写"都是同步的.互斥的 1.Service.java package ReentrantReadWriteLock ...
- jsf的运行原理及生命周期
一.jsf(java server faces)的运行原理(工作方式) 1.jsf应用是事件驱动的,当一个事件发生时(比如用户单击一个按钮),事件通知通过HTTP发往服务器,服务器端使用叫做Faces ...
- C++的类型转换:static_cast、dynamic_cast、reinterpret_cast和const_cast
在C++中,存在类型转换,通常意味着存在缺陷(并非绝对).所以,对于类型转换,有如下几个原则:(1)尽量避免类型转换,包括隐式的类型转换(2)如果需要类型转换,尽量使用显式的类型转换,在编译期间转换( ...
- HDU 3455
http://acm.hdu.edu.cn/showproblem.php?pid=3435 同下题,只是这题是双向边,同时让我认识到了一个问题,一个图拆点做二分图完美匹配的本质是求该图环的并 htt ...
- 推荐两个Magento做的中文网站 GAP和佰草集
Magento这两年发展很快,可以算是现阶段最有前途的开源电子商务系统,国外用的人很多,相对应的,国内也已经有很多人在用Magento建站了,可惜的是这其中绝大多数还是英文站,大多是国内外贸商建的外贸 ...