表結構變更屬 DDL,隱含 Commit、不可回滾,生產環境務必在維護窗口執行並先備份。
ALTER TABLE tbl_name ADD (col_name VARCHAR2(20) DEFAULT 'unknown');
DEFAULT ... NOT NULL 為純元資料操作(不更新既有列),秒級完成。NOT NULL 會全表更新,鎖表時間與資料量成正比。ALTER TABLE tbl_name MODIFY (col_name VARCHAR2(30) DEFAULT 'hebei');
ORA-01441。-- 階段1:標記為 UNUSED(極快,僅更新字典)
ALTER TABLE tbl_name SET UNUSED COLUMN col_name;
-- 階段2:實際釋放空間(離峰執行,會全表掃描重組)
ALTER TABLE tbl_name DROP UNUSED COLUMNS;
DROP COLUMN 直接執行等同於上述兩步合一,長表易導致長時間鎖表。DROP COLUMN ONLINE 降低鎖定影響。RENAME old_tbl TO new_tbl;
TRUNCATE TABLE tbl_name;
DELETE Trigger。TRUNCATE TABLE ... CASCADE 可級聯截斷參考表(需 FK 定義 ON DELETE CASCADE)。COMMENT ON TABLE tbl_name IS '業務說明:存放訂單明細';
SELECT * FROM user_tab_comments WHERE table_name='TBL_NAME';DROP TABLE tbl_name [PURGE];
FLASHBACK TABLE ... TO BEFORE DROP 可恢復)。PURGE 直接永久刪除,釋放空間立即生效。DBMS_METADATA.GET_DDL 先導出結構)。V$SESSION_WAIT 鎖情況。DBMS_STATS.GATHER_TABLE_STATS)。