資深 DBA 整理七大 Oracle 實務高頻問題與標準解法,涵蓋資料搶救、表單報表開發、DDL 操作、備份模式切換、空間管理,附標準 SQL 與配置步驟,可直接套用生產環境。
SELECT segment_name, segment_type, block_id, blocks
FROM dba_extents
WHERE 1234 BETWEEN block_id AND (block_id + blocks - 1);
CREATE TABLE good_table AS
SELECT * FROM bad_table
WHERE rowid NOT IN (
SELECT /*+ INDEX(bad_table, any_index) */ rowid
FROM bad_table
WHERE SUBSTR(rowid, 1, 8) = '1234' -- 壞塊相對檔號
);
在參數清單**最前面**新增參數:
Add_Parameter(pl_id, 'ORACLE_SHUTDOWN', TEXT_PARAMETER, 'YES');
此參數必須為**第一個參數**,Forms 調用 Reports 時即不顯示背景視窗,退出後自動關閉。
SELECT constraint_name, table_name, r_owner, r_constraint_name
FROM all_constraints
WHERE table_name = 'TABLE_NAME' AND owner = 'OWNER_NAME';
搭配 `ALL_CONS_COLUMNS` 查看約束包含欄位:
SELECT * FROM all_cons_columns WHERE table_name = 'TABLE_NAME' AND owner = 'OWNER_NAME';
-- 1. 確認 init.ora 中 LOG_ARCHIVE_DEST 指向有效目錄
-- 2. 關閉並掛載
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
-- 3. 切換模式
ALTER DATABASE ARCHIVELOG;
-- 4. 開啟資料庫
ALTER DATABASE OPEN;
-- 5. 驗證
ARCHIVE LOG LIST;
-- 6. 啟用自動歸檔 (8i 以前)
-- init.ora: LOG_ARCHIVE_START=TRUE
-- 8i+ 多歸檔目的地: LOG_ARCHIVE_DEST_n (n=1..5)
ALTER TABLESPACE users ADD DATAFILE '/u01/oradata/orcl/users02.dbf' SIZE 25M;
ALTER DATABASE DATAFILE '/u01/oradata/orcl/users01.dbf' RESIZE 50M;