创建表空间的步骤因操作系统带的不同而不同。然而,在所有的情况中,用户都应该事先通过操作系统的功能创建一个目录结构,以便将新表
空间的数据文件(一个表空间必须要有一个数据文件)分配到相应的目录中。在大多数操作系统中,当通过添加数据文件来创建一个新表空间或
修改一个表空间时,应该指出大小和完全限定的文件名(即包括目录结构和文件的扩展名)。在每一种情况中,都由ORACLE按所指定的信息来自
动创建和格式化数据文件。
与表空间对应的物理结构是数据文件。在创建表空间的过程中要指定它所使用的数据文件的位置和文件名。实际上,在表空间的创建中,
ORACLE会完成以下几个工作:
1.在数据字典和控制文件中记录该新创建的表空间;
2.在操作系统中按指定的位置和文件名创建指定大小的操作系统文件,作为该表空间对应的数据文件;
3.在预警文件中记录创建表空间的信息。
CREATE TABLESPACE 创建(永久)表空间
CREATE BIGFILE TABLESPACE 创建大文件表空间
CREATE TEMPORARY TABLESPACE 创建临时表空间
CREATE UNDO TABLESPACE 创建撤销表空间
用户必须拥有CREATE TABLESPACE系统权限才能创建表空间。临时表空间和撤销表空间都是特殊表空间,他们与一般表空间不同的是,用户并不
能在其中创建方案对象,因此,需要在CREATE语句中添加TEMPORARY和UNDO关键词。
在ORACLE 8I以前,所有的表空间都创建为字典管理。从ORACLE 8I开始,用户能够创建本地管理的表空间,他们使用位图代替了数据字典表开
跟踪已用的和空闲的空间。因为本地管理的表空间有更好的性能,而且更加容易管理,所以,从ORACLE 9I开始,创建(永久)表空间都是本地管
理的。
创建表空间的语法是:
CREATE [SMALLFILE|BIGFILE] [PERMANENT|TEMPORARY|UNDO] TABLESPACE
DATAFILE|TEMPFILE datafile_clause[,datafile_clause]
[EXTENT MANAGEMENT LOCAL]
[AUTOALLOCATE|UNIFORM SIZE integer [K|M]]
[SEGMENT SPACE MANAGEMENT AUTO|MANUAL]
[BLOCKSIZE integer[K|M]]
[MININUM EXTENT integer [K|M]]
[LOGGING|NOLOGGING]
[ONLINE|OFFLINE [NORMAL|TEMPORARY|IMMEDIATE]];
其中,datafile_clause子句(数据文件子句)的语法是:
'path_filename_suffix' SIZE integer [K|M]
[REUSE]
[AUTOEXTEND OFF|ON]
[NEXT integer [K|M]]
[MAXSIZE UNLIMITED | integer [K|M]]
在datafile_clause子句中指定数据文件时,不能使用相对路径,只能使用绝对路径。并且,如果没有提供文件名的后缀,则无后缀。
(一)创建(永久)表空间
如果不指定PERMANENT,TEMPORARY,UNDO选项,或指定了PERMANENT选项,则创建的是永久表空间,即永久保存其中的数据库对象的数据。
有三种创建(永久)表空间的方法:
(1)使用AUTOALLOCATE区分配方式
如果DBA能够预测到表空间中存放的度喜爱那个所需要的区大小会有很大不同,则使用AUTOALLOCATE区分配方式是比较好的选择。在这种方式下
,ORACLE将自动按表空间中不同对象的大小分配相应大小的区(有一个表大小与区大小的对应关系,最小的区为64KB)。 AUTOALLOCATE区分配方
式的缺点是在表空间中可能会造成一些磁盘空间的浪费,但是这一点代价相对DBA工作量的减少来说是值得的。
CREATE TABLESPACE mytbs01 DATAFILE 'e:\mytbs01.dbf' SIZE 2M AUTOALLOCATE;
(2)使用UNIFORM区分配方式
如果DBA能够预测到表空间中存放的大部分对象都要求使用相同大小的区,那么,使用UNIFORM区分配方式是比较好的选择。在这种情况下,
ORACLE将为表空间中所有对象都分配指定的相同大小的区(默认大小是1MB)。UNIFORM区分配方式的优点是在表空间中不会产生磁盘碎片,节约
磁盘空间。
CREATE TABLESPACE mytbs02 DATAFILE 'e:\mytbs02_1.dbf' SIZE 1M, 'e:\mytbs02_2' SIZE 2M UNIFORM SIZE 128K;
(3)在数据字典子句中指定数据文件的扩展方式
可以在数据文件子句中指定数据文件的扩展方式。
CREATE TABLESPACE mytbs03 DATAFILE 'e:\mytbs03_1.dbf' SIZE 1M AUTOEXTEND ON NEXT 2M MAXSIZE 11M;
但是此时就不能再指定表空间的区分配方式了,否则会有错误提示。
(4)使用AUTO段管理方式
可以使用SEGMENT SPACE MANAGEMENT子句来指定表空间的段管理方式,即管理段中已用数据块和空闲数据块的方式。虽然ORACLE极力推荐为本
地管理的永久表空间使用AUTO段管理方式,但在ORACLE 10G中如果不使用SEGMENT SPACE MANAGEMENT子句指定AUTO,则使用MANUAL段管理方式。
CREATE TABLESPACE mytbs04 DATAFILE 'e:\mytbs04_1.dbf' SIZE 3M REUSE UNIFORM SEGMENT SPACE MANAGEMENT AUTO;
(5)使用BLOCKSIZE选项和创建非标准块表空间
有时候要求数据库支持多个块大小的表空间(大表的数据存放在大块的表空间上更有效),即必须创建有不同于初始化参数DB_BLOCK_SIZE指定的
标准的ORACLE块大小的表空间,此时就可以使用这个选项。这个选项只适用于永久表空间。
例如现在DB_BLOCK_SIZE参数的值是8K,则可以创建BLOCKSIZE选项是8K的表空间(如果不用BLOCKSIZE选项指定块的大小,就采用DB_BLOCK_SIZE
参数指定的大小)。
CREATE TABLESPACE mytbs05 DATAFILE 'e:\mytbs05_1.dbf' SIZE 3M REUSE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT AUTO;
但可能不能创建BLOCKSIZE参数值为16K的表空间,否则会有错误提示:
CRAETE TABLESPACE mytbs06 DATAFILE 'e:\mytbs06_1.dbf' SIZE 3M REUSE BLOCKSIZE 16K SEGMENT SPACE MANAGEMENT AUTO;
如果要为不同的表空间指定不同的块大小,就需要先修改初始化参数文件中的数据高速缓存区参数
(DB_2K_CACHE_SIZE,DB_4K_CACHE_SIZE,DB_8K_CACHE_SIZE,
DB_16K_CACHE_SIZE,DB_32K_CACHE_SIZE)才行
(二)创建大文件表空间
大文件表空间是ORACLE 10G数据库的新特性,而且仅在本地管理的表空间中才支持大文件表空间。这种表空间只能包括一个数据文件,该数据
文件可以包含4G个块。能显著提高ORACLE数据库的存储能力并减少数据文件的个数。
CREATE BIGFILE TABLESPACE mybigtbs01 DATAFILE 'e:\mybigtbs01_1.dbf' SIZE 2M SEGMENT SPACE MANAGEMENT AUTO;
在创建大文件表空间时可以指定区分配方式,但不能将段管理方式指定为MANUAL方式。
CREATE BIGFILE TABLESPACE mybigtbs02 DATAFILE 'e:\mybigtbs02_1.dbf' SIZE 2M UNIFORM SIZE 128K;
但是
CREATE BIGFILE TABLESPACE mybigtbs03 DATAFILE 'e:\mybigtbs03_1.dbf' SIZE 2M SEGMENT SPACE MANAGEMENT MANUAL;就会出现错误提示
。
(三)创建临时表空间
如果指定了TEMPORARY选项,则创建的就是临时表空间,即ORACLE会用这种表空间来创建临时段,以便排序操作时使用。这个临时段是全体用户
共享的,即使排序操作结束了,ORACLE也不会释放这个临时段。这可以提高排序操作较多的应用系统的执行性能,因为ORACLE不必每次遇到一
个排序操作就分配一个临时段,可以采用以下方法创建临时表空间:
(1)创建临时表空间
如果在数据库运行过程中经常有大量排序工作要做,为了提高排序性能就应该建立多个链式表空间。
CREATE SMALLFILE TEMPORARY TABLESPACE mytmptbs01 TEMPFILE 'e:\mytmptbs01_1.dbf' SIZE 4M UNIFORM SIZE 64K;
必须用关键字TEMPFILE代替DATAFILE。另外,临时表空间使用临时文件而不是数据文件来创建。临时文件只能与临时表空间一起使用,不需要
备份,也不会把数据修改记录到重做日志中。
在创建临时表空间时,区分配方式不能指定为AUTOALLOCATE方式,否则会出现错误提示。
(2)创建大文件临时表空间
从ORACLE 10G开始,允许使用CREATE BIGFILE TEMPORARY TABLESPACE命令来创建只包含一个临时文件的大文件临时表空间。
CREATE BIGFILE TEMPORARY TABLESPACE mybigtmptbs02 TEMPFILE 'e:\mybigtmptbs02_1.dbf' SIZE 4M UNIFORM SIZE 64K;
在创建临时表空间时,段管理方式不能指定为AUTO方式,否则会出现错误提示。
(四)创建撤销表空间
撤销表空间(UNDO TABLESPACE)用户存储撤销段,该表空间只能使用本地管理方式。
当执行CREATE DATABASE语句创建数据库时,可以创建UNDO表空间,并且DBA可以使用该UNDO表空间来管理UNDO数据。创建数据库后,可以使用
CREATE UNDO TABLESPACE命令来创建UNDO表空间。
CREATE UNDO TABLESPACE myundotbs01 DATAFILE 'e:\myundotbs01_1.dbf' SIZE 4M; AUTOALLOCATE;
CREATE UNDO TABLESPACE myundotbs02 DATAFILE 'e:\myundotbs02_1.dbf' SIZE 4M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED;
创建UNDO表空间时不能指定统一区大小的选项,否则会有错误提示。
如果想使用UNDO表空间的管理功能,就需要在初始化参数文件中设置如下参数:
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
其中,undo_management参数必须设置成AUTO,否则将使用回退表空间(ROLLBACK TABLESPACE);undo_tablespace参数用于指定要使用哪个UNDO
表空间。
很显然可以创建多个UNDO表空间,但一次只能使用一个UNDO表空间。
可以用以下的语句修改初始化参数文件,就爱你个当前使用的UNDO表空间切换到另一个UNDO表空间。
ALTER SYSTEM SET undo_tablespace='new_undo_tablespace' SCOPE=SPFILE;
当一个UNDO表空间切换到另一个UNDO表空间之后,就可以在前一个UNDO表空间中的活跃事务全部完成后删除就的表空间。
可以修改UNDO表空间,如同增加一个数据文件、重新命名表空间、联机/脱机数据文件、备份表空间等。与其他表空间一样,正在使用的UNDO表
空间是不允许被删除的,即只有在其中已经没有未提交的事务时才能将其删除。
可以用V$TRANSACTION视图来检查其中是否还有未提交的事务。
相关推荐
通过创建不同的表空间,可以更好地管理和组织数据库中的数据。 #### 创建普通表空间 根据提供的内容,创建一个名为`ndgl_isc_data`的普通表空间的命令如下: ```sql CREATE TABLESPACE ndgl_isc_data DATAFILE 'E:\...
创建表空间是数据库管理的基础,因为它为数据提供了存储空间。下面将详细介绍如何创建表空间以及如何在Oracle中创建表、主键、外键和序列。 1. 创建表空间: 在Oracle中,首先需要创建一个表空间来存储未来的数据。...
6. 更新引用:检查并更新任何指向atf_ygj表空间对象的引用,确保它们指向新的ygj_data表空间对象。 7. 清理源表空间:在确认数据正确无误后,可以删除atf_ygj表空间中的对象,释放空间。 在整个过程中,还需要注意...
### 创建Oracle表空间及相关操作知识点 ...以上内容总结了如何创建Oracle表空间以及相关的数据库管理操作,包括定义常量、创建用户、授权和数据导入。这对于Oracle数据库的日常管理和维护具有重要意义。
- 确认表空间不再被任何对象引用。 - 离线数据文件: ```sql $ sqlplus /nolog SQL> conn /as sysdba; SQL> shutdown abort SQL> startup mount SQL> alter database datafile 'filename' offline drop; ...
实验报告涉及的是数据库的创建和管理,主要涵盖了创建数据库与表空间的相关操作,这是数据库管理系统(DBMS)的基础知识。数据库是存储数据的系统,而表空间则是数据库中存储数据的逻辑划分,用于组织和管理数据库...
在Oracle 10g数据库管理系统中,创建表空间、数据链路、同义词、序列号和视图是管理和操作数据库的重要环节。下面将详细解释这些概念及其创建语句。 **1. 创建表空间(Tablespaces)** 表空间是Oracle数据库中存储...
在Oracle数据库管理系统中,创建表空间、表、主键、外键和序列是数据库设计的基础操作。以下是对这些概念的详细解释以及如何在Oracle中执行这些操作。 **创建表空间** 表空间是Oracle数据库中存储数据文件的地方。...
在C#编程中,命名空间(Namespace)是一种组织代码的方式,它可以帮助我们更好地管理大型项目,避免类名冲突。本文将详细介绍如何在C#中创建并使用自定义的命名空间。 首先,创建自定义命名空间的基本步骤是声明一...
与数组不同,链表中的元素不是存储在连续的内存位置,而是通过节点之间的引用或指针连接起来。这种数据结构允许动态地添加、删除和访问元素,特别适合处理大小不确定或频繁变动的数据集合。 在本主题中,“链表的...
在确认表空间独立性后,可以开始创建传输的表空间集。这通常涉及使用Oracle的导出(EXPDP)工具,由具有EXP_FULL_DATABASE角色的用户执行。导出操作会生成一个转储文件,包含了表空间的数据和元数据,这将在目标系统...
本PPT课件主要围绕数据表的创建、管理和操作展开,涵盖了数据库的基础知识、表的设计、数据类型的选取以及表的约束等内容。 首先,我们要了解在SQL Server 2005中创建和管理数据库的基本操作。`CREATE DATABASE`...
管理表空间有助于合理分配和扩展数据库的存储资源。 **同义词**: 同义词是数据库中用于提供别名的对象。它们可以指向表、视图、存储过程或其他数据库对象,使得在不同环境下或者为提高可读性时,可以使用相同的...
### C# Excel 命名空间的引用方法 在日常工作中,我们经常需要与Excel文件进行交互,无论是读取数据还是写入数据。C#作为一种强大的面向对象编程语言,提供了丰富的库来支持这一需求。其中一种常用的方式是通过`...
本章主要围绕SQL Server 2005,一种广泛使用的数据库管理系统,探讨如何创建和管理销售管理数据库中的数据表。这一章节的目标是帮助读者掌握数据库设计和操作的基础知识,确保数据的完整性和一致性。 首先,了解...
在CAD二次开发中,块表的创建是一项重要的技术点,它能够帮助用户更好地管理和利用图形资源。 本实验旨在通过实践操作,使参与者了解并掌握如何使用C#语言实现CAD中块表的基本创建方法。具体来说,参与者将学习到...
在Oracle 10g中,创建数据库和表是管理和操作数据的基础步骤。Oracle是一个关系数据库管理系统(RDBMS),它的核心在于将数据组织成二维表结构,这些表之间通过关系进行连接,形成了复杂的数据模型。 **数据库...
在C语言程序设计中,动态存储空间管理和链表是两个重要的概念。动态存储空间管理允许程序在运行时根据需要分配和释放内存,而链表是一种高效的数据结构,它通过节点间的指针链接来存储和组织数据。 动态存储空间...
【SQL Server 数据库表的创建与管理】 在数据库管理中,SQL Server 提供了一套强大的工具和机制,用于创建和管理高效、可靠的数据表。本专题资料主要关注于数据库表的创建与管理,特别是如何确保数据的完整性。数据...
在SQL Server中,数据库和表的创建是数据库管理的基础操作,用于存储和组织数据。本文将详细介绍如何使用SQL语句创建数据库和表,并探讨约束在其中的作用。 首先,让我们了解如何创建一个数据库。在SQL Server中,...