30-Oracle 23ai-回顧從前的Flashback設置

配置和測試了Oracle 23 ai的Flashback Log Placement后,

剛好身邊11g,19c的環境都在,還是把從前的flashback整理下,溫故知新,循序漸進。

?一、閃回技術

Flashback Database 允許將整個數據庫回退到過去的某個時間點/SCN,基于以下核心機制:?

閃回日志 (Flashback Logs)???

  • 專用后臺進程 ?RVWR? 記錄數據塊在修改前的完整鏡像。
  • 存儲位置:閃回恢復區(DB_RECOVERY_FILE_DEST)。
  • 不同于重做日志:重做日志記錄變化量,閃回日志記錄完整塊
  • 循環覆蓋寫入,空間不足時自動刪除舊日志。如果空間不足,即使設置保留時間也會被刪除。

閃回恢復區 (Flash Recovery Area)????

  • 集中管理閃回日志、歸檔日志、RMAN 備份。
  • 需配置路徑 (DB_RECOVERY_FILE_DEST) 和大小 (DB_RECOVERY_FILE_DEST_SIZE)。?
  • 由 DB_FLASHBACK_RETENTION_TARGET 控制(單位:分鐘),默認 1440 分鐘(1天)。

閃回分級:閃回技術用于快速恢復人為誤操作等邏輯錯誤,分為多種級別:

    • 數據庫級,慎重-閃回數據庫會丟失目標時間點后的所有數據變更
    • 表級別閃回
    • 事務級別閃回
    • 閃回查詢(不修改數據)

特性:??

  1. 本質?:將數據庫回退到歷史時間點,閃回點之后的所有數據變更將丟失。
  2. ?RESETLOGS:? 閃回后必須使用 ALTER DATABASE OPEN RESETLOGS;,從此(生成新分身)。
  3. ?依賴閃回日志:?? 核心機制依賴于閃回日志(Flashback Log),依賴閃回日志?(存儲數據塊完整映像)。
  4. ?前提條件:?? 數據庫必須處于歸檔模式且配置了閃回恢復區。
  5. 快速恢復?:比傳統時間點恢復更快(直接應用閃回日志)。

四、開啟Flashback?

??開啟歸檔模式?:
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;-- 1. 設置閃回恢復區
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST = '/u01/app/oracle/flash_recovery_area' SCOPE=BOTH;
-- 根據磁盤空間調整
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE = 50G SCOPE=BOTH;-- 2. 設置閃回保留時間(默認 1440 分鐘)
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=1440;-- 3. 啟用閃回(MOUNT 狀態下執行)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE FLASHBACK ON;
ALTER DATABASE OPEN;-- 4. 驗證狀態
SELECT LOG_MODE, FLASHBACK_ON FROM V$DATABASE;
LOG_MODE      FLASHBACK_ON
_____________ _______________
ARCHIVELOG    YES

五、數據庫、表、行、事務、閃回的腳本

1)、數據庫級閃回 (FLASHBACK DATABASE)??
?1. 基于時間點閃回
-- 步驟1: 強制日志切換并記錄當前時間點
ALTER SYSTEM ARCHIVE LOG CURRENT;
ALTER SESSION SET NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
SELECT SYSTIMESTAMP AS current_time FROM DUAL; -- 記錄此時間-- 步驟2: 關閉并掛載數據庫
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;-- 步驟3: 執行閃回 (RMAN環境)
RMAN> RUN {SET UNTIL TIME "TO_DATE('2025-06-13 14:30:00', 'YYYY-MM-DD HH24:MI:SS')";FLASHBACK DATABASE;ALTER DATABASE OPEN RESETLOGS;
}

2. 基于 SCN 閃回??

-- 獲取當前SCN并記錄,示例: 7654321
SELECT CURRENT_SCN FROM V$DATABASE;-- 執行閃回 (SQL*Plus)
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
FLASHBACK DATABASE TO SCN 7654321;
ALTER DATABASE OPEN RESETLOGS;

3. 基于還原點閃回??

-- 創建擔保還原點
CREATE RESTORE POINT b_migration GUARANTEE FLASHBACK DATABASE;-- 執行閃回
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
FLASHBACK DATABASE TO RESTORE POINT b_migration;
ALTER DATABASE OPEN RESETLOGS;
2)、表級閃回 (FLASHBACK TABLE)??
?1. 恢復誤刪表?
-- 查看回收站
SELECT object_name, original_name, droptime 
FROM user_recyclebin 
WHERE original_name = 'test_EMP';-- 恢復表到刪除前狀態
FLASHBACK TABLE test_EMP TO BEFORE DROP;-- 重命名恢復的表
FLASHBACK TABLE "BIN$skjdsf93jksdf$" TO BEFORE DROP RENAME TO test_EMP_recovered;

?2. 回滾表數據到指定時間點?

-- 啟用行移動
ALTER TABLE test_ORDERS ENABLE ROW MOVEMENT;-- 閃回到特定時間
FLASHBACK TABLE test_ORDERS TO TIMESTAMP TO_TIMESTAMP('2025-06-13 09:00:00', 'YYYY-MM-DD HH24:MI:SS');-- 驗證數據
SELECT COUNT(*) FROM test_ORDERS AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE);

3. 恢復表到指定SCN??

-- 獲取當前SCN
SELECT CURRENT_SCN FROM V$DATABASE; -- 示例: 2345678-- 執行閃回
FLASHBACK TABLE test_ORDERS TO SCN 2345678;
3)、行級閃回 (FLASHBACK QUERY)??
?1. 查詢歷史數據?
-- 查詢1小時前的數據
SELECT * FROM test_EMP 
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE)
WHERE department_id = 50;-- 查詢特定SCN的數據
SELECT * FROM test_EMP 
AS OF SCN 1234567 
WHERE employee_id = 100;

2. 恢復誤刪數據?

-- 恢復1小時內刪除的數據
INSERT INTO test_EMP
SELECT * FROM test_EMP 
AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' HOUR)
WHERE employee_id NOT IN (SELECT employee_id FROM test_EMP
);

3. 恢復誤更新數據??

-- 恢復被誤更新的薪資
UPDATE test_EMP e
SET salary = (SELECT salary FROM test_EMP AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '30' MINUTE)WHERE employee_id = e.employee_id
)
WHERE department_id = 60;
4)、事務級閃回 (FLASHBACK TRANSACTION)??
?1. 查詢事務歷史?
-- 查找最近2小時的事務
SELECT xid, start_scn, commit_scn, operation, table_name
FROM flashback_transaction_query
WHERE TABLE_NAME = 'test_ORDERS'
AND START_TIMESTAMP > SYSTIMESTAMP - INTERVAL '120' MINUTE
ORDER BY start_scn DESC;

?2. 撤銷特定事務?

BEGINDBMS_FLASHBACK.TRANSACTION_BACKOUT(numtxns    => 1,txnnames   => SYS.ANYDATA.MAKEVARCHAR2('08000F00A8030000'), -- 替換為實際XIDoptions    => DBMS_FLASHBACK.CASCADE);
END;
/

?3. 增補SQL??

SELECT undo_sql 
FROM flashback_transaction_query 
WHERE xid = HEXTORAW('08000F00A8030000');

六、RMAN 空間競爭與清理腳本

閃回恢復區存儲:
  • 閃回日志
  • 歸檔日志
  • RMAN 備份?空間不足時會導致數據庫掛起(ORA-19815 告警)。
? 空間清理策略?
  • ?自動清理?Oracle 會在空間不足時按以下順序刪除:
  • 過期的 RMAN 備份
  • 已備份到磁帶的歸檔日志
  • 早于?DB_FLASHBACK_RETENTION_TARGET 的閃回日志。

手動強制清理??

#!/bin/bash
export ORACLE_SID=your_sid
export ORACLE_HOME=/u01/app/oracle/product/19.3/dbhome_1# 使用 RMAN 刪除過期備份和歸檔
--可以將命令在sqlplus單獨執行
rman target / << EOF
CROSSCHECK BACKUP;          -- 校驗備份有效性
DELETE NOPROMPT OBSOLETE;   -- 刪除過期的備份
--腳本中的 SYSDATE-7 可根據需求調整歸檔保留天數。
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
EXIT;
EOF# 釋放操作系統空間(清理殘留文件)定期執行(如每天)避免空間不足。
find ${ORACLE_BASE}/flash_recovery_area -name "*.bak" -mtime +7 -exec rm {} \;

七、監控與優化建議?

-- 閃回恢復區使用情況
SELECT * FROM V$RECOVERY_FILE_DEST;  -- 空間占用明細(按文件類型)
SELECT FILE_TYPE, PERCENT_SPACE_USED, PERCENT_SPACE_RECLAIMABLE 
FROM V$FLASH_RECOVERY_AREA_USAGE;-- 減少閃回保留時間(按需)調整保留策略
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=720;  -- 12小時-- 停止記錄 users 表空間的閃回日志排除非關鍵表空間
ALTER TABLESPACE users FLASHBACK OFF;-- 擴容至100GB擴展閃回恢復區
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=100G;?

?TIPS:

  • Flashback Database? 是應對邏輯錯誤的利器,但依賴閃回恢復區。
  • ?定期清理歸檔和備份是避免空間競爭的關鍵(結合 RMAN 和cron腳本)。
  • 經常監控 V$FLASH_RECOVERY_AREA_USAGE,巡檢第一位。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/84965.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/84965.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/84965.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Gartner《Reference Architecture for Federated Analytics》學習心得

研究背景 隨著分析平臺越來越易于被廣泛用戶使用,以及組織內用例的不斷增多和多樣化,分析架構的去中心化給專注于架構的分析專家帶來了混亂。組織在交付一致、可復用和可信的分析方面面臨挑戰,分布式分析架構需要在控制和敏捷之間取得平衡,然而許多組織在這方面的控制力不…

Windows下Docker一鍵部署Dify教程

Windows環境下Docker部署Dify完整指南 &#x1f4cb; 目錄 系統要求Docker安裝驗證Docker安裝Dify部署訪問Dify常見問題管理命令 &#x1f5a5;? 系統要求 在開始安裝之前&#xff0c;請確保你的Windows系統滿足以下要求&#xff1a; 硬件要求 CPU: > 2核心內存: >…

idea maven打包很慢,怎么提速-多線程

作為一個技術運維人員&#xff0c;經常要更新程序然后重新打包發布jar包。由于程序子模塊多&#xff0c;需要相互引用每次打包的時候都需要很久&#xff0c;怎么可以讓打包快一點呢&#xff1f;可以啟動打包的多線程。請參照下圖設置&#xff0c;線程數量應該和cpu內核數量要能…

Java/Kotlin selenium 無頭瀏覽器 [Headless Chrome] 實現長截圖 三種方式

在自動化測試和網頁抓取中&#xff0c;完整捕獲整個頁面內容是常見需求。傳統截圖只能捕獲當前視窗內容&#xff0c;無法獲取超出可視區域的頁面部分。長截圖技術通過截取整個滾動頁面解決了這個問題&#xff0c;特別適用于&#xff1a; 保存完整網頁存檔生成頁面可視化報告驗…

【AI大模型】Elasticsearch9 + 通義大模型實現語義檢索操作詳解

目錄 一、前言 二、Elasticsearch9 語義檢索介紹 2.1 ES9 語義檢索核心特性 2.2 semantic_text 字段類型說明 2.3 ES9 語義檢索原理 2.4 ES9 語義檢索優勢與使用場景 三、 Elasticsearch9 搭建過程 3.1 環境說明 3.2 部署方式一 3.2.1 創建docker網絡 3.2.2 獲取es9鏡…

linux開機原理以及如何開關機-linux023

linux開機原理以及如何開關機 Linux 系統啟動過程概述 階段描述內核引導啟動時&#xff0c;BIOS執行自檢&#xff0c;啟動設備通常是硬盤。操作系統接管硬件后&#xff0c;讀取/boot目錄下的內核文件。運行 initinit是系統所有進程的起點&#xff0c;負責啟動其他進程。它讀取…

使用 socat 和 xinetd 將程序綁定到端口運行

在現代網絡應用開發和系統管理中&#xff0c;經常需要將某些程序或腳本綁定到特定的網絡端口上&#xff0c;以實現遠程訪問或服務化。例如&#xff0c;一個簡單的 Python 腳本可能需要通過 TCP 端口提供服務&#xff0c;或者一個命令行工具需要通過網絡接口暴露其功能。為了實現…

電阻篇---上拉電阻

一、上拉電阻的定義與本質 定義&#xff1a;上拉電阻是一端連接到電源&#xff08;VCC&#xff09;&#xff0c;另一端連接到電路節點的電阻元件&#xff0c;其核心作用是將該節點的電平 “拉” 至電源電壓&#xff0c;使其在無信號輸入時保持穩定的高電平狀態。 本質原理&…

前端持續集成和持續部署簡介

持續集成&#xff08;CI&#xff09;&#xff1a;代碼提交后自動觸發構建、靜態檢查、單元測試&#xff0c;確保代碼質量。 持續部署&#xff08;CD&#xff09;&#xff1a;通過流水線將測試通過的代碼自動發布到測試/生產環境&#xff0c;減少人工操作失誤。 CI/CD 工具鏈 …

Elasticsearch高效文章搜索實踐

功能 創建索引和映射 使用postman添加映射和查詢 查詢所有的文章信息&#xff0c;批量導入到es索引庫中 server:port: 9999 spring:application:name: es-articledatasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/leadnews_article?useU…

React 中除了react-router還有哪些路由方案

在用React開發時&#xff0c;常用的路由是react-router &#xff0c;但除此之外&#xff0c;還有兩個路由方案&#xff0c;因為他們具備 react-router 沒有的特性。 1. tanstack/router 1.1. 主要特性 100% 推斷的 TypeScript 支持 類型安全的導航 嵌套路由和布局路由 內置…

VINS-Fusion 簡介、安裝、編譯、數據集/相機實測

目錄 VINS-Fusion 簡介 安裝 VINS-Fusion 源碼安裝 運行數據集 雙目模式 單目IMU 模式 雙目IMU 模式 D455 相機實際運行 雙目IMU 模式 VINS-Fusion 簡介 VINS-Fusion 是繼 VINS-Mono 和 VINS-Mobile&#xff08;單目視覺慣導 SLAM 方案&#xff09;后&#xff0c;香港科 技大學…

SQL Developer 表復制

SQL Developer 表復制 此方法在數據量比較大時&#xff0c;比一條一條的insert要快得多&#xff1b;具體是會覆蓋掉原數據&#xff0c;還是增量的處理&#xff0c;請自行創建demo表測試一下。 注意&#xff1a;原庫版本要與目標庫數據庫版本一致&#xff0c;否則可能會報錯的。…

影視劇學經典系列-梁祝-《呂氏春秋·應同》

1、背景 07版電視劇《梁山伯與祝英臺》中&#xff0c;謝道韞作為先生&#xff0c;給學生講了其中的句子。 2、名言 君為尊&#xff0c;以白為黑&#xff0c;臣不能從&#xff1b;父雖親&#xff0c;以黑為白&#xff0c;子不能從”出自《呂氏春秋應同》 其意為&#xff0c;…

異步爬蟲---

代碼結構分析 這是一個同步新聞爬蟲程序&#xff0c;主要包含以下幾個部分&#xff1a; 們把爬蟲設計為一個類&#xff0c;類在初始化時&#xff0c;連接數據庫&#xff0c;初始化logger&#xff0c;創建網址池&#xff0c;加載hubs并設置到網址池。 爬蟲開始運行的入口就是r…

微服務架構中的 Kafka:異步通信與服務解耦(二)

三、Kafka 基礎入門 3.1 Kafka 是什么 Kafka 最初由 LinkedIn 公司開發&#xff0c;是一個開源的分布式事件流平臺&#xff0c;后成為 Apache 基金會的頂級項目 。它不僅僅是一個簡單的消息隊列&#xff0c;更是一個分布式流處理平臺&#xff0c;具備強大的消息隊列、存儲系統…

Lighthouse與首屏優化

之前提到首屏優化&#xff0c;想到的就是Vue項目首頁打開很慢需要優化。一般都是肉眼看看&#xff0c;對當前的加載速度并沒有一個準確的衡量標準&#xff0c;也沒有很清晰的解決思路。 前兩天我想給自己的網站申請谷歌廣告&#xff0c;聽說審核對網站的性能要求很高。于是網上…

Maven 之 打包項目時沒有使用本地倉庫依賴問題

背景 pom 中使用了第三方jar包&#xff0c;遠程倉庫設置的是阿里云&#xff0c;之前運行很好&#xff0c;今天不知道怎么的&#xff0c;打包總是報錯&#xff0c;阿里云倉庫無法找到依賴包(本來也沒有)&#xff0c;按理來說&#xff0c;編譯打包時會優先選擇本地倉庫的包才對&a…

Mysql基礎入門\期末速成

DDL 操作數據庫語句 創建&刪除數據庫語句 創建數據庫 create database 數據庫名稱; -- 直接創建 create database if not exists 數據庫名稱; -- 如果不存在&#xff0c;則創建 create database 數據庫名稱 default charset utf8mb4; -- 創建編譯類型utf8的數據類型 cre…

SCADA|KingSCADA4.0中歷史趨勢控件與之前版本的差異

哈嘍,你好啊,我是雷工! 最近用到KingSCADA4.0信創版本,也算嘗鮮使用。 在使用的過程中發現有些功能或多或少存在一些差異, 這里將遇到的一些不同總結一下,便于后期更好的使用。 01 歷史趨勢控件 在KingSCADA中有一個歷史趨勢曲線控件KSHTrend。 該控件既可以連接King…