精华内容
下载资源
问答
  • 2019-03-10 21:14:27

    数据库表空间扩容

    查看数据库表空间大小

    SELECT a.tablespace_name "表空间名", total "表空间大小", free "表空间剩余大小", (total - free) "表空间使用大小", total / (1024 * 1024 * 1024) "表空间大小(G)", free / (1024 * 1024 * 1024) "表空间剩余大小(G)", (total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)", round((total - free) / total, 4) * 100 "使用率 %" FROM (SELECT tablespace_name, SUM(bytes) free FROM dba_free_space GROUP BY tablespace_name) a, (SELECT tablespace_name, SUM(bytes) total FROM dba_data_files GROUP BY tablespace_name) b WHERE a.tablespace_name = b.tablespace_name;

    需要扩容的表空间总空间大小

    根据已有的表空间大小及表空间使用空间的增速,来判断是在原空间中增加大小,还是另加一个文件来存储数据(一个表空间,可以指向多个数据库存储文件):

    1、直接在原表空间上增加:alter database datafile '表空间文件位置.dbf' resize 10240m;--扩容10G;
    2、另外为表空间再建立一个新的dbf,用来存储新的数据:alter tablespace GZDATACUR add datafile '表空间文件位置.dbf' size 10240m;--增加一个10G的表空间文件;

    更多相关内容
  • 扩充数据库表空间

    千次阅读 2021-02-05 09:46:41
    ALTER TABLESPACE ADD DATAFILE ,[REUSE]NEXT MAXSIZE <...如:增加文件是d:\dbfs\mydatabase02.dbf的200M的表空间。ALTER TABLESPACE ADD DATAFILE 'd:\dbfs\mydatabase02.dbf',200MOracle概念(Oracle10.2)3...

    ALTER TABLESPACE ADD DATAFILE ,

    [REUSE]

    NEXT MAXSIZE <>中是你要填的内容,有|是选其一.

    如:增加文件是d:\dbfs\mydatabase02.dbf的200M的表空间。

    ALTER TABLESPACE ADD DATAFILE 'd:\dbfs\mydatabase02.dbf',

    200M

    Oracle 概念(Oracle 10.2)

    3、表空间、数据文件和控制文件

    这一章描述了Oracle数据库的主要逻辑数据库结构---表空间以及其对应的数据文件。

    本章包含下列内容:

    u表空间、数据文件和控制文件介绍

    u表空间概述

    u数据文件概述

    u控制文件概述

    表空间、数据文件和控制文件概述

    Oracle数据库逻辑上在表空间保存数据,物理上在表空间对应的数据文件保存数据。图3-1描述了其中的关系。

    图3-1 数据文件和表空间

    cncpt037.gif

    数据库、表空间和数据文件紧密关联,但是它们还是有重要的区别:

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

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

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

    Oracle管理文件

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

    u表空间

    u重做日志文件

    u控制文件

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

    为数据库分配更多的空间

    表空间的大小就是组成表空间的数据文件的大小之和。数据库的大小是组成数据库的表空间的大小总和。

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

    u为表空间增加数据文件

    u增加新的表空间

    u增加数据文件的大小

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

    图3-2 通过给表空间增加数据文件的方式扩充数据库

    cncpt038.gif

    同样,你可以创建一个新的表空间(包含至少一个数据文件)来提高数据库的大小。图3-3说明了这种情况。

    图3-3 通过增加表空间扩充数据库

    cncpt039.gif

    扩充数据库的第三种办法就是修改数据文件的大小或者使允许现存表空间的数据文件在有足够空间的情况下根据需要动态增长。可以通过调整现在文件大小或者为文件增加自动扩展属性来达到上述目的。图3-4说明了这种情况。

    图3-4 通过动态扩充数据文件来扩充数据库

    cncpt040.gif

    表空间概述

    一个数据库由一个或多个叫做表空间的逻辑存储单位组成。表空间有过个叫做段的逻辑存储单位组成,段由多个区段组成。区段由一系列连续的块组成。

    这一部分包含表空间的下列话题:

    u大文件表空间

    uSYSTEM表空间

    uSYSAUX表空间

    uUndo表空间

    u默认临时表空间

    u使用多种表空间

    u表空间空间管理

    u多个块大小

    u在线和离线表空间

    u只读表空间

    u临时表空间的排序操作

    u数据库之间的表空间传送

    大文件表空间

    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避免在不支持条带化的系统上创建大文件数据库。因为它不支持并发执行和并发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表空间增加更多的数据文件来扩展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字句可以让你指定如何管理一个段内空闲和使用空间。可以有如下选择:

    uAUTO

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

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

    uMANUAL

    这个关键字告诉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如果包含表数据的表空间离线,然后数据库的表数据就不可访问,因为访问数据是需要表的。

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

    只读表空间

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

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

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

    临时表空间的排序操作

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

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

    排序段

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

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

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

    临时表空间的创建

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

    数据库之间表空间传输

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

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

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

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

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

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

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

    表空间档案库

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

    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 CONTROLFILE不指定临时文件的任何信息

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

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

    控制文件概述

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

    每个控制文件只能关联一个Oracle数据库。

    控制文件条目

    控制文件包含相关数据库的信息,实例启动或者正常操作时都需要访问。控制文件的信息只能被Oracle修改;数据库管理员和用户都不能编辑控制文件。

    在其他方面,控制文件包含如下信息:

    u数据库名称

    u数据库创建的时间戳

    u相关数据文件和重做日志文件的名称和位置

    u表空间信息

    u数据文件离线范围

    u日志历史

    u归档日志信息

    u备份集和备份组件信息

    u数据文件和重做日志的备份信息

    u数据文件拷贝信息

    u当前日志序列号

    u检查点信息

    数据库名称和时间戳来源于数据库创建时。数据库名称来源于初始化参数DB_NAME或者CREATE DATABASE语句使用的名字。

    每次数据文件或者重做日志文件被增加、重命名或者从数据库中删除,控制文件都会更新来反映物理结构的修改。记录这些改变是为了:

    uOracle可以在数据库启动过程中标识出数据文件和重做日志文件

    uOracle可以在数据库恢复时标识出需要的或可用的文件

    因而,如果你修改了你的数据库的物理结构(使用ALTER DATABASE语句),然后你应该立刻对你的控制文件做一个备份。

    控制文件还记录检查点信息。每3秒钟,检查点进程(CKPT)在控制文件中记录重做日志中的检查点位置信息。在数据库恢复过程中,这些信息告诉Oracle在重做日志组中的这个点之前的所有重做条目不需要进行恢复;它们已经写入到数据文件了。

    多路复用控制文件

    和重做日志文件一样,Oracle可以在同一个数据库中使用多个同样的控制文件来并行打开和写入。通过在多个磁盘中多路复用控制文件,你可以避免控制文件的单点失败问题。如果包含控制文件的一个磁盘崩溃,然后当前实例在Oracle视图访问损坏的控制文件时会失败。虽然如此,当其他磁盘上的当前控制文件可用时,一个实例可以重新启动而不需要进行数据库恢复。

    如果一个数据库的所有数据文件在操作时都丢失了,然后实例会中断,需要进行媒体恢复。如果当前的控制文件拷贝不可用,需要使用旧的控制文件备份的话,媒体恢复是个很复杂的过程。所以强烈建议你遵循如下建议:

    u每个数据库都使用多路复用

    u在不同的物理盘上保存一个拷贝

    u使用操作系统镜像

    u监控备份

    展开全文
  • Linux环境下达梦数据库表空间管理

    Linux环境下达梦数据库表空间管理

    一、创建表空间

    创建一个名为T3的表空间,包含两个数据文件,文件大小为128MB。

    create tablespace T3 datafile /dm8/data/DAMENG/T1.DBF size 128,‘/dm8/data/DAMENG/T2.DBF'size 128 ;

    注:文件大小的单位默认为MB,在命令中只写数据文件大小的阿拉伯数字即可。

    二、修改表空间

    1、重命名数据文件

    将表空间T3中的数据文件T1.DBF重命名为T01.DBF。

    AlTER tablespace T3 OFFLINE;

    ALTER tablespace T3 RENAME datafile /dm3/data/DAMENG/T1.DBFto /dm8/data/DAMENG/T01.DBF;

    注:在重命名文件时,必须先将数据设为离线状态,然后才能重命名文件。

    2、表空间中增加数据文件

    给表空间T03中增加增加数据文件T3.DBF,初始大小为128MB,自动扩展,每次扩展5MB,最大1024MB。

    alter tablespace T03 add datafile '/dm8/data/DAMENG/T3.DBF' size 128 autoextend on next 5 maxsize 1024 ;

    注:在修改表空间文件大小时,修改后的文件大小必须大于原文件的大小。

    3、修改表空间名字

    将表空间T3的名字修改为T03。

    ALTER TABLESPACE T3 ONLINE;

    ALTER TABLESPACE T3 to T03;

    注:修改表空间的用户必须具有修改表空间的权限,一般登录具有DBA权限的用户。表空间重命名必须处于ONLINE状态。

     

    4、修改T03表空间缓冲池名称为KEEP。

    ALTER tablespace T03 CACHE=KEEP

    三、删除表空间

    drop tablespace T03 ;

    注:(1)SYSTEM、ROLL和TEMP等空间不允许被删除。

    (2)删除表空间的用户必须具有删除表空间的权限,一般登录具有DBA权限的用户账户进行创建、修改、删除等表空间管理活动。

    (3)如果表空间存放了数据对象,则不允许删除表空间;如果确实要删除表空间,则必须先删除空间中的数据对象。 

    展开全文
  • Oracle数据库表空间存储位置迁移

    千次阅读 2018-02-09 16:10:14
    问题描述:Oracle表空间所在的硬盘空间不足,需要将表空间迁移到空间较大的硬盘。1、使用sys或者system用户使用sysdba权限登录oracle;2、查询所有的表空间以及表空间所在地址;select * from dba_data_files;3、将...

    问题描述:Oracle表空间所在的硬盘空间不足,需要将表空间迁移到空间较大的硬盘。

    1、使用sys或者system用户使用sysdba权限登录oracle;

    2、查询所有的表空间以及表空间所在地址;

    select * from dba_data_files;

    3、将需要迁移的表空间置为offline状态;

    alter tablespace 表空间名称 offline;

    例如:

    alter tablespace TEST_SPACE offline;

    4、将需要迁移的表空间文件复制到目标文件夹;

    例如:

    将C:\oracledata\TEST_SPACE.DBF文件拷贝到D:\oracledata\TEST_SPACE.DBF。

    5、修改需要迁移的表空间指向地址;

    alter tablespace 表空间名称 rename datafile '原地址' to '目标地址';

    例如:

    alter tablespace TEST_SPACE rename datafile 'C:\oracledata\TEST_SPACE.DBF' to 'D:\oracledata\TEST_SPACE.DBF';

    6、将需要迁移的表空间置为online状态;

    alter tablespace 表空间名称 online;

    例如:

    alter tablespace TEST_SPACE online;

    7、可能出现的问题:

    第6步如果出现错误:ora-01113 文件n 需要介质修复,在cmd窗口使用sys/system登录,使用recover datafile n;语句恢复。

    例如:

    ora-01113 文件10 需要介质修复,输入语句:recover datafile 10;

    展开全文
  • 怎么解决数据库表空间不足

    千次阅读 2021-01-19 06:31:34
    一、数据库表空间不足导致了,插入操作会报出conn.msg = ORA-01653: *******名字********无法通过 8192 (在表空间 USERS 中) 扩展ORA-06512: 在 "调用的函数", line 58ORA-01403: 未找到任何数据[db.cpp:233]这...
  • oracle数据库表空间扩容问题

    千次阅读 2021-08-24 10:23:40
    1.查看表空间使用率 SELECT B.FILE_NAME 物理文件名, B.TABLESPACE_NAME 表空间名称, B.BYTES/1024/1024 大小M, (B.BYTES-SUM(NVL(A.BYTES,0)))/1024/1024 已使用M, SUBSTR((B.BYTES-SUM(NVL(A.BYTES,0)))/(B...
  • db2查看表空间 连接db2数据库 Db2 connect to xxx user xxx using xxx ...增加表空间容器: db2 "ALTER TABLESPACE 表空间名 ADD (file '文件路径' 30G)" 修改表空间大小: db2 ALTER TABLESPACE.
  • 达梦数据库表空间和用户管理

    千次阅读 2019-12-19 10:58:59
    达梦数据库表空间和用户管理 达梦数据库是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,为国产数据库中的佼佼者。 在当前严酷的国际竞争环境下,打破oracle、sqlserver等数据库的垄断,建设有自主...
  • 达梦数据库创建表空间

    千次阅读 2020-04-12 20:41:27
    达梦数据库的数据是存储在表空间下的。 创建表空间时需要指定表空间名和拥有的数据文件列表。 通过图形化界面在一个表空间下可以添加多个.dbf文件,其实,通过命令方式也可以创建一个表空间拥有多个.dbf文件,比如...
  • 文章目录Oracle数据库查询表空间使用情况、扩容表空间命令脚本(dba、ETL必备)前言一、查看数据库每个表空间的大小二、查看数据库剩余表空间大小三、检查系统中所有表空间总体空间四、查询oracle表空间使用情况(重点...
  • 达梦数据库表空间及用户管理

    千次阅读 2019-09-18 13:55:09
    一、达梦数据库表空间的管理 1、达梦数据库表空间介绍 Select tablespace_name from dba_tablespace; 1)SYSTEM表空间--> 系统表空间有很多的数据字典等 2)ROLL表空间-->回滚表空间 MVCC(事务多版本机制...
  • 关于oracle数据库表空间自动增长

    千次阅读 2017-11-07 10:16:45
    -- 查看表空间的名字及文件所在位置 select tablespace_name,  file_id,  file_name,  round(bytes / (1024 * 1024), 0) total_space  from dba_data_files  order by tablespace_name; -- 修改表空间大小 a
  • ALTER TABLESPACE SYSTEM ADD DATAFILE ‘D:\app\Administrator\oradata\orcl\SYSTEM02.DBF’ SIZE 100M alter database datafile ‘D:\app\Administrator\oradata\orcl\SYSTEM02.DBF’ autoextend on next 50m ...
  • oracle数据库表空间追加数据库文件方法 针对非大文件方式表空间,允许追加文件进行表空间的扩展,单个文件最大大小是32G 第一种方式:表空间增加数据文件 1、alter tablespace spacess1 add datafile 'G:\spacess...
  • oracle数据库扩展表空间的四种方法

    千次阅读 2019-07-25 16:00:33
    扩展表空间,为其增加更多存储空间,有四种方法: 第一种:增加数据文件 alter tablespace data01 add datafile 'd:\java\test\data02.dbf’size 2m SQL> alter tablespace data01 add datafile 'd:\java\test\...
  • oracle 数据库表空间扩展

    千次阅读 2018-10-23 10:24:47
    oracle 增加数据库表空间 方法一扩展数据库文件空间: 第一步:查询表空间使用情况 select a.tablespace_name as “表空间名”, a.bytes / 1024 / 1024 as “表空间大小(M)”, (a.bytes - b.bytes) / 1024 / 1024 as ...
  • Oracle 数据库 增加表空间容量

    千次阅读 2014-11-09 17:25:20
    1、首先查看数据文件的存放位置: 2、查看表空间已使用空间 3、查看表空间空闲空间 4、给NEWBS表空间增加一个数据文件
  • 达梦数据库表空间不足的解决方法

    千次阅读 2019-09-29 17:59:10
    大家知道,达梦数据库中的表空间是由一个或多个数据文件组成。当表空间空间不足的情况下,最自然想到的办法当然是修改数据文件的大小。这里我们利用管理工具来进行演示: 首先右键点击表空间名称,点击修改 双击...
  • 数据库表空间满了怎么办?

    千次阅读 2018-12-14 11:46:40
    有以下处理方法: 方法1:修改数据文件的扩展性 ...方法2:给表空间增加新的数据文件 alter tablespace 表空间名 add datafile '数据文件路径‘ size 1000m autoextend on next 100m maxsize 40...
  • 检查之后发现表空间满了,随后把相应表空间进行了扩展,顺带总结了Oracle检查&调整表空间的sql语句如下: ##--查看某张表的表空间 select table_name,tablespace_name from user_tables where TABLE_NAME='表名'...
  • ORACLE_表空间扩展方法

    2014-04-10 16:03:31
    ORACLE_表空间扩展方法详细介绍,查看表空间的名字及文件所在位置,对于oracle数据库表空间,除了用手动增加大小外,还可以增加数据文件等方式扩展表空间大小
  • 数据库服务:数据库表空间扩容

    千次阅读 2018-08-23 16:33:33
    数据库表空间扩容是我们在运维过程中经常需要做的事情,本文分享一次在扩容表空间中遇到的情况以及针对本次情况的一些想法。   记一次在运维过程中遇到的问题,在最近的一次表空间扩容中遇到的问题,该表表空间...
  • 增加表空间即向表空间增加数据文件,表空间大小就是数据文件总大小。   检查Oracle各个表空间的增长情况(各表空间使用率) select A.tablespace_name,(1-(A.total)/B.total)*100 used_percen...
  • Oracle表空间增加方法

    千次阅读 2019-02-13 17:36:20
    Oracle表空间增加方法 操作前须知: 一、在操作前请确保使用者拥有DBA权限 二、拥有客户端工具(sqlplus、plsql工具) 三、数据库服务器磁盘存储具有充足的空间 1、查询当前数据库表空间使用量 SELECT TABLESPACE_...
  • 在目录——PostgreSQL(pg_catalog)——数据——pg_database中可以查看多了一个数据库TestDb1: select oid,* from pg_database;   此时,在E:\PostgreSQL\data\base下的文件夹如下:
  • 一个数据库可以有多个表空间,一个表空间里可以有多个表空间就是存多个的物理空间; 可以指定表空间的大小位置等。 创建表空间:create tablespace ts1 datafile 'C:\tablespace\ts1.dbf' size 50M; 自动扩展...
  • 一、空间数据库引擎概述 空间数据库引擎的概念最早由ESRI提出。ESRI对SDE的定义是:从空间数据管理的角度看,SDE是一个连续的空间数据模型,借助这一模型,我们可以将空间数据加人到关系数据库系统(RDBMS)中去。 ...
  • 数据库表设计

    千次阅读 2020-10-16 15:03:06
    我们在设计数据库的时候,是否会突破常规,找到最适合自己需求的设计方案,下面来举个例子: 常用的邻接设计,都会添加 一个 parent_id 字段,比如区域(国、省、市、区): CREATE TABLE Area( [id]...
  • 实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在Oracle上创建了一个用户,创建时,没有给这个用户指定默认表空间,所以这...
  • 达梦数据库表空间增删改查

    千次阅读 2020-12-04 11:11:56
    查看表空间数据文件信息 select * from dba_data_files; 查看数据文件空闲信息 select * from dba_free_space; 表空间创建 create tablespace TEST datafile 'C:\dmdbms\data\DAMENG\TEST.DBF' size 128 autoextend ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 441,209
精华内容 176,483
关键字:

怎么增加数据库表空间