1.1、表空间类型类型用途说明永久表空间存储用户数据SYSTEM, SYSAUX, USERS, 自定义UNDO表空间事务回滚和读一致性自动管理12c支持多UNDO临时表空间排序、哈希等临时操作TEMP不产生redo大文件表空间单个数据文件可达128TBBigfile Tablespace加密表空间数据透明加密(TDE)12c原生支持1.2、创建表空间创建标准小文件表空间CREATE TABLESPACE app_data DATAFILE DATA SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE 50G EXTENT MANAGEMENT LOCAL AUTOALLOCATE SEGMENT SPACE MANAGEMENT AUTO;创建大文件表空间12c推荐CREATE BIGFILE TABLESPACE big_data DATAFILE DATA SIZE 100G AUTOEXTEND ON NEXT 10G MAXSIZE 128T EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M SEGMENT SPACE MANAGEMENT AUTO;1.3、表空间管理操作扩容调整数据文件大小扩展添加新的数据文件状态切换设置只读/读写模式重命名重命名表空间删除DROP TABLESPACE ... INCLUDING CONTENTS AND DATAFILES-- 扩容调整数据文件大小 ALTER DATABASE DATAFILE DATA/app_data01.dbf RESIZE 20G; -- 扩展添加新数据文件 ALTER TABLESPACE app_data ADD DATAFILE DATA/app_data02.dbf SIZE 10G; -- 设为只读 ALTER TABLESPACE app_data READ ONLY; -- 重命名 ALTER TABLESPACE app_data RENAME TO app_data_v2;实例表空间容量规划与扩展S — Situation场景某金融系统核心交易表空间TS_TRADE使用率达到92%数据文件总大小200GB业务高峰期频繁报ORA-01653无法扩展区。T — Task任务在不停机的情况下将表空间扩容至500GB并优化空间管理策略。A — Action行动1、首先查询DBA_DATA_FILES和DBA_FREE_SPACE确认当前空间分布2、评估后采用两种方式并行--将现有数据文件从200GB扩容至300GBALTER DATABASE DATAFILE ... RESIZE--新增一个200GB数据文件分散I/OALTER TABLESPACE ADD DATAFILE3、设置AUTOEXTEND ON NEXT 5G MAXSIZE 500G防止未来空间不足4、配合监控脚本设置80%使用率预警。R — Result结果表空间可用空间扩展至500GB使用率降至40%ORA-01653错误消除。新增数据文件分布在不同ASM磁盘组I/O负载更均衡写入性能提升约15%。1.4、Oracle 12c 新特性多租户架构下的表空间12c引入CDB/PDB多租户架构后表空间管理发生了重要变化容器结构CDB级别包含CDB$ROOT、PDB$SEED和多个PDBPDB表空间每个PDB拥有独立的SYSTEM、SYSAUX、TEMP、UNDO表空间12.1中UNDO共享12.2可独立隔离性PDB之间表空间完全隔离互不影响-- 在PDB中创建表空间 ALTER SESSION SET CONTAINER pdb_sales; CREATE TABLESPACE pdb_sales_data DATAFILE DATA SIZE 5G AUTOEXTEND ON NEXT 500M MAXSIZE 20G; -- 跨PDB查询表空间使用率 SELECT p.name pdb_name, t.tablespace_name, ROUND(t.bytes/1024/1024, 0) total_mb, ROUND(NVL(f.free_bytes,0)/1024/1024, 0) free_mb, ROUND((t.bytes - NVL(f.free_bytes,0)) / t.bytes * 100, 1) used_pct FROM cdb_tablespaces t JOIN v$containers p ON t.con_id p.con_id LEFT JOIN (SELECT con_id, tablespace_name, SUM(bytes) free_bytes FROM cdb_free_space GROUP BY con_id, tablespace_name) f ON t.con_id f.con_id AND t.tablespace_name f.tablespace_name ORDER BY p.name, t.tablespace_name;