concepts阅读总结3——文件

1、表空间,数据文件,控制文件:

  为数据库分配更多的空间:

a 为表空间添加新的数据文件:alter tablespace system add datafile ‘data2.dbf 'size 10m; 这个命令很重要哦。

b 创建新的表空间(相当于至少向数据库中添加了一个数据文件):create tablespace users datafile ‘data3.ora’;创建了一个名字为users的表空间,并插入了一个新的数据文件data3.ora。(其实此句会报错,因为没有指定文件的大小)

c 通过增大数据文件增大数据库空间:

alter database datafile ‘data3.ora’ 

autoextend on next 20m 

maxsize 1000m;

2、关于大文件表空间(bigfile tablespace),system表空间,sysaux表空间,和撤销表空间(undo tablespace):

 a 大文件表空间:数据库默认情况下创建的是小文件表空间(small file tablespace),使用大文件表空间,oracle把表空间看做一个对象直接管理,不用数据库管理员去手动创建数据文件,管理各个数据文件是由表空间自己管理的。只有本地管理的(locally managed),且段空间自动管理(automatic segment-space
management)的表空间(tablespace)才能使用大文件表空间(bigfile tablespace)。但是有两个例外:本地管理的撤销表空间(undo tablespace)和临时表空间(temporary tablespace),即使其段(segment)为手工管理(manually managed),也可以使用大文件表空间。管理员可以创建一组临时表空间(temporary tablespace),用户在需要时可以利用组内各个表空间(tablespace)提供的临时空间。管理员还可以指定表空间组(tablespace
group)为数据库默认的临时表空间。当用户需要大量临时空间进行排序操作时,就可以利用大文件表空间及表空间组。


    • 使用大文件表空间(bigfile tablespace)可以显著地增强Oracle数据库的存储能力。一个小文件表空间(smallfile tablespace)最多可以包含1024个数据文件(datafile),而一个大文件表空间中只包含一个文件,这个数据文件的最大容量是小数据文件的1024倍。这样看来,大文件表空间和小文件表空间的最大容量是相同的。但是由于每个数据库最多使用64K个数据文件,因此使用大文件表空间时数据库中表空间的极限个数是使用小文件表空间时的1024倍,使用大文件表空间时的总数据库容量比使用小文件表空间时高出三个数量级。换言之,当一个Oracle数据库使用大文件表空间,且使用最大的数据块容量时(32K),其总容量可以达到8EB。
    • 在超大型数据库中使用大文件表空间减少了数据文件的数量,因此也简化了对数据文件的管理工作。由于数据文件的减少,SGA中关于数据文件的信息,以及控制文件(control file)的容量也得以减小。
    • 由于数据文件对用户透明,由此简化了数据库管理工作。
    • 大文件表空间(bigfile tablespace)应该和自动存储管理(Automatic Storage Management)或其他逻辑卷管理工具(logical volume manager)配合使用,这些工具应该能够支持动态扩展逻辑卷,也能支持striping(数据跨磁盘分布)或RAID。
    • 应该避免在不支持striping的系统上使用大文件表空间,因为这将不利于并行执行(parallel execution)及 RMAN 的并行备份(backup parallelization)。
    • 当表空间正在使用的磁盘组(disk group)可能没有足够的空间,且扩展表空间的唯一办法是向另一个磁盘组加入数据文件时,应避免使用大文件表空间。
    • 不建议在不支持大文件的平台上使用大文件表空间,这会限制表空间(tablespace)的容量。参考相关的操作系统文档了解其支持的最大文件容量。
    • 如果使用大文件表空间替代传统的表空间,数据库开启(open),checkpoints,以及 DBWR 进程的性能会得到提高。但是增大数据文件(datafile)容量可能会增加备份与恢复的时间。

b system表空间:管理员可以创建本地管理的system表空间,也可以把数据字典管理的systen表空间转换成本地管理的,但是这个转换是单向的,也就是说你不能把一个本地管理的system表空间转换成数据字典管理的。如果数据库中的 SYSTEM 表空间(tablespace)为本地管理的(locally
managed),那么此数据库中就不能创建数据字典管理的(dictionary managed)表空间。虽然用户可以通过可移动表空间(transportable tablespace)功能向其中添加数据字典管理的表空间,但这个表空间只能是只读的。

所有和pl/sql相关的程序结构(包括过程(procedure),函数(function),包(package),及触发器(trigger))都会在system表空间中。

c sysaux表空间:这是一个system的辅助表空间,oracle的很多组件数据都存在于这个表空间中,那么如果出现sysaux这个表空间因为介质故障而失效时,oracle的一些特性就不能用了。

d 撤销表空间(undo tablespace):这是一个特殊的表空间,他专门用来存储撤销信息(undo information)的,不能由用户创建。一个数据库中可以有多个撤销表空间,也可以没有撤销表空间。每个Oracle实例(instance)有(且仅有)一个撤销表空间。Oracle在撤销表空间内自动地创建和维护撤销段(undo
segment),对撤销数据(undo data)进行管理。
当事务(transaction)内第一条 DML 语句运行时,系统就为期其在当前撤销表空间(undo tablespace)中分配一个撤销段(undo segment),同时也分配一个事务表(transaction table)。在极少数情况下,如果实例(instance)中没有指定撤销表空间,那么事务将使用系统的撤销段。

用户可以创建大文件撤销表空间(bigfile undo tablespace)。

创建撤销表空间的语句:create undo tablespace。也可以在create database 的同时创建撤销表空间。删除修改和普通表空间一样用:drop tablespace,alter
tablespace(
这句可以向undo表空间插入数据文件,以增大undo tablespace的容量)。

在一个数据库实例初始化的时候有两种方法创建撤销表空间:

  • 在实例启动时。用户可以在实例的初始化文件(initialization file)中指定一个撤销表空间,或指定由系统自动选择一个可用的撤销表空间。
  • 当实例运行时。使用 ALTER SYSTEM SET UNDO_TABLESPACE 将当前活动的撤销表空间替换为另一个。这种方式很少使用。

用户可以创建多个undo tablespace 用于切换使用,用户也可以控制undo表空间内的撤销(undo)信息的生存周期。

e 默认临时表空间:如果system表空间是本地管理表空间,那么创建数据库的时候必须定义一个默认临时表空间(temporary tablespace),因为本地管理的system表空间不能作为临时表空间;如果system表空间是数据字典管理的,且创建数据库的时候没有指定默认的临时表空间,那么system表空间就会被当做临时表空间。此时用户在 ALERT.LOG 文件中会发现一条警告:建议创建默认的临时表空间,以后的Oracle版本将会需要。用户在使用 CREATE
DATABASE 语句创建数据库时,可以通过 DEFAULT TEMPORARY TABLESPACE 子句指定默认的临时表空间(temporary tablespace)。如果用户移除(drop)了所有默认的临时表空间(temporary tablespace),Oracle将使用 SYSTEM 表空间(tablespace)作为默认的临时表空间。

3、

一个小型数据库可能只需要使用 SYSTEM 表空间(tablespace);但是Oracle建议用户至少创建一个额外的表空间来存储用户数据,使之与系统的数据字典信息(data dictionary information)分离。这使用户在进行数据库管理操作时更灵活,并减少了由于数据字典对象(dictionary object)与用户方案对象(schema
object)处于同一数据文件(datafile)而导致的竞争。

用户可以利用多个表空间(multiple tablespace)完成以下任务:

        • 控制数据库内的磁盘空间分配
        • 为数据库用户设定空间使用配额(quota)
        • 通过将某个表空间置于联机/脱机(online/offline)状态来控制数据的可访问性(availability)
        • 执行对数据库的某部分的备份与恢复
        • 使数据存储可以跨多个设备,提升系统性能
数据库管理员可以对表空间(tablespace)进行以下操作:

        • 创建一个新的表空间
        • 为一个表空间添加数据文件(datafile)
        • 设置或修改表空间内某段(segment)的默认段存储参数(default segment storage setting)
        • 使一个表空间为只读(read only)或可读写(read/write)
        • 将表空间设置为临时(temporary)或永久(permanent)
        • 重命名表空间
        • 移除(drop)表空间

3、表空间的管理:

表空间的管理就是监控管理表空间内已用和可用的数据扩展,有两种方式管理:本地管理表空间和数据字典管理表空间。

本地管理表空间:用位图的方式记录已用和未用的数据扩展,在每个数据文件中维护一个位图,记录此数据文件内的数据块的可用和占用情况,位图中的一位代表一个或者一组数据块,当一个数据扩展被分配或者释放,oracle就会将对应的数据块用位图做好标记(文档中说这种修改不会产生回滚信息,因为它不修改数据字典中的表。我的理解是他只是在添加或者删除数据,而数据字典只是记录了表的结构和统计信息,数据字典里没有数据所以不会修改数据字典里的表)。

数据字典管理表空间:就是通过数据字典来记录已用和未用的数据扩展如果表空间(tablespace)使用数据字典(data dictionary)管理其数据扩展(extent),当发生数据扩展的分配与回收时,Oracle会更新数据字典内相应的表。Oracle也会在更新数据字典表时存储相应的回滚信息(rollback
information)。因为数据字典表与回滚段(rollback segment)都是数据库的一部分,她们使用的空间如同其他数据库对象一样也必须进行空间管理操作。

用户创建表空间的时候需要选择管理方式(一般建议用本地管理,数据字典管理估计快淘汰了),也可以在创建以后用DBMS_SPACE_ADMIN包来改变管理方式。

  本地管理表空间下的段空间管理:

   用户使用 CREATE TABLESPACE 语句创建一个本地管理的表空间(locally managed tablespace)时,可以用 SEGMENT SPACE MANAGEMENT 子句来设定段(segment)内的可用/已用空间如何管理。可选的方式有:

  *AUTO在这种设置下,Oracle使用位图(bitmap)管理段内的可用空间。[注意此处的位图与本地管理的表空间使用的位图不一样]此处的位图用于描述段内每个数据块(data
block)是否有足够的可用空间来插入(insert)新数据。随着一个数据块中可用空间的变化,她的状态也被及时地反映到位图中。Oracle使用位图可以更自动化地管理段内的可用空间。这种空间管理形式被称为自动段空间管理(automatic segment-space management)一个本地管理的(locally managed),且使用自动段空间管理的表空间,既可以被创建为小文件表空间(传统的)(smallfile
tablespace),也可以被创建为大文件表空间(bigfile tablespaces)。在创建本地管理的表空间时,自动段空间管理是默认值。

  *MANUAL在这种设置下,Oracle使用可用块列表(free list)来管理段内的可用空间。可用块列表记录了所有可以被用于插入新数据的数据块。


4、联机脱机表空间:

SYSTEM 表空间在数据库处于开启(open)状态时总是处于联机状态,因为Oracle需要使用其中的数

表空间资料库

表空间资料库(tablespace repository)是一个表空间的集合。表空间资料库基于文件组资料库(file group repository),但其中只包含在数据库间复制或移动表空间(tablespace)所需的文件。多个表空间集(tablespace set)可以存储在同一个表空间资料库中,同一个表空间集的不同版本也可以存储在同一个表空间资料库中。在一个表空间资料库中,同一版本的表空间集由以下文件组成:

  • 由 Data Pump 为表空间集导出的文件
  • Data Pump 的导出日志文件
  • 组成表空间集的数据文件(datafile)

如何在数据库间移动或复制表空间

在复制或移动表空间前,用户首先将表空间置于只读状态,再复制表空间的数据文件(datafile),最后使用export/import工具迁移位于数据字典(data dictionary)中的数据库元数据信息(database metadata information)。数据文件以及元数据导出文件必须全部复制到目标数据库上。移动这些文件时可以使用任何用于文件复制的工具,例如操作系统的复制功能,FTP,或者发布到CD中。复制数据文件(datafile)并导入元数据(metadata)之后,用户可以选择是否将表空间(tablespace)置为可读写状态。在一个将 COMPATIBLE 初始化参数(initialization
parameter)设置为10或更高的Oracle数据库中首次打开一个表空间(tablespace)的各个数据文件(datafile)时,每个文件将识别她所处的平台,之后将识别出的磁盘格式(disk format)记录在文件头区域(file header block),用于以后的文件格式识别(identification)与验证(verification)。只读(read only)的文件在被置为可读写,或脱机(offline)文件被联机(online)后,Oracle都会将其兼容性提升到与当前数据库相同。这意味着
Oracle 10g 之前版本的只读表空间如果想使用跨平台移动特性(cross platform transportable feature),至少要在10g数据库中置为可读写状态一次。

4、数据文件,控制文件:

临时数据文件

本地管理的(locally managed)临时表空间(temporary tablespace)使用临时的数据文件(datafile)(临时文件),这样的文件与普通数据文件类似,但有以下区别:

  • 临时文件总是被设置为 NOLOGGING 模式。
  • 用户不能将临时文件设为之读
  • 用户不能使用 ALTER DATABASE 语句创建临时文件
  • 介质恢复(media recovery)不能识别临时文件:
     

    • BACKUP CONTROLFILE 不会产生与临时文件有关的信息
    • CREATE CONTROLFILE 不能设定与临时文件有关的信息
  • 当用户创建临时文件或改变其容量时,Oracle并不保证按照用户指定的文件容量为其分配磁盘空间。在某些文件系统(file systems)中(例如UNIX)磁盘块(disk block)并不会在文件创建或改变容量时分配,而是在其被使用之前 才分配。

临时文件(tempfile)信息可以从 DBA_TEMP_FILES 数据字典表及 V$TEMPFILE 动态性能视图(dynamic performance view)中查询,但是不存在于 DBA_DATA_FILES 或V$DATAFILE 视图中。

控制文件

控制文件(control file)中包含了其所属数据库的信息,实例(instance)在启动,及正常工作期间都需要存取这些信息。控制文件的内容只能由Oracle修改,数据库管理员或用户都不应编辑控制文件。

控制文件(control file)中主要包含以下内容:

        • 数据库名(database name)
        • 数据库创建时的时间戳(timestamp)
        • 属于此数据库的数据文件(datafile)及重做日志文件(redo log file)的名称与存储位置
        • 表空间(tablespace)信息
        • 脱机(offline)的数据文件
        • 日志历史信息
        • 归档日志(archived log)信息
        • 备份集(backup set)与备份块(backup piece)信息
        • 数据文件与重做日志的备份信息
        • 数据文件复制信息
        • 当前的日志序列号(log sequence number)
        • 检查点(checkpoint)信息

控制文件(control file)还被用于保存检查点(checkpoint)信息。每隔三秒钟,检查点进程(checkpoint process,CKPT)将会在控制文件中记录重做日志(redo log)检查点位置(checkpoint position)信息。当数据库恢复时,重做日志中此点之前的重做条目(redo entry)都无需恢复,因为这些数据已经被写入数据文件(datafile)中了。

oracle使用多重控制文件机制,也就是说会在不同的的磁盘上存储多个同步的相同内容的控制文件,这类似与重做日志文件(redo log file)。

如果一个数据库的所有控制文件永久丢失了,那么实例将中止且需要进行介质恢复(media recovery)。如果没有当前控制文件(control file)的副本而必须使用较早的备份,那么介质恢复过程将会比较复杂。因此Oracle强烈建议用户遵循以下规则:

  • 在每个数据库中使用多重控制文件(multiple control file)
  • 将控制文件的副本存储在不同的物理磁盘上
  • 使用操作系统的镜像功能(operating system mirroring)
  • 监控备份工作
时间: 2024-08-07 03:41:43

concepts阅读总结3——文件的相关文章

超星阅读器pdz文件转为xps文件或pdf文件说明

所需软件:1.XPS Viewer(Win7自带的有XPS Viewer软件,XP系统需要下载XPS Viewer软件);2.pdfFactory软件(pdfFactory 是一个无须 Acrobat 创建 Adobe PDF 文件的打印机驱动程序.pdfFactory 提供的创建 PDF 文件的方法比其他方法更方便和高效.) 步骤: 一.转换为XPS文件 1.用超星阅读器打开你所要转换的文件. 2.点击"图书"菜单下的"打印".设置打印范围,如图(注:如果点击&q

《C++语言基础》程序阅读——二进制文件及文件的随机读写

返回:贺老师课程教学链接 1.阅读并运行下面的两个程序,分别用记事本和二进制文件阅读器(请自行下载Binary Viewer等程序,或者用DOS中的Debug程序,并百度其用法).查看其内容,并理解文件存储的原理. (1) #include <iostream> #include <fstream> #include <cstdlib> using namespace std; int main( ) { int a; ofstream outfile("f1

concepts阅读总结9——数据仓库

数据仓库简介: 数据仓库有四个典型的特点:1.数据仓库是面向主题的 数据仓库的建立是针对一个主题的,可以是一个人事的管理,销售的管理的数据仓库,他的功能就是帮助用户分析数据用的.2.数据仓库是统一的,就是不同形式的数据,不同类型的数据,在存入数据仓库的时候会被转化成统一的形式进行存储. 3.数据仓库是永久的,不应该被删除或者修改,是用来查询使用的.4.数据仓库是历史的,为了发现业务中存在的趋势,分析用户需要使用大量数据.这与联机事务处理(online transaction processing

concepts 阅读总结1——体系结构

1.数据库应用体系结构概述:c/s 结构 和 多层结构  -- 多层体系结构具备以下组成部分:客户端程序,提交数据库操作:一个或多个应用服务器处理一个操作请求的不同部分.应用服务器首先负责访问数据,再对查询结果进行处理,这就减轻了数据库服务器的负担.应用服务器可以作为客户端与数据库之间的接口,还可提供额外的 安全控制:一个数据库服务器,或称为服务端,存储用户操作所需的数据. 在这种体系结构下,应用服务器起到以下作用: 验证用户身份, 连接Oracle数据库服务器 代替用户执行对数据库的请求  物

concepts阅读总结4——事务

1.事务: 语句级回滚和可恢复空间的分配问题: 语句级的回滚一般发生在一条sql语句执行出现错误的时候,这一条语句的回滚不会影响整个事务,在此语句之前的ddl语句隐式提交的工作都是有效的: 当处于可恢复空间分配模式的事务需要分配空间,但是由于空间不足或者达到最大数据扩展的限制时,oracle数据库不会直接报错,它会将此事务挂起,相关占用的空间保留,等到别的事务提交,释放空间,此事务需要的空间足够了,就会再次执行..(我觉得这样形成类似死锁的资源争用很容易,正好两个事务都挂起了,都等着对方释放资源

concepts阅读总结8——内存结构补充+oracle工具+个别进程

1.内存结构: 关于之前SGA,PGA的介绍我就不多说了,在我的博客里有专门的介绍: http://blog.csdn.net/changyanmanman/article/details/7256255 我们看看各个区域的介绍吧,这是官方的文档,准确性和权威性不言而喻. 2.数据缓存区: 一个新的点,数据缓存区在逻辑上被分成了好几个组,这种分组的内存管理方式减少了多处理器系统中的资源竞争.(共享SQL区也是这样的) 数据缓存区内的缓冲区(buffer)通过两个列表来管理:待写列表(write

CI框架源码阅读,系统常量文件constants.php的配置_php技巧

配置系统常量 1.当文件系统工作的时候检查并配置这些首选项文件系统运行的时候这些默认的值会适当的增加系统的安全性,但是在php或apache的底层单独的为每各用户开一个进程的时候,使用八进制的值永远是正确的FILE_READ_MODE 读取文件的模式FILE_WRITE_MODE   写入文件的模式DIR_READ_MODE   读取目录的模式DIR_WRITE_MODE 写入目录的模式  2.文件流模式当我们使用fopen()/popen()的时候需要这些模式define('FOPEN_REA

concepts 阅读总结2——存储

1.可用空间管理: 首先说明这里的可用空间和块中的"可用空间区"不是一个概念,这里是指段里的没有被用的可用空间,段内已用与可用空间以位图(bitmap)的形式记录,但是可用块是以另外一种位图的形式管理的,注意区分. 段空间自动管理(Automatic segment-space management)具备以下优势: 易于使用 空间利用效率更高,尤其针对每行数据容量差异大的表(或其他对象) 能够更好地针对当前数据的情况实时调整 Better multi-instance behavior

concepts阅读总结6——视图和索引

1.视图: 视图不会要求分配空间,他只有一个查询语句即为他的定义,存储在数据字典中.当用户在sql语句中引用了视图时,oracle将进行入下工作: 1.将引用视图的语句与视图定义语句整合为一条sql语句. 2.在共享SQL区对这条语句进行解析. 3.执行解析好的语句. 下面看看oracle是如何整合查询一条语句的: 例如有以下视图: CREATE VIEW employees_view AS  SELECT employee_id, last_name, salary, location_id