Oracle存储管理(一)



重设表空间及数据文件大小

1. 使用ALTER DATABASE重置小文件表空间(SMALLFILE TABLESPACE):

SQL> alter database
2 datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf' resize 15m;
Database altered.
SQL> alter database
2 datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf' resize 1m;
alter database
*
ERROR at line 1:
ORA-03297: file contains used data beyond requested RESIZE value
SQL> alter database
2 datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf' resize 100t;
alter database
*
ERROR at line 1:
ORA-00740: datafile size of (13421772800) blocks exceeds maximum file size
SQL> alter database
2 datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf' resize 50g;
alter database
*
ERROR at line 1:
ORA-01144: File size (6553600 blocks) exceeds maximum of 4194303 blocks

如果可用的空闲空间不支持调整请求的空间要求,或数据超过请求减少的数据文件大小,或超出Oracle限制的文件容量最大值,都将返回错误.

为了避免被动的手动调整表空间大小,在创建和修改数据文件时可以使用autoextend(ON/OFF:是否允许扩展), next <size>(分配给数据文件的磁盘空间大小,<size>值可为K,M,G,T)和maxsize <size>(指定数据文件的最大值,<size>值可为K,M,G,T)子句,让数据文件进行自动扩展

SQL> alter database
2 datafile '/u01/app/oracle/oradata/rmanrep/users01.dbf'
3 autoextend on
4 next 20m
5 maxsize 1g;
Database altered.

若包含数据文件的磁盘没有扩展的空间,我们可以转移数据文件到其它磁盘或在其它磁盘为表空间增加第二个数据文件.

2. 使用ALTER TABLESPACE命令增加数据文件:

SQL> alter tablespace users
2 add datafile '/u03/oradata/users02.dbf'
3 size 50m
4 autoextend on
5 next 10m
6 maxsize 200m;
Tablespace altered.

从表空间删除数据文件

使用EM数据库管理可以以最小的宕机时间删除数据文件,并生成执行脚本

EM Database Control->Tablespace->选择删除数据文件的Tablespace ,选择Actions为Reorganize,然后Go
以下为数据库删除数据文件生成的脚本文件(已修改,创建脚本中不含删除数据文件,原表空间XPORT包含两个数据文件xport.dbf 200MB,xport2.dbf 100MB):

CREATE SMALLFILE TABLESPACE "XPORT_REORG0" DATAFILE
'/u04/oradata/xport_reorg0.dbf' SIZE 300M REUSE LOGGING EXTENT MANAGEMENT
LOCAL SEGMENT SPACE MANAGEMENT AUTO
ALTER TABLE "SYS"."OBJ_FILL" MOVE TABLESPACE "XPORT_REORG0"
DROP TABLESPACE "XPORT" INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS
ALTER TABLESPACE "XPORT_REORG0" RENAME TO "XPORT"

3. 使用ALTER DATABASE重置大文件表空间(BIGFILE TABLESPACE)

用于SMALLFILE表空间的命令同样对BIGFILE表空间有效,如:

SQL> alter tablespace dmarts resize 1g;
Tablespace altered.

尽管alter database命令结合dmarts空间的数据文件也可以调整,但alter tablespace语法有个显示易见的优势:就是你不需要知道数据文件的存放位置.

移动数据文件(Moving Datafiles)

改善数据库整体I/O性能及更好的管理数据文件大小

三种方法
1. alter database:表空间SYSTEM,SYSAUX,UNDO,TEMP除外

关闭数据库->转移数据文件->MOUNT数据库->使用alter database命令改变数据文件位置->OPEN DATABASE->控制文件备份

SQL>alter database rename file 'xxx.dbf' to 'xxx.dbf';
Database altered;
SQL>alter database open;
Database altered.
SQL>alter database backup controlfile to trace;
Database altered.

2. alter tablespace:所有表空间的数据文件

表空间OFFLINE->转移数据文件->使用alter tablespace命令改变数据文件位置->表空间在线

例:

SQL> alter tablespace xport offline;
Tablespace altered.
SQL> ! mv /u06/oradata/xport.dbf /u05/oradata/xport.dbf
SQL> alter tablespace xport rename datafile
2 '/u06/oradata/xport.dbf' to '/u05/oradata/xport.dbf';
Tablespace altered.
SQL> alter tablespace xport online;
Tablespace altered.

3. 通过EM数据库控制器

移动在线重做日志文件(Moving Online Redo Log Files)

通过删除原有的日志文件组并在不同的位置新增日志文件组实现.只有两个日志文件组的数据库不能使用该方法.另也可选择在数据库关闭时转移在线重做日志文件(跟数据文件转移类似).

移动控制文件(Moving Control Files)

当使用初始化参数文件时转移控制文件过程跟转移数据文件和在线重做日志文件类似.

当使用服务端参数文件时,过程有一点不同.因为初始化参数CONTROL_FILES是在数据库实例运行或者关闭以NOMOUNT模式打开时使用alter system … scope=spfile改变.由于不是动态参数,实例必须重启.

 



发表评论