RSS
当前位置 : 电脑维修 > 电脑维修 > oracle索引创建失败数据文件会占用吗

oracle索引创建失败数据文件会占用吗

来源:未知 作者:老黑 时间:09-12-22 打印
oracle索引创建失败(因为数据文件不够大)数据文件会占用吗 一)、导出/导入(EXPORT/IMPORT)
  EXPORT/IMPORT是用来将ORACLE中数据移出/移入数据库。
  1、EXPORT将数据库中数据备份成一个二进制系统文件称为“导出转储文件”(EXPORT
DUMP FILE),并将重新生成数据库写入文件中。
  它有三种模式:
  a.用户模式:导出用户所有对象以及对象中的数据;
  b.表模式:导出用户所有表或者指定的表;
  c.整个数据库:导出数据库中所有对象。
  它的备份有三种类型:
  a.完全型(COMPLETE EXPORT):备份整个数据库;
  b.积累型(COMULATIVE ERPORT):备份上一次积累型备份所改变的数据;
  c.增量型(INCREAMENTAL EXPORT):备份上一次备份后改变的数据。
  EXPORT 的命令可以交互式进行,各参数的具体含义见附录。
  在进行导出备份时我们要考虑一点问题,那就是导出的一致性,在导出过程 中导出每读
一次就读取一个表,因而尽管导出是在一个特点时自己开始的,但不同的表读取的时间不同,
因此,导出开始读一个表时,此时表中的数据才是导出的数据,这 fef 当大多数表按内部关键字
和外部关键字相互联系时,在导出过程中这些相关联表的改变就会导致导出的不一致性,要避
开这个,我们可以将导出过程安排在不对表操作的时候进行。另外,当ORACLE中RESTRICTEP
  2、IMPORT导入:
  导入的过程是导出的逆过程,这个命令先读取导出来的导出转储二进制文件,并运行文件
  IMPORT命令执行的方法和EXPORT方案有关。
  1、如果EXPORT所实施的是完全型方案(FULL)则在IMPORT时所有的数据对象,包括表空间
,数据文件,用户都会在导入时创建,但考虑到数据库中的物理布局,预先创建表空间和用户
  2、如果EXPORT使用的是INCREMENTAL/CUMULATIVE方式,则需要预先设置好表空间、用户
  (二):冷备份
  冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据
  数据库使用的每个文件都被备份下来,这些文件包括:
  ☆所有数据文件
  ☆所有控制文件
  ☆所有联机REDO LOG 文件
  ☆INIT.ORA文件(可选)
  值得注意的是冷备份必须是数据库关闭的情况下完成,当数据库开着的时候,执行数据库
  作冷备份一般步骤是:
  1:正常关闭要备份的实例(instance);
  2: 备份整个数据库到一个目录
  3:启动数据库   1: SQLDBA>connect internal
  SQLDBA>shutdown normal
  2: SQLDBA>! cp
  或   SQLDBA>!tar cvf /dev/rmt/0 /wwwdg/oracle
  3: SQLDBA>startup
  (三)热备份(ACHIRELOG)
  数据库需要二十四小时运行,而且随时有新的数据加入.数据丢失将影响整个公司.采用
  ?设置数据库为automatic archivelog mode,
  #su - oracle
  %svrmgrl   svrmgrl>connect internal
  svrmgrl>startup mount
  svrmgrl>alter database archivelog
  svrmgrl>shutdown
  svrmgrl>exit
  %vi initoracle7.ora
  加入log_archive_start = true # if you want automatic archiving
  log_archive_dest = $ORACLE_HOME/dbs/arch

  log_archive_format = log%s.arc
  踫tart
  %ps -ef|grep arch
  oracle 1743 1 0 15:20:20 ? 0:00 ora_arch_oracle7
  注:oracle database is in automatic archivelog mode
  ?full offline entire database backup, 当数据库初始完成后 这份备份是将来备份的
  踫hut
  %cp /oracle/oradata/oracle7/system.dbf
  /oracle/oradata/oracle7/rbs.dbf
  /oracle/oradata/oracle7/temp.dbf
  /oracle/oradata/oracle7/tools.dbf
  /oracle/oradata/oracle7/users.dbf
  /oraclecle/app/oracle/product/7.3.2/dbs/application.dbf
  /oracle/app/oracle/product/7.3.2/dbs/apptmpsp.dbf
  /oracle/app/oracle/product/7.3.2/dbs/apprlbksp.dbf
  /oracle/oradata/oracle7/redooracle.log
  /oracle/oradata/oracle7/control1.ctl
  /oracle/oradata/oracle7/control2.ctl
  /oracle/oradata/oracle7/control3.ctl   
  踫tart
  注:以上*.dbf文件为数据文件,*.log文件为日志文件,*.ctl文件为控制文件
  %exit   %tar uvf /dev/rmt/0
  注:如果为oracle 7.2 ,则copy 相应的 data files,relog files,control files.
  6.3、每天做一次 partial online with archiving backups .
  #su - oracle
  %svrmgrl   %svrmgrl>connect internal
  %svrmgrl>alter tablespace billsp begin backup
  %svrmgrl>alter tablespace billtmpsp begin backup
  %svrmgrl>alter tablespace billrlbksp begin backup
  %svrmgrl>alter tablespace system begin backup
  %svrmgrl>alter tablespace rbs begin backup
  %svrmgrl>alter tablespace temp begin backup fef
  %svrmgrl>alter tablespace tools begin backup
  %svrmgrl>alter tablespace users begin backup
  %svrmgrl>host cp all datafile to the backup storage. #文件名如第一步中以.dbf结尾的.
  %svrmgrl>alter tablespace billsp end backup
  %svrmgrl>alter tablespace billtmpsp end backup
  %svrmgrl>alter tablespace billrlbksp end backup
  %svrmgrl>alter tablespace system end backup
  %svrmgrl>alter tablespace rbs end backup
  %svrmgrl>alter tablespace temp end backup
  %svrmgrl>alter tablespace tools end backup
  %svrmgrl>alter tablespace users end backup
  做一个sql文件,如上所写.
  The billing system can recover to the point of failure when the failure occur. win系列
开始/程序/运行Exp 出现人机对话一步一步即可 USERID 用户名/口令 FULL 导出整个文件 (N) BUFFER 数据缓冲区的大小 OWNER 所有者用户名列表 FILE 输出文件 (EXPDAT.DMP) TABLES 表名列表 COMPRESS 导入一个范围 (Y) RECORDLENGTH IO 记录的长度 GRANTS 导出权限 (Y) INCTYPE 增量导出类型 INDEXES 导出索引 (Y) RECORD 跟踪增量导出 (Y) ROWS 导出数据行 (Y) PARFILE 参数文件名 CONSTRAINTS 导出限制 (Y) CONSISTENT 交叉表一致性 LOG 屏幕输出的日志文件 STATISTICS 分析对象 (ESTIMATE) DIRECT 直接路径 (N) TRIGGERS 导出触发器 (Y) FEEDBACK 显示每 x 行 (0) 的进度 FILESIZE 各转储文件的最大尺寸 QUERY 选定导出表子集的子句   我就说一下啊..你看你设计的是对个人还是对一个客户代码..
很简单来说...银行卡..你肯定有几张以上的银行卡..如果你的设计是类似银行卡的用户..把单独的用户抽象出来...
还有最好用户信息和其他地址信息.还有你所包括的其他的分别抽象出来...就这样子吧..我个人看能把这表搞成3个1对1关系的表..那时不用怎么建立索引的..你还少了日值字段..你如何记录用户的创建日期和修改日期..用户记录修改后你都不知道什么时候修改的或者说谁修改的...BUG啊.... 我就说一下啊..你看你设计的是对个人还是对一个客户代码..
很简单来说...银行卡..你肯定有几张以上的银行卡..如果你的设计是类似银行卡的用户..把单独的用户抽象出来...
还有最好用户信息和其他地址信息.还有你所包括的其他的分别抽象出来...就这样子吧..我个人看能把这表搞成3个1对1关系的表..那时不用怎么建立索引的..你还少了日值字段..你如何记录用户的创建日期和修改日期..用户记录修改后你都不知道什么时候修改的或者说谁修改的...BUG啊....     数据库、表空间和数据文件紧密关联,但是它们还是有重要的区别:

u 一个Oracle由一个或多个逻辑存储单位组成,这些单位叫做表空间,表空间负责保存数据库所有的数据。

u Oracle数据库的每个表空间由一个或多个叫做数据文件的文件组成,数据文件是Oracle所运行的操作系统上的文件。

u 一个数据库的数据存储在构成数据库中表空间的数据文件上。例如,一个最简单的数据库可能只有一个表空间和一个数据文件。另一个数据库可能拥有三个表空间,每个有两 fef 数据文件(整体上就是六个数据文件)。

Oracle管理文件
Oracle管理文件减少了DBA直接管理组成Oracle数据库的操作系统文件的必要性。你可以基于数据库对象而不是文件名称来指定操作。Oracle内部使用标准的操作系统接口来创建和删除下列数据库构件需要的文件:

u 表空间

u 重做日志文件

u 控制文件

通过初始化参数,你可以指定特定类型文件使用的文件系统目录。Oracle就可以在创建和删除不需要的文件时确定唯一的一个Oracle管理的文件。

为数据库分配更多的空间
表空间的大小就是组成表空间的数据文件的大小之和。数据库的大小是组成数据库的表空间的大小总和。

你可以用三种方式扩充数据库:

u 为表空间增加数据文件

u 增加新的表空间

u 增加数据文件的大小

当你增加了一个数据文件到一个现存的表空间中,你就增加了分配给对应表空间的磁盘空间大小。图3-2说明了这类型的空间增长。


大文件表空间
Oracle允许你创建大文件表空间。这允许Oracle数据库包含由一个大文件而不是多个小文件组成的表空间。这使得Oracle可以利用64位系统的优势来创建和管理超大文件。这样的结果是Oracle数据库可以扩大至8EB(1EB = 1,073,741,824 (1024**3)GB)。

在Oracle管理文件的情况下,大文件表空间使得数据文件对用户来说完全透明。换句话说,你可以在表空间上执行操作,而不是在底层的数据文件上操作。大文件表空间使得表空间成为磁盘空间管理、备份、恢复等等的主要单位。大文件表空间还简化了Oracle管理文件和自动存储管理的文件管理,因为它降低了增加新文件和处理多个文件的必要性。

系统默认是创建一个小文件表空间,这也是Oracle表空间的传统格式。SYSTEM和SYSAUX表空间总是创建为系统默认类型。

大文件表空间只支持使用自动段空间管理的本地管理表空间的情况。不过也有两个例外:本地管理的undo表空间和临时表空间即使在段空间手动管理的情况下也可以是用大文件表空间。

一个Oracle数据库可以同时包含大文件和小文件表空间。表空间的不同类型对于执行没有明确指定数据文件的SQL语句来说是没有多大区别。

你可以创建一个临时表空间组,这样一个用户就可以从多个表空间获得临时空间了。表空间组也可以指定为数据库的默认临时表空间。这对于大文件表空间很有用,这里你可能需要大量的临时表空间来进行排序。

大文件表空间的优点

u 大文件表空间可以有效的提高一个Oracle数据库的存储容量。小文件表空间能够包含1024个数据文件,但是大文件表空间可以只包含一个1024倍小文件表空间大小的文件。小文件表空间和大文件表空间总容量是相同的。虽然如此,由于存在一个数据库数据文件数不能超过64K的限制,一个包含大文件表空间的数据库可以1024倍小文件表空间的数据库,所以大文件表空间提升了整个数据库容量达3个数量级。换句话说,当文件表空间使用最大块大小(32K)时,Oracle数据库的最大尺寸是8EB。

u 超大规模的数据库中使用大文件表空间可以简化数据文件的管理,因为它降低了需要数据文件的数目。你也可以调整参数来减少数据文件信息需要的SGA空间和控制文件的大小。

u 通过数据文件透明来简化了数据库管理。

使用大文件表空间应该注意

u 大文件表空间倾向于在自动存储管理或者其他的支持自动扩展的逻辑卷和条带化的逻辑卷管理或者RAID的情况下使用。

u 避免在不支持条带化的系统上创建大文 fef 数据库。因为它不支持并发执行和并发RMAN备份。

u 避免在下列情况下使用大文件表空间:磁盘组中没有足够的空闲空间,只能通过在另外一个磁盘组中增加数据文件的方式扩展表空间。

u 不推荐在不支持大文件尺寸的平台上使用大文件数据库,因为这会限制表空间容量。参考你的操作系统规格文档来获得支持的最大的文件大小的信息。

u 在大文件表空间上而不是在传统表空间上保存数据,可以提高数据库打开、检查点和DBWR进程的性能。虽然如此,提高数据文件大小可能会增加创建一个新数据文件或者恢复一个被破坏的数据文件所需的时间。

SYSTEM表空间
每个Oracle数据库创建时都会自动创建一个SYSTEM表空间。SYSTEM表空间在数据库打开时总是在线。

为利用本地管理表空间的优势,你可以创建本地管理SYSTEM表空间,或者你可以将现存的字典管理的SYSTEM表空间迁移为本地管理格式。

在包含本地管理SYSTEM表空间的数据库中,无法创建字典管理表空间。虽然可以使用表传送功能来附加一个字典管理的表空间,但是它也是不能写入的。

数据字典

SYSTEM表空间包含着整个数据库的所有数据字典表。数据字典表保存在编号为1的数据文件上。

PL/SQL程序单位描述

PL/SQL程序单位(如过程、函数、包和触发器)的所有数据在保存在SYSTEM表空间上。如果数据库包含这些程序单位,数据库管理员必须在SYSTEM表空间中提供这些单位需要的空间。

SYSAUX表空间
SYSAUX表空间是SYSTEM表空间的辅助。许多数据库组件使用SYSAUX表空间作为它们的默认位置来保存数据。因为在数据库创建或者升级时总会创建SYSAUX表空间。

SYSAUX表空间集中存储不包含在SYSTEM表空间中的数据库元数据。它降低了默认需要创建的表空间数量,不论在标准数据库还是用户自定义的数据库中都是如此。

在通常的数据库操作中,Oracle数据库服务器不允许删除或重命名SYSAUX表空间。也不支持SYSAUX的表空间传送。

Undo表空间
Undo表空间是用来存储undo信息的特定表空间。你不能在undo表空间上创建任何其他段类型(如表或者索引)。每个数据库包含0个或多个undo表空间。在自动undo管理模式下,每个Oracle实例会分配一个(只有一个)undo表空间。Undo数据在undo表空间的undo中管理,undo段由Oracle自动创建和管理。

当事务中的第一个DML操作运行时,事务会在当前undo表空间中绑定(分配)一个undo段(或者说事务表)。极少情况下,如果实例没有分配一个指定的重做表空间,事务会绑定到system undo段上。

每个undo表空间有一系列undo文件组成,采取本地管理方式。和其他类型的表空间一样,undo块组成区段,区段的状态在位图中展现。在任何时间点上,一个区段或者空闲,或者分配给一个事务表。

你可以创建大文件undo表空间。

创建undo表空间

数据库管理员可以使用CREATE UNDO TABLESPACE语句来创建undo表空间。它也可以使用CREATE DATABASE创建数据库时创建。新创建的undo表空间会包含一系列的文件。和通常的表空间一样,可以通过ALTER TABLESPACE和DROP TABLESPACE来调整和删除表空间。

Undo表空间的分配

你可以通过两种方式给一个实例分配一个undo表空间:

u 实例启动,你可以在初始化文件中指定undo表空间或者让系统选择一个可用的undo表空间。

u 当实例运行时,使用ALTER SYSTEM SET UNDO_TABLESPACE来用另外一个undo表空间来代替活动的undo表空间。这种方式很少采用。

你可以使用ALTER TABLESPACE命令来给undo表空间增加更多的数 fef 据文件来扩展undo表空间的空间。

你可以拥有多个undo表空间,在它们中间来切换。使用数据库资源管理器来构建每个用户undo表空间的限额。你可以指定undo信息的持续周期。

默认临时表空间

当SYSTEM表空间采取本地管理方式时,你必须在创建数据库时指定至少一个默认临时表空间。本地管理的SYSTEM表空间不能作为默认临时存储使用。

如果SYSTEM是字典管理模式,你在创建数据库时可以不指定默认临时表空间,然后SYSTEM作为默认临时存储使用。即使如此,你会在ALERT.LOG中收到一个警告,推荐使用一个默认的临时表空间,而且在将来的版本中是必须的。

如何指定默认临时表空间

在创建数据库的语句CREATE DATABASE的字句DEFAULT TEMPORARY TABLESPACE字句来指定默认临时表空间。

使用多个表空间
一个非常小的数据库可能只需要一个SYSTEM表空间;虽然如此,Oracle推荐你至少创建一个额外的表空间来单独保存用户数据,这样用户数据和数据字典信息是分离的。这样让你在管理不同的数据库操作时有更多的灵活性,并且降低了保存在同一个数据文件上字典对象和模式对象的争用。

你可以使用多个表空间来执行下列任务:

u 对数据库数据控制磁盘空间分配

u 针对数据库用户分配指定的空间限额

u 通过将单个表空间离线或者在线控制数据的可见性

u 执行部分数据库的备份和恢复操作

u 跨设备存储数据来提高性能

数据库管理员可以对表空间做如下操作:

u 创建新的表空间

u 为表空间增加新数据文件

u 为表空间的段设定或者修改默认段存储设定

u 设定表空间只读或者可读写

u 设定表空间临时或者持久

u 重命名表空间

u 删除表空间

在表空间中管理空间

表空间以区段为单位来分配空间。表空间可以使用两种不同的方式来跟踪他们的空闲和已用空间:

u 本地管理表空间:表空间管理区段

u 字典管理表空间:数据字典管理区段

当你创建表空间时,你可以选择这两个空间管理方式的一个。创建之后,你也可以使用DBMS_SPACE_ADMIN这个PL/SQL包来修改管理方式。

本地管理表空间

表空间在它的每个数据文件中维护一个位图来跟踪那个数据文件的块的空闲或者已用状态,进而来管理它的区段。位图中的每个位都对应一个块或者一组块。当一个区段被分配或者被释放可以重新使用时,Oracle会修改位图值来显示块的新的状态。这些改变不会产生回滚信息,因为它并没有更新数据字典的表(特定情况如表空间限额信息例外)。

本地管理表空间比字典管理表空间有如下优势:

u 区段的本地管理会自动跟踪临近的空闲空间,降低了区段合并的可能

u 区段的本地管理避免了递归的空间管理操作。如果在一个区段内使用或者释放空间引起另外一个操作在数据字典表或者回滚段中使用或者释放表空间的话,字典管理表空间中会产生这种递归操作。

本地管理下的区段尺寸可以自动由系统指定,当然,本地管理的表空间的所有区段也可以都是同样的尺寸,这样会覆盖对象的存储选项。

CREATE TABLESPACE和CREATE TEMPORARY TABLESPACE语句的LOCAL子句会分别指定创建本地管理的持久或者临时表空间。

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

当你使用CREATE TABLESPACE语句创建本地管理的表空间时,SEGMENT SPACE MANAGEMENT字句可以让你指定如何管理一个段内空闲和使用空间。可以有如下选择:

u AUTO

这个关键字告诉Oracle你打算使用位图来管理段内 fef 的空闲空间。这种情况下,一个位图是描述段内每一个数据块的关于插入数据库有多大的可用空间这个状态。随着块中有增加或者减少可用空间,位图中会刷新它的状态。位图可以让Oracle更自动的管理空闲空间;因为这种空间管理方式叫做自动段空间管理(automatic segment-space management)。

无论是传统的小文件表空间还是大文件表空间,本地管理的情况下都可以使用字段段空间管理。AUTO也是默认值。

u MANUAL

这个关键字告诉Oracle你打算使用空闲列表(free lists)来管理段内的空闲空间。空闲列表包含的是拥有可用空间可以插入的数据块列表。

字典管理表空间

如果你在早期Oracle版本上创建你的数据库,然后你可以使用字典管理表空间。这样的表空间使用数据字典来管理它的区段。无论区段被分配还是回收重新使用时,Oracle都会更新数据字典的适当的表。Oracle还保存数据字典表每个更新的回滚信息。因为数据字典表和回滚段是数据库的一部分,它们占用的空间和其他数据一样使用相同的空间管理方式。

多个块大小
Oracle支持一个数据库中多个块大小。SYSTEM表空间使用标准的块大小。这个值在Oracle创建时设定,可以使用任何有效值。你可以通过初始化参数DB_BLOCK_SIZE来指定标准的块大小。取值区间是2K到32K。

在初始化参数文件或者服务器参数中,你可以定义针对每个块大小的子Cache。子Cache可以在实例运行时定义。您可以创建使用任一这些块大小的表空间。SYSTEM表空间和其他大多数表空间采用标准的块大小。

多个块大小在从一个OLTP数据库到一个企业数据仓库中传输表空间比较有用。它降低了在不同块大小数据库之间传输数据的困难性。

在线和离线表空间
在数据库打开状态时,数据库管理员随时可以将除SYSTEM表空间之外的表空间在线(online,可访问)和离线(offline,不可访问)。Oracle打开状态时SYSTEM表空间必须一直在线,因为数据文件必须可以访问。

一个表空间通常是在线的,所以其中的数据对于数据库用户是可用的。虽然如此,数据库管理员可以将一个表空间离线,这样就可以维护或者备份以及恢复。

将表空间离线

当一个表空间离线时,Oracle不允许任何指向这个表空间上的对象的SQL运行。指向这个表空间数据的活动事务的完成的SQL语句在事务级别是不受影响的。Oracle保存这些完成的语句回滚数据到SYSTEM表空间的延期回滚段上。当表空间重新在线时,如果需要的话,Oracle会在表空间上应用这个回滚数据。

当一个表空间离线或者恢复在线,这些会在SYSTEM表空间的数据字典中记录。如果你离线表空间之后关闭数据库,那么数据库随后装载和重新打开时表空间仍然保持离线。

Oracle会在遇到某些错误时自动将一个表空间从在线转为离线。例如,当遇到数据库写进程DBWn在多次写入表空间的数据文件失败之后,Oracle会切换表空间为离线。用户试图访问离线表空间的数据表会得到一个错误。如果错误是媒体失败导致的磁盘I/O问题,解决问题之后,你必须恢复表空间。

表空间在特殊程序下的使用

如果你创建了多个表空间来分离不同类型的数据,你针对特定目录指定表空间离线。其他的表空间保持在线,这样他们的信息仍然可用。虽然如此,表空间离线可能会发生特殊情况。例如,如果两个表空间分别存储表数据和相应的索引数据,遵守下列情况:

u 如果包含索引的表空间离线,查询仍然可以访问表数据,因为访问表数据索引不是必需的。

u 如果包含表数 fef 的表空间离线,然后数据库的表数据就不可访问,因为访问数据是需要表的。

如果Oracle从在线表空间上拥有运行语句足够的信息,它就会运行。如果需要离线表空间的数据,这样语句会失败。

只读表空间
只读表空间的主要目的是降低备份和恢复数据库的较大的静态部分的工作量。Oracle从不更新只读表空间的数据文件,因而这些数据文件可以在只读媒体上如CDROM和WORM驱动器。

只读表空间不能修改。要想更新一个只读表空间,首先必须使表空间可以读写。更新表空间之后,你可以重新设置它为只读。

因为只读表空间不能被修改,而且在任何时间点都不会被读写,所以它们不需要重复备份。而且,如果你需要恢复你的数据库,你不需要恢复任何只读表空间,因为它们从来没有改变过。(recover,restore是有区别的,前者是恢复,后者是覆盖,恢复数据库需要先覆盖,然后再恢复,所以才说不需要恢复只读表空间)。

临时表空间的排序操作
你可以通过指定一个或多个专门用来的排序的临时表空间来更好的有效的管理排序操作。这样会有效的降低包括排序空间的分配和释放的串行化空间的管理。单一的SQL操作可以使用多个临时表空间来排序。例如,你可以在很大的表上创建索引,索引创建时的排序操作可以分布在多个表空间上。

使用排序的操作都从临时表空间中受益。排序操作包含连接、索引创建、排序、聚集计算(GROUP BY)和收集优化统计等等。在真正应用集群中这种性能提高会体现的更充分。

排序段

一个或多个临时表空间只能用于排序段。一个临时表空间不同于用户指定临时段的表空间,任何这些表空间对用户来说都是可用的。临时表空间不能包含任何持久模式对象。

排序段在一个段被平行排序操作共享时使用。每个实例的一个排序段都在指定的表空间执行排序操作。

临时表空间在你执行内存无法容纳的多个排序时能够提高性能。给定临时表空间的排序段在第一个排序操作执行时创建。排序段会自动扩展区段,直到大于或者等于那个实例所有活动排序的需要的存储为止。

临时表空间的创建

使用CREATE TABLESPACE和CREATE TEMPORARY TABLESPACE语句来创建临时表空间。

数据库之间表空间传输
表空间传输允许你传输数据库的一部分到另一个数据库,甚至可以跨平台。你可以克隆一个表空间,然后插入另一个数据库中,在数据库之间拷贝表空间,或者从一个Oracle数据库抽出表空间插入另一个Oracle数据库中,或者在两个数据库中移动表空间。

通过表空间移动数据比导入导出和卸载装载同样的数据的速度高出一个数量级,因为传输表空间只包括拷贝数据文件和集成表空间元数据。当你传输表空间时,你也可以移动索引数据,所以你不需要像导入或装载表数据时那样重建索引。

你可以跨平台传送表空间。(大部分但不是全部平台支持跨平台表空间传送)。这个可以在以下方面使用:

u 提供一个更简单高效的方式为用户在不同平台上运行的Oracle发布和散发结构化数据。

u 简化从数据仓库环境到运行在小型平台上的数据集市分配数据的过程

u 通过异构集群共享只读表空间

u 允许数据库从一个平台到另一平台的迁移

表空间档案库

一个表空间档案库是一系列表空间的合集。表空间档案库构建在文件组档案库上,但是表空间档案库只包含数据库之间需要移动或者拷贝的表空间。不同的表空间集合可能保存在一个表空间档案库中,不同版本的特定 fef 空间集合也可能保存在一起。表空间档案库中某一版本的表空间集合由以下部分组成:

u 对于表空间集合数据泵导出的dump文件

u 导出的数据泵的日志文件

u 组成表空间集合的数据文件

如何移动或拷贝一个表空间到另一个数据库

为移动或者拷贝一系列表空间,你必须先使表空间只读,拷贝这些表空间的数据文件,然后使用export/import来移动保存在数据字典中的信息(元数据)。元数据导出文件和数据文件都要拷贝到目标数据库所在机器上。传输这些文件可以使用任何拷贝平面文件的工具,如操作系统拷贝工具、FTP或者用CD分发。

在拷贝数据文件和导入元数据之后,你可以将表空间设置为读/写模式。

首先Oracle数据库将COMPATIBLE初始化参数设为10或者更高来打开表空间的数据文件,每个文件支持它所属的平台。这些文件在文件头的块的磁盘格式都是一致的,这些文件头的块是用来对文件进行标识和校验的。只读或者离线文件在它们被设为读/写或者在线模式后会获得更高的兼容性。这暗示着Oracle 10g数据库之前只读表空间在他们使用跨平台传输特性之前至少要启用读/写一次。

数据文件概述
Oracle数据库的一个表空间由一个或者多个物理数据文件组成。一个数据文件只能属于一个表空间和一个数据库。

Oracle通过指定特定大小的磁盘空间来为表空间创建数据文件,数据文件的大小还要加上文件头需要的空间。当数据文件创建时,Oracle所运行的操作系统会从文件上清除旧信息和认证信息,然后才分配给Oracle使用。如果文件很大,这个步骤可能花费大量的使间。数据库中的第一个表空间总是SYSTEM表空间,所以任何Oracle数据库创建时都要自动将数据库的第一个数据文件分配给SYSTEM表空间。

数据文件目录
当数据文件第一次创建时,分配的磁盘空间被格式化但没有包含任何用户数据。虽然如此,Oracle保留了空间来为关联的表空间(它是Oracle专用的文件)容纳将来的段的数据。随着表空间数据的增长,Oracle使用关联数据文件的空闲空间来为段分配区段。

表空间中模式对象的数据物理的保存在构成表空间的一个或多个数据文件中。注意一个模式对象并不对应特定的数据文件;相反一个数据文件是指定表空间内的任何模式对象数据的档案库。Oracle在表空间上一个或者多个数据文件为模式对象的数据分配空间。因此一个模式对象可以跨越一个或者多个数据文件。除非启用表条带化(这里数据是跨多个磁盘存储的),数据库管理员和最终用户无法控制模式对象保存在哪个数据文件上。

数据文件大小
你可以创建数据文件后修改数据文件的大小,或者你可以指定数据文件可以随着表空间内的模式对象的增长而增长。这个功能使得每个表空间拥有更少的数据文件和更简化数据文件管理。

离线数据文件
你任何时候都可以让表空间离线或者在线,当然SYSTEM表空间不可以。在你让表空间离线或者在线时,表空间的所有数据文件作为一个整体离线或者在线。

你也可以使单独的数据文件离线。虽然如此,这通常仅在某些数据库恢复过程中使用。

临时数据文件
本地管理的临时表空间拥有临时数据文件(tempfiles),它和通常的数据文件类似,但也有如下例外:

u 临时文件总是设置为NOLOGGING模式

u 你不能使一个临时文件只读

u 你不能使用ALTER DATABASE语句来创建临时文件

u 媒体恢复并不识别临时文件:

? BACKUP CONTROLFILE不会产生任何临时文件的信息

? CREATE CONTROLFIL fef E不指定临时文件的任何信息

u 当你创建和改变临时文件的大小,并不保证分配指定文件大小的磁盘空间。在特定的文件系统上(例如,UNIX)磁盘块在文件创建和改变大小时并不分配,只在块访问前创建。

u 临时文件的信息在数据字典视图DBA_TEMP_FILES和动态性能视图V$TEMPFILE中显示,但不在DBA_DATA_FILES和V$DATAFILE视图中显示。

控制文件概述
数据库控制文件是数据库成功启动和操作必须的一个小二进制文件。控制文件在Oracle数据库使用的过程中持续更新,所以它在数据库打开时必须保持可用。如果因为某些原因控制文件不可访问,然后数据库就不能正常工作了。

每个控制文件只能关联一个Oracle数据库。  
最新评论共有位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名评论