-- 1. 查詢現有表空間空閒空間
SELECT tablespace_name, file_id, block_id, bytes/1024/1024 free_mb, blocks
FROM dba_free_space
ORDER BY tablespace_name, file_id;
-- 2. 查詢數據文件分佈與大小
SELECT tablespace_name, file_id, file_name, bytes/1024/1024 size_mb, autoextensible, maxbytes/1024/1024 max_mb
FROM dba_data_files
ORDER BY tablespace_name, file_id;
CREATE TABLESPACE app_data
DATAFILE '/u01/oradata/PROD/app_data01.dbf' SIZE 500M
AUTOEXTEND ON NEXT 100M MAXSIZE 10G
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;
CREATE TABLESPACE dw_data
DATAFILE '/u02/oradata/PROD/dw_data01.dbf' SIZE 1G
AUTOEXTEND ON NEXT 500M MAXSIZE UNLIMITED
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M;
-- 10g+ 推薦本地管理
CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/u01/oradata/PROD/temp_data01.dbf' SIZE 2G
AUTOEXTEND ON NEXT 100M MAXSIZE 10G
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 10M;
-- 9i 風格字典管理(不推薦新建)
CREATE TABLESPACE temp_old
DATAFILE '/u01/oradata/PROD/temp_old01.dbf' SIZE 1G
TEMPORARY
EXTENT MANAGEMENT DICTIONARY;
CREATE BIGFILE TABLESPACE big_data
DATAFILE '/u03/oradata/PROD/big_data01.dbf' SIZE 50G
AUTOEXTEND ON NEXT 10G MAXSIZE 100G;
-- 關閉自動擴展
ALTER DATABASE DATAFILE
'/u01/oradata/PROD/app_data01.dbf',
'/u01/oradata/PROD/app_data02.dbf'
AUTOEXTEND OFF;
-- 開啟並調整步長
ALTER DATABASE DATAFILE '/u01/oradata/PROD/app_data01.dbf'
AUTOEXTEND ON NEXT 200M MAXSIZE 20G;
ALTER TABLESPACE app_data ADD DATAFILE
'/u02/oradata/PROD/app_data02.dbf' SIZE 1G
AUTOEXTEND ON NEXT 100M MAXSIZE 10G;
ALTER TABLESPACE app_data OFFLINE;
-- OS層面 mv /cp 文件
ALTER TABLESPACE app_data RENAME DATAFILE
'/old/path/app_data01.dbf' TO '/new/path/app_data01.dbf';
ALTER TABLESPACE app_data ONLINE;
CREATE USER app_user IDENTIFIED BY "AppUs3rP@ss"
DEFAULT TABLESPACE app_data
TEMPORARY TABLESPACE temp_data
QUOTA UNLIMITED ON app_data;
GRANT CONNECT, RESOURCE TO app_user;
-- 視業務授予 CREATE VIEW, CREATE PROCEDURE 等
ADD DATAFILE,擴容只能RESIZE。TEMPFILE,不產生Redo,不可存永久對象。FREELIST爭用。SET LINES 200 PAGES 1000
COL tablespace_name FOR A20
COL file_name FOR A50
SELECT
t.tablespace_name,
t.contents,
t.extent_management,
t.allocation_type,
t.segment_space_management,
d.file_name,
ROUND(d.bytes/1024/1024,2) size_mb,
d.autoextensible,
ROUND(d.maxbytes/1024/1024,2) max_mb,
ROUND(NVL(f.free_mb,0),2) free_mb
FROM dba_tablespaces t
JOIN dba_data_files d ON t.tablespace_name = d.tablespace_name
LEFT JOIN (
SELECT tablespace_name, SUM(bytes)/1024/1024 free_mb
FROM dba_free_space GROUP BY tablespace_name
) f ON t.tablespace_name = f.tablespace_name
ORDER BY t.tablespace_name, d.file_id;
表空間創建核心公式:查詢現狀 → 選擇類型(永久/臨時/大文件) → 定義文件路徑/大小/自動擴展 → 選擇區管理(AUTOALLOCATE/UNIFORM) → 啟用ASSM → 創建用戶綁定。將上述腳本模板化,新項目交付5分鐘完成表空間佈局。