yl6688

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

以下是Oracle表空间操作的详细指南(2025年最新版):


一、表空间创建操作

  1. ‌普通表空间创建‌

    sqlCopy Code
     
    CREATE TABLESPACE test DATAFILE '/u01/app/oracle/oradata/test01.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 500M EXTENT MANAGEMENT LOCAL; -- 创建自动扩展表空间‌:ml-citation{ref="2,3" data="citationList"}
  2. ‌临时表空间创建‌

    sqlCopy Code
     
    CREATE TEMPORARY TABLESPACE temp_data TEMPFILE '/u01/app/oracle/oradata/temp01.dbf' SIZE 50M AUTOEXTEND OFF; -- 创建固定大小的临时表空间‌:ml-citation{ref="2,4" data="citationList"}
  3. ‌UNDO表空间创建‌

    sqlCopy Code
     
    CREATE UNDO TABLESPACE undotbs2 DATAFILE '/u01/app/oradata/undotbs02.dbf' SIZE 500M; -- 支持事务回滚的特殊表空间‌:ml-citation{ref="5,7" data="citationList"}

二、表空间扩展操作

  1. ‌数据文件扩容‌

    sqlCopy Code
     
    ALTER DATABASE DATAFILE '/path/test01.dbf' RESIZE 200M; -- 调整单个文件大小‌:ml-citation{ref="3,5" data="citationList"}
  2. ‌新增数据文件‌

    sqlCopy Code
     
    ALTER TABLESPACE test ADD DATAFILE '/u01/app/oradata/test02.dbf' SIZE 50M; -- 扩展表空间容量‌:ml-citation{ref="3,6" data="citationList"}
  3. ‌自动扩展设置‌

    sqlCopy Code
     
    ALTER DATABASE DATAFILE '/path/test01.dbf' AUTOEXTEND ON NEXT 20M MAXSIZE 2G; -- 修改自动扩展参数‌:ml-citation{ref="3,5" data="citationList"}

三、表空间状态管理

  1. ‌联机/脱机切换‌

    sqlCopy Code
     
    ALTER TABLESPACE test OFFLINE; -- 维护时禁用访问‌:ml-citation{ref="5,7" data="citationList"} ALTER TABLESPACE test ONLINE; -- 恢复服务‌:ml-citation{ref="5,7" data="citationList"}
  2. ‌UNDO表空间切换‌

    sqlCopy Code
     
    ALTER SYSTEM SET undo_tablespace=undotbs2; -- 更换UNDO表空间‌:ml-citation{ref="5,6" data="citationList"}

四、表空间删除操作

sqlCopy Code
 
DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS; -- 彻底删除表空间及文件‌:ml-citation{ref="3,5" data="citationList"}

五、常用查询命令

  1. ‌查看表空间信息‌

    sqlCopy Code
     
    SELECT tablespace_name, file_name, bytes/1024/1024 "Size(MB)" FROM dba_data_files; -- 显示所有数据文件详情‌:ml-citation{ref="3,7" data="citationList"}
  2. ‌空间使用率查询‌

    sqlCopy Code
     
    SELECT a.tablespace_name, (a.bytes - nvl(b.bytes,0))/1024/1024 "Used(MB)", a.bytes/1024/1024 "Total(MB)" FROM (SELECT tablespace_name, sum(bytes) bytes FROM dba_data_files GROUP BY tablespace_name) a LEFT JOIN (SELECT tablespace_name, sum(bytes) bytes FROM dba_free_space GROUP BY tablespace_name) b ON a.tablespace_name = b.tablespace_name; -- 空间利用率统计‌:ml-citation{ref="6,7" data="citationList"}

注意事项:

  1. ‌SYSTEM表空间‌:禁止存储用户数据,建议使用独立表空间‌17
  2. ‌文件路径规划‌:建议将数据文件分散在不同物理磁盘提升性能‌27
  3. ‌操作权限‌:需SYSDBA或具有ALTER TABLESPACE权限的账户执行‌46

以上操作均基于Oracle 21c验证,适用于生产环境中的表空间全生命周期管理‌

 
posted on 2025-03-08 13:54  追梦寒星  阅读(328)  评论(0)    收藏  举报