第5章 存储管理(3)

2019-08-03 14:56

单击“创建”按钮,进入创建数据文件界面。在此界面的一般信息选项卡中可以输入创建数据文件的名称、文件目录、所在表空间、文件大小和存储参数等信息,如图5-10所示。

图5-10 创建数据文件界面

其中,创建数据文件的各项参数设置可以参考5.1.1节在创建表空间时添加数据文件的操作。这里不再累述。

采用命令形式来创建数据文件也比较容易,如下面的语句用来创建TEST表空间的数据文件TEST.DBF,其实就是在创建表空间的同时创建了对应的数据文件。

SQL> CREATE TABLESPACE TEST DATAFILE

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\TEST.DBF' SIZE 10M REUSE; 表空间已创建。

对于创建临时表空间的数据文件,可以采用下面的语句。

SQL> CREATE TEMPORARY TABLESPACE TS_TEMP TEMPFILE

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\TS_TEMP.DBF' SIZE 10M REUSE; 表空间已创建。

注意:创建临时表空间的命令为CREATE TEMPORARY TABLESPACE,后面的DATAFILE参数也变成TEMPFILE。

5.2.2 向表空间添加数据文件

创建表空间的同时将创建数据文件,Oracle系统也允许在表空间创建以后再向表空间中添加数据文件。通过向表空间中添加数据文件,可以达到改变表空间大小的目的。

通过命令的方式可以向表空间添加数据文件。Oracle系统提供了ALTER TABLESPACE命令用来完成此操作。例如,执行下面的语句可以向USERS表空间添加一个大小为5M的数据文件:

SQL>ALTER TABLESPACE USERS ADD DATAFILE

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS02.DBF' SIZE 5M AUTOEXTEND ON NEXT 5M MAXSIZE 20M; 表空间已更改

其中,SIZE值为文件大小,NEXT值为文件扩展时的最小尺寸,MAXSIZE值为文件能够自动扩展的最大尺寸。

查看添加的数据文件,可以打开“D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\”文件夹,发现该目录下存在一个新的数据文件USERS02.DBF,文件大小为5M。在OEM工具里查看表空间USERS,同样也发现已经新增了名为USERS02.DBF的数据文件,如图5-11所示。

图5-11 向表空间添加数据文件

选中数据文件USERS02.DBF,单击“编辑”按钮,可以编辑数据文件USERS02.DBF的有关属性,包括是否脱机、文件大小以及存储方式等。如图5-12所示。

图5-12 编辑数据文件

向表空间添加数据文件也可以直接在OEM工具中完成,选中要添加数据文件的表空间,在“操作”下拉列表框中选择“添加数据文件”,单击“开始”按钮,在随后出现的“添加数据文件”界面中输入必要的参数。

注意:对于大文件表空间来说,因为大文件表空间只能有一个数据文件,所以不允许向大文件表空间添加数据文件。但可以使用ALTER DATABASE语句来改变大文件表空间的数据文件大小。

5.2.3 改变数据文件的大小

在创建表空间完成后,通过向表空间中添加数据文件可以改变表空间的大小,也可以直接改变现有数据文件的大小或存储方式,同样达到改变表空间大小的目的。

Oracle系统可以使用ALTER DATABASE语句来改变数据文件的大小。对于有些数据库中的数据文件数量达到数据库所允许的最大数量时,使用这种方法非常有效。

例如,下面的语句将数据文件USERS02.DBF大小由5M增加为10M。

SQL> ALTER DATABASE DATAFILE

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF' RESIZE 10M; 数据库已更改。

下面的语句将数据文件USERS02.DBF大小由5M减少为2M。

SQL> ALTER DATABASE DATAFILE

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS02.DBF' RESIZE 2M; 数据库已更改。

注意:减小表空间的大小不能少于表空间中所存储的数据容量,否则Oracle系统会提示错误信息。

改变数据文件的大小还可以通过修改数据文件的存储方式来实现。将数据文件设置为自动扩展,这样当表空间的容量使用完时可以不用DBA立即进行手工干涉,确保应用程序不会因表空间的容量不够而导致系统中止。

在Oracle 11g中,可以在ALTER DATABASE、ALTER TABLESPACE、CREATE DATABASE、CREATE TABLESPACE语句中指定AUTOEXTEND ON子句来启用自动扩展,或指定AUTOEXTEND OFF子句来取消自动扩展。

例如,下面的语句取消了USERS02.DBF文件的自动扩展。首先查看DBA_DATA_FILES数据字典来确定数据文件是否自动扩展。

SQL> SELECT TABLESPACE_NAME,FILE_NAME,AUTOEXTENSIBLE FROM DBA_DATA_FILES; TABLESPACE_NAME FILE_NAME AUT ---------------- ----------------------------------------- ----- USERS D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF YES SYSAUX D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\SYSAUX01.DBF YES UNDOTBS1 D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\UNDOTBS01.DBF YES SYSTEM D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\SYSTEM01.DBF YES EXAMPLE D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\EXAMPLE01.DBF YES USERS D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS02.DBF YES XXGCX D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\XXGCX.DBF TEST D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\TEST.DBF 已选择8行。

SQL>ALTER DATABASE DATAFILE

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS02.DBF' AUTOEXTEND OFF; 数据库已更改

SQL>SELECT TABLESPACE_NAME,FILE_NAME,AUTOEXTENSIBLE FROM DBA_DATA_FILES WHERE TABLESPACE_NAME='USERS';

TABLESPACE_NAME FILE_NAME AUT ----------------- ------------------------------------ ------- USERS D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS01.DBF YES USERS D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS02.DBF NO

可以看到USERS02.DBF数据文件的自动扩展已经被禁用。

下面的语句在USERS表空间中添加一个自动扩展的数据文件USER03.DBF。

SQL>ALTER TABLESPACE USERS ADD DATAFILE

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS03.DBF' SIZE 5M AUTOEXTEND ON NEXT 5M MAXSIZE 20M; 表空间已更改。

5.2.4 数据文件的联机和脱机

数据文件在联机状态下,用户可以访问数据库中的数据,数据文件在脱机状态下,用户无法访问数据库中的数据。通常情况下,将数据文件脱机的目的有:

(1)脱机备份数据文件。

(2)移动或重命名数据文件,先将该数据文件脱机,或将包含数据文件的表空间脱机。 (3)数据库载入数据文件时出错,并自动将该数据文件脱机。此时,DBA可以在解决

问题后,手工将该数据文件联机。

(4)某个数据文件损坏或丢失,在打开数据库前必须将该数据文件脱机。 值得注意的是,在将数据文件所属的表空间脱机后,该表空间所属的所有数据文件将默认脱机。而将数据文件联机后,其所属的表空间并不会自动联机。

Oracle系统可以使用ALTER DATABASE语句来实现数据文件的联机和脱机。如下面的语句将USERS02.DBF数据文件脱机。

SQL>ALTER DATABASE DATAFILE

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS02.DBF' OFFLINE;

要将数据文件联机,使用下面的语句。

SQL>ALTER DATABASE DATAFILE

'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\USERS03.DBF' ONLINE;

为了使数据文件联机或脱机,用户必须具有ALTER DATABASE系统权限。 值得注意的是,在使用ALTER DATABASE语句将数据文件脱机时,数据库必须处于归档(ARCHIVELOG)模式,如果在非归档(NOARCHIVELOG)模式下,使数据文件脱机系统会提示错误信息“ORA-01145: 除非启用了介质恢复, 否则不允许立即脱机”。

在数据文件脱机/联机时需要介质恢复,而表空间联机则不需要进行介质恢复。这是因为表空间脱机需要作一次检查点,之后表空间的数据将不再改变,所以联机时不需要进行恢复操作,只需要更新一下检查点。数据文件由于是表空间的一部分,整个表空间的数据仍然在改变,所以当数据文件时脱机/联机时,需要对它进行恢复,以便于和其他的数据文件保持一致。

在OEM中执行数据文件的联机或脱机操作,在数据文件界面中选择“操作”下拉列表框中的“脱机”或“联机”选项。单击“开始”按钮。其中,脱机时选择“正常”的脱机模式。

5.3 临时表空间

Oracle临时表空间主要是用来存放一些查询所产生的临时数据,其内容如下。 (1)SQL查询操作所产生的中间排序数据。 (2)临时表和临时索引数据。 (3)临时的LOB数据。 (4)临时的B-TREE数据。 (5)一些异常情况的数据。 默认情况下,Oracle数据库创建时会自动创建一个TEMP临时表空间,作为整个Oracle数据库和用户的默认临时表空间。一个临时表空间可以被多个用户使用。永久表空间不能作为临时表空间使用。

下面的语句查询当前数据库使用的默认临时表空间。

SQL>DESC DATABASE_PROPERTIES;

名称 是否为空? 类型

---------------------- -------- ----------------- PROPERTY_NAME NOT NULL VARCHAR2(30) PROPERTY_VALUE VARCHAR2(4000) DESCRIPTION VARCHAR2(4000)

SQL>SELECT PROPERTY_NAME,PROPERTY_VALUE FROM DATABASE_PROPERTIES

WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE'; PROPERTY_NAME PROPERTY_VALUE ------------------------ ---------- DEFAULT_TEMP_TABLESPACE TEMP

5.3.1 创建临时表空间

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

SQL>CREATE TEMPORARY TABLESPACE TEST_TEMP

TEMPFILE 'D:\\APP\\ADMINISTRATOR\\ORADATA\\ORCL\\TEST_TEMP01.DBF' SIZE 20M AUTOEXTEND ON NEXT 10M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL; 表空间已创建。

创建临时表空间完成后,就可以将创建的临时表空间分配给用户使用,或者设为数据库的默认临时表空间。如下面的语句设置临时表空间 TEST_TEMP为数据库的默认临时表空间。

SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEST_TEMP; 数据库已更改。

下面的语句表示创建test用户时,分配了TEST_TEMP临时表空间。

SQL>CREATE USER TEST IDENTIFIED BY TEST DEFAULT TABLESPACE USERS

TEMPORARY TABLESPACE TEST_TEMP; 用户已创建。

如果创建用户时没有指定DEAULT TEMPORARY TABLESPACE子句,那么用户将使用数据库的默认临时表空间作为用户的默认临时表空间。当然,用户创建以后,可以通过ALTER USER语句来修改用户的临时表空间。

5.3.2 创建临时表空间组

临时表空间组(Temporary Tablespace Group)允许用户在不同的会话中同时利用多个临时表空间。在数据库中可以存在多个临时表空间和多个临时表空间组,可以给用户分配单独的临时表空间或临时表空间组作为该用户的默认临时表空间。

临时表空间组的主要特征有:

(1)一个临时表空间组必须由至少一个临时表空间组成。

(2)如果删除了一个临时表空间组的所有成员,该组也自动被删除。 (3)临时表空间的名字不能与临时表空间组的名字相同。

(4)在给用户分配一个临时表空间时,可以使用临时表空间组的名字代替实际的临时表空间名;在给数据库分配默认临时表空间时也可以使用临时表空间组的名字。

使用临时表空间组而非普通的临时表空间,可以带来以下好处:

(1)由于SQL查询可以并发使用几个临时表空间进行排序操作,因此SQL查询很少会出现排序空间超出,避免当临时表空间不足时所引起的磁盘排序问题。

(2)可以在数据库级指定多个默认临时表空间。 (3)并行服务器将有效地利用多个临时表空间。

(4)一个用户在不同会话中可以同时使用多个临时表空间。

创建临时表空间组是在创建临时表空间时通过指定GROUP子句创建的。临时表空间组无法显式创建,当第一个临时表空间分配给该组时自动创建,当组内所有临时表空间被移除时自动删除。

下面的语句创建了两个临时表空间,注意其中的GROUP子句:


第5章 存储管理(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:心理健康与安全教育考试答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: