ORACLE如何修改用户表空间
问题描述: | ORACLE如何修改用户表空间 |
产生原因: | 需要对用户表空间进行修改 |
解决方法: | 软件在建立帐套时,表空间使用了默认设定,表空间可以自动增加。如果用户为了提升速度进行了优化,关闭了此选项,则在年结前也应该检查一下表空间的使用情况,如果已经使用空间小于剩余空间,也应该进行扩充。 查看表空间使用情况: SELECT * FROM DBA_FREE_SPACE 举例: 在实际操作中请根据实际数据库路径等信息作适当的调整,切记不可生搬硬套! 另外,请在调整之前,对oracle 作一全备份! 假设表空间名称为GS_ORADB_001,数据文件‘C:\ORADATA\GS_ORADB_001.DBF', 索引表空间名称为GS_ORADB_IDX_001,数据文件‘C:\ORADATA\GS_ORADB_IDX_001.DBF' ORACLE8i: 首先在DOS命令行方式中执行 C:\>SVRMGRL SVRMGRL>CONNECT INTERNAL SVRMGRL>SHUTDOWN SVRMGRL>STARTUP MOUNT ORACLE9i: 首先在DOS命令行方式中执行 C:\>SQLPLUS /NOLOG SQL>CONNECT / AS SYSDBA SQL >SHUTDOWN SQL >STARTUP MOUNT 1、增加表空间尺寸 增加一个数据文件: SQL>ALTER TABLESPACE GS_ORADB_001 ADD DATAFILE ‘C:\ORADATA\GS_ORADB_ADD_001.DBF' SIZE 500M; 2、扩大原有文件大小: SQL>ALTER DATABASE DATAFILE ‘C:\ORADATA\GS_ORADB_001.DBF' RESIZE 1000M; 3、移动表空间数据文件 假如要求将C:\ORADATA 下GS_ORADB_001.DBF移至D:\ORADATA 下,并把文件名改为GS_ORADB_ALT_001.DBF 步骤: 3.1、将实例处于关闭状态 首先在DOS命令行方式中执行(ORACLE9i) C:\>SQLPLUS /NOLOG SQL>CONNECT / AS SYSDBA SQL >SHUTDOWN SQL >STARTUP MOUNT 3.2、把数据文件C:\ORADATA 下GS_ORADB_001.DBF移动到D:\ORADATA下,并把文件名改为GS_ORADB_ALT_001.DBF 3.3、再到SQLPLUS 环境中 SQL>ALTER DATABASE RENAME FILE ‘C:\ORADATA\GS_ORADB_001.DBF' TO ‘D:\ORADATA\GS_ORADB_ALT_001.DBFF'; 或 SQL>ALTER TABLESPACE GS_ORADB_001 RENAME DATAFILE ‘C:\ORADATA\GS_ORADB_001.DBF' TO ‘D:\ORADATA\GS_ORADB_ALT_001.DBFF'; SQL>ALTER DATABASE OPEN; 4、查看剩余空间 SQL>SELECT TABLESPACE_NAME,SUM(BYTES),MAX(BYTES) FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME; 注意:空闲数据块总和sum(bytes) 够用并不意味每个空闲块都满足分配需要,所以当表空间不够分配扩展块的时候,还要查看最大空闲数据块max(bytes)的大小。 5、合并空闲块 如果表空间上的数据对象经常发生类似drop-create 的变动,加之未采用统一的扩展块尺寸,使那些采用较大扩展块的数据对象不能利用较小的空间碎片,造成空间浪费。可通过将较小的空闲块合并成较大的空闲块的方法,减少空间浪费。 SQL>ALTER TABLESPACE GS_ORADB_001 COALESCE; 6、删除表空间 删除表空间及其包含的所有数据 SQL>DROP TABLESPACE GS_ORADB_001 INCLUDING CONTENTS; |