| 類型 | 狀態 | 工具 | 特點 |
| 冷備份 (Offline) | SHUTDOWN NORMAL/IMMEDIATE | OS cp / RMAN | 最簡單、一致性最強、需停機 |
| 熱備份 (Online) | OPEN / MOUNT | **RMAN** | 不停機、支援增量/壓縮/加密/區塊追蹤 |
RMAN 核心優勢
- 區塊級增量備份 (
BLOCK CHANGE TRACKING)
- 壓縮備份集 (
AS COMPRESSED BACKUPSET)
- 加密備份 (
CONFIGURE ENCRYPTION FOR DATABASE ON)
- 目錄模式 (
CATALOG) 集中管理多庫備份元資料
- 自動備份控制檔與 SPFILE (
CONFIGURE CONTROLFILE AUTOBACKUP ON)
企業級備份排程範例
# 每日增量備份 (Level 1)
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE PLUS ARCHIVELOG;
# 每週完整備份 (Level 0)
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;
# 每月歸檔日誌備份至異地
RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;
恢復策略:四大故障場景標準化流程
1. 執行個體失敗 — 自動恢復
- 觸發:Server 掛掉、實例崩潰
- 流程:重啟實例 → SMON 自動前滾 (Redo) + 回滾 → 開啟資料庫
- 零人工干預,通常秒級完成
2. 媒體失敗 (磁碟損壞) — RMAN 恢復
-- 損壞控制檔:從鏡像副本複製即可
-- 損壞資料檔:
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
3. 邏輯錯誤 (誤刪/誤改) — 時間點恢復 (PITR)
-- 步驟:
1. 當前庫導出邏輯備份 (expdp) → 導入備用庫 (impdp)
2. 備用庫前滾至錯誤發生前 SCN/時間點
RMAN> RECOVER DATABASE UNTIL TIME '2024-01-15 14:30:00';
3. 備用庫導出受影響物件 (expdp TABLES=...)
4. 當前庫導入修正 (impdp TABLES=... TABLE_EXISTS_ACTION=REPLACE)
4. 完整環境遷移/克隆 — RMAN DUPLICATE
RMAN> DUPLICATE TARGET DATABASE TO clone_db
FROM ACTIVE DATABASE
SPFILE
SET DB_FILE_NAME_CONVERT '/u01/oradata/prod','/u02/oradata/clone'
SET LOG_FILE_NAME_CONVERT '/u01/oralog/prod','/u02/oralog/clone';
角色管理與存取控制 (RBAC)
核心機制
- 認證:密碼檔、OS 認證、Kerberos、SSL 憑證、Radius
- 授權:系統權限、物件權限、角色權限
- 存取控制**:
GRANT/REVOKE、VPD (Virtual Private Database)、OLS (Oracle Label Security)
- 審計:標準審計、精細審計 (FGA)、統一審計 (12c+)
角色設計最佳實踐
| 角色層級 | 命名慣例 | 包含權限 | 授予對象 |
| 系統管理 | DBA_ROLE, SYSOPER_ROLE | SYSDBA, SYSOPER, 所有系統權限 | 極少數 DBA |
| 應用擁有者 | APP_OWNER_ | 該 Schema 所有物件 DDL/DML | 應用部署帳號 |
| 應用讀寫 | APP_RW_ | 相關表 SELECT/INSERT/UPDATE/DELETE | 應用服務帳號 |
| 應用唯讀 | APP_RO_ | 相關表 SELECT | 報表/BI/分析師 |
| 開發/測試 | DEV_ROLE, TEST_ROLE | 受限 Schema 操作、無 DROP/TRUNCATE | 開發人員 |
視圖實現行/欄級安全
-- 僅暴露非敏感欄位
CREATE VIEW v_emp_public AS
SELECT emp_id, emp_name, dept_id, hire_date
FROM employees
WHERE status = 'ACTIVE';
-- VPD 動態謂詞 (Enterprise Edition)
BEGIN
DBMS_RLS.ADD_POLICY(
object_schema => 'HR',
object_name => 'EMPLOYEES',
policy_name => 'SALARY_POLICY',
function_schema => 'SECURITY',
policy_function => 'SALARY_PREDICATE',
statement_types => 'SELECT,UPDATE');
END;
/
-- SALARY_PREDICATE 返回 'salary < 100000 OR dept_id = SYS_CONTEXT('USERENV','DEPT')'
安全策略落地檢查清單
| 領域 | 檢查項目 | 驗證指令/工具 |
| 備份 | ARCHIVELOG 模式啟用 | ARCHIVE LOG LIST |
| 備份 | 控制檔多路鏡像 (≥3 路) | SHOW PARAMETER control_files |
| 備份 | RMAN 目錄模式配置 | RMAN> SHOW ALL; |
| 備份 | 自動控制檔備份啟用 | CONFIGURE CONTROLFILE AUTOBACKUP ON |
| 備份 | 區塊變更追蹤啟用 | ALTER DATABASE ENABLE BLOCK CHANGE TRACKING; |
| 存取 | 無 DEFAULT 密碼帳號 | SELECT * FROM dba_users_with_defpwd; |
| 存取 | 密碼複雜度驗證函數啟用 | SHOW PARAMETER sec_case_sensitive_logon |
| 存取 | 帳號鎖定策略 (FAILED_LOGIN_ATTEMPTS) | SELECT * FROM dba_profiles WHERE resource_name='FAILED_LOGIN_ATTEMPTS'; |
| 審計 | 統一審計啟用 (12c+) | SHOW PARAMETER unified_audit_trail |
| 審計 | 關鍵物件 FGA 政策 | SELECT * FROM dba_audit_policies; |
| 網路 | SQL*Net 加密 (ASO) | sqlnet.ora: SQLNET.ENCRYPTION_SERVER = REQUIRED |
| 網路 | Listener 密碼保護 | lsnrctl status | grep PASSWORD |
Oracle vs MySQL 安全架構對比
| 維度 | Oracle | MySQL |
| 備份工具 | RMAN (原生、功能最全) | mysqldump/xtrabackup (第三方為主) |
| 時間點恢復 | 原生 PITR (SCN/時間點) | Binlog + 備份基線重放 |
| 行級安全 | VPD/OLS 原生支援 | 需應用層/視圖實現 |
| 審計 | 統一審計、FGA、強制審計 | audit_log 外掛、一般日誌 |
| 加密 | TDE (Tablespace/Column)、網路加密 | SSL/TLS、資料加密需應用層 |
| 角色管理 | 角色、權限、密碼驗證函數、Profile | GRANT/REVOKE、validate_password |
| 高可用 | RAC、Data Guard、GoldenGate | Replication、Group Replication、InnoDB Cluster |
總結
Oracle 安全策略的核心在於:**多層日誌架構保證零資料損失、RMAN 提供企業級備份恢復自動化、RBAC+VPD 實現精細存取控制、統一審計滿足合規要求**。MySQL 架構輕量,但在 GTID 複寫、Group Replication、Clone Plugin、Data Masking 等新特性快速追趕。選型本質是:**成熟度/功能完備度 vs 成本/靈活度/雲原生適配度** 的權衡。
- 上一篇文章: MySQL 主從複寫配置速查手冊:從基礎部署到動態調整的完整指令集
- 下一篇文章: MySQL 效能診斷三大核心工具實戰:SHOW STATUS、EXPLAIN、OPTIMIZE TABLE 深度應用指南
Copyright ©
程式碼之家 All Rights Reserved