Ubuntu Oracle数据库如何进行空间管理
导读:Ubuntu 上 Oracle 数据库空间管理实操指南 一 操作系统层面的空间核查 检查挂载点与磁盘余量,优先确认数据库数据文件所在目录(常见如 /u01、/opt)是否有充足空间: 查看整体磁盘:df -h 查看具体目录占用:du -...
Ubuntu 上 Oracle 数据库空间管理实操指南
一 操作系统层面的空间核查
- 检查挂载点与磁盘余量,优先确认数据库数据文件所在目录(常见如 /u01、/opt)是否有充足空间:
- 查看整体磁盘:df -h
- 查看具体目录占用:du -sh /u01 /opt /var/lib/oracle(按实际 ORACLE_HOME/DATA 路径调整)
- 若导入/导出或日志增长迅速,提前为 /u01 或归档、闪回区所在分区扩容,避免空间耗尽导致实例异常。
二 数据库表空间与数据文件的日常管理
- 快速巡检
- 查看表空间与总/可用空间(MB):
- SELECT tablespace_name, sum(bytes)/1024/1024 “TOTAL_MB”, sum(decode(maxbytes,0,bytes,maxbytes))/1024/1024 “MAX_MB” FROM dba_data_files GROUP BY tablespace_name;
- 查看已用与空闲(MB):
- SELECT tablespace_name, sum(bytes)/1024/1024 “USED_MB” FROM dba_segments GROUP BY tablespace_name;
- SELECT tablespace_name, sum(bytes)/1024/1024 “FREE_MB” FROM dba_free_space GROUP BY tablespace_name;
- 查看数据文件路径、大小与上限:
- SELECT file_name, bytes/1024/1024 “MB”, maxbytes/1024/1024 “MAX_MB” FROM dba_data_files WHERE tablespace_name=‘YOUR_TBS’;
- 查看表空间与总/可用空间(MB):
- 扩容与收缩
- 为表空间新增数据文件(按需设置自动扩展):
- CREATE TABLESPACE tbs_data DATAFILE ‘/u01/oradata/ORCL/tbs01.dbf’ SIZE 8G AUTOEXTEND ON NEXT 1G MAXSIZE 32G;
- 或给已有表空间加文件:ALTER TABLESPACE tbs_data ADD DATAFILE ‘/u01/oradata/ORCL/tbs02.dbf’ SIZE 8G AUTOEXTEND ON NEXT 1G MAXSIZE 32G;
- 调整现有数据文件大小(谨慎评估在线业务窗口):
- ALTER DATABASE DATAFILE ‘/u01/oradata/ORCL/tbs01.dbf’ RESIZE 16G;
- 收缩高水位(HWM)回收空间(对象需启用行迁移,且为 ASSM 段):
- ALTER TABLE schema.tbl ENABLE ROW MOVEMENT;
- ALTER TABLE schema.tbl SHRINK SPACE CASCADE;
- 为表空间新增数据文件(按需设置自动扩展):
- 临时表空间
- 查看临时文件与使用情况:
- SELECT file_name, bytes/1024/1024 “MB” FROM dba_temp_files;
- SELECT tablespace_name, current_users, used_blocks, free_blocks FROM v$sort_segment;
- 扩容临时表空间(示例创建新的大文件临时表空间并设为默认,再迁移会话):
- CREATE BIGFILE TEMPORARY TABLESPACE temp_big TEMPFILE ‘/u01/oradata/ORCL/temp_big.dbf’ SIZE 16G AUTOEXTEND ON NEXT 2G MAXSIZE UNLIMITED;
- ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_big;
- – 建议重启或让应用重连以逐步迁移会话,再考虑 DROP 旧临时表空间
- 查看临时文件与使用情况:
- 用户默认表空间
- 查询与调整:
- SELECT username, default_tablespace, temporary_tablespace FROM dba_users WHERE username=‘YOUR_USER’;
- ALTER USER your_user DEFAULT TABLESPACE tbs_data;
- ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp_big;
- 查询与调整:
三 空间告警与主动回收
- 服务器内置表空间告警
- Oracle 默认对全部表空间启用空间告警,阈值:警告 85%、严重 97%;后台进程 MMON 约每 10 分钟评估一次,并写入 DBA_OUTSTANDING_ALERTS。
- 查询示例:
- SELECT DECODE(MESSAGE_LEVEL,5,‘WARNING’,1,‘CRITICAL’) ALERT_LEVEL, REASON FROM DBA_OUTSTANDING_ALERTS WHERE OBJECT_NAME=‘YOUR_TBS’;
- 也可通过 DBMS_SERVER_ALERTS 自定义阈值,或用 OEM/EM 配置与查看。
- 使用 Segment Advisor 主动识别可回收对象
- 在 OEM/EM 的 Advisor Central 选择 Segment Advisor,对目标表空间或对象运行评估,查看建议并执行“收缩段”以回收 HWM 以下未用空间(联机、原地操作,通常无需额外空间)。
- 最佳实践要点
- 表空间建议使用本地管理(LMT)与自动段空间管理(ASSM),可减少外部/内部碎片并提升并发表现;必要时使用 DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL 迁移至 LMT。
四 Undo 表空间管理
- 基本配置与容量查看
- 查看参数:SHOW PARAMETER undo; (确认 undo_management=AUTO 与 undo_tablespace)
- 查看当前占用:SELECT SUM(bytes)/1024/1024 “CURRENT_UNDO_MB” FROM dba_data_files WHERE tablespace_name=‘UNDOTBS1’;
- 扩容与优化
- 增加数据文件:
- ALTER TABLESPACE undotbs1 ADD DATAFILE ‘/u01/oradata/ORCL/undo02.dbf’ SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 32G;
- 调整现有文件大小(视业务窗口与版本支持):
- ALTER DATABASE DATAFILE ‘/u01/oradata/ORCL/undo02.dbf’ RESIZE 20G;
- 合理设置 UNDO_RETENTION(如 900 秒或更高),并确保 DB_RECOVERY_FILE_DEST_SIZE 足够覆盖闪回与归档需求,避免 UNDO/归档空间相互挤占。
- 增加数据文件:
五 迁移数据文件与扩容存储的实操流程
- 场景:将数据文件从空间紧张的目录迁移到新磁盘(如从 /opt 迁至 /u01)
- 确认目标表空间为离线(仅数据文件离线,非整个实例):
- ALTER TABLESPACE tbs_data OFFLINE NORMAL;
- 操作系统层面拷贝数据文件到新目录(建议使用 nohup 或 screen 防止中断):
- nohup cp /opt/oracle/oradata/ORCL/tbs01.dbf /u01/oradata/ORCL/tbs01.dbf &
- 在数据库中重命名数据文件路径:
- ALTER TABLESPACE tbs_data RENAME DATAFILE ‘/opt/oracle/oradata/ORCL/tbs01.dbf’ TO ‘/u01/oradata/ORCL/tbs01.dbf’;
- 将表空间置为在线:
- ALTER TABLESPACE tbs_data ONLINE;
- 校验:SELECT file_name, status FROM dba_data_files WHERE tablespace_name=‘TBS_DATA’;
- 确认无误后,可删除旧文件并监控空间回收情况。
- 确认目标表空间为离线(仅数据文件离线,非整个实例):
- 建议
- 大文件拷贝在业务低峰期执行,必要时使用 RMAN BACKUP AS COPY + SWITCH 实现更稳妥的在线迁移(适用于 12c 及以上)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Oracle数据库如何进行空间管理
本文地址: https://pptw.com/jishu/750981.html
