Supplemental Log是一种补充类型的日志,主要用于逻辑Standby数据库的同步、LogMiner、Streams和Flashback等技术。对于逻辑Stand
这篇文章是在《构建最高可用Oracle数据库系统:Oracle 11gR2 RAC管理、维护与性能优化》11.4.2小节的基础上进一步修改而成的,并感谢老谭的提醒和帮助。
Supplemental Log是一种补充类型的日志,主要用于逻辑Standby数据库的同步、LogMiner、Streams和Flashback等技术。对于逻辑Standby数据库来说,不能通过ROWID来标识某一行,Oracle推荐使用主键、约束和索引唯一标识行数据,但如果某部分表由于某种原因没有主键、唯一约束和唯一索引,不能有效的标识行数据,那么必须通过Supplemental Log记录多个字段甚至所有字段值来唯一标识表行。Supplemental Log也是记录在在线Redo日志中,所以启用Supplemental Log会加快在线Redo日志的填充。
Supplemental Log可以在数据库级别启动,在数据库级别启动Minimal Logging会记录操作的足够信息,通常在主数据库创建Minimal Logging已经足够使用。数据库级别Supplemental Log补充日志还能针对所有字段、主键字段、唯一字段和外键字段创建。另外也可以在表级别设置Supplemental Log,这叫做Identification Key Logging,不同类型的Supplemental Log会产生不同大小的日志记录。
执行以下的SQL启用或禁用数据库级别Minimal Logging:
ALTER DATABASE ADD|DROP SUPPLEMENTAL LOG DATA;
针对逻辑Standby数据库记录的日志信息有以下规则:
1).如果一个表有主键被定义,那么主键被记录作为UPDATE语句的一部分去标识修改的行。
2).如果主键不存在,最短的非空唯一约束、唯一索引被记录作为UPDATE语句的一部分标识修改的行。
3).在主键和非空唯一约束/索引都没有的情况下,所有的列被记录,作为UPDATE语句的一部分标识修改的行。换句话说,除了LONG、LOB、LONG RAW、对象类型和集合类型的字段,所有字段都将被记录。
4).一个函数索引,即使它是被定义为唯一的,也不能用于唯一标识修改的行。然而,只要修改的行能被唯一标识,逻辑Standby数据库支持函数索引表的同步。
Oracle推荐在主数据库尽可能的给表添加主键或者非空唯一索引,确保SQL Apply能有效的应用Redo数据更新逻辑Standby数据库。
下面通过实验来讨论Oracle补充日志的语法及类型:
C:\Users\LIUBINGLIN>sqlplus / as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on 星期六 3月 15 20:27:28 2014
Copyright (c) 1982, 2011, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> col supplemental_log_data_fk format a30
SQL> col supplemental_log_data_all format a30
SQL> col supplemental_log_data_min format a30
SQL> set linesize 200
SQL> select SUPPLEMENTAL_LOG_DATA_FK,SUPPLEMENTAL_LOG_DATA_ALL,SUPPLEMENTAL_LOG_DATA_MIN from v$database;
SUPPLEMENTAL_LOG_DATA_FK SUPPLEMENTAL_LOG_DATA_ALL SUPPLEMENTAL_LOG_DATA_MIN
------------------------------ ------------------------------ ------------------------------
NO NO NO
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
数据库已更改。
SQL> select SUPPLEMENTAL_LOG_DATA_FK,SUPPLEMENTAL_LOG_DATA_ALL,SUPPLEMENTAL_LOG_DATA_MIN from v$database;
SUPPLEMENTAL_LOG_DATA_FK SUPPLEMENTAL_LOG_DATA_ALL SUPPLEMENTAL_LOG_DATA_MIN
------------------------------ ------------------------------ ------------------------------
NO NO YES
SQL> ALTER DATABASE DROP SUPPLEMENTAL LOG DATA;
数据库已更改。
SQL> select SUPPLEMENTAL_LOG_DATA_FK,SUPPLEMENTAL_LOG_DATA_ALL,SUPPLEMENTAL_LOG_DATA_MIN from v$database;
SUPPLEMENTAL_LOG_DATA_FK SUPPLEMENTAL_LOG_DATA_ALL SUPPLEMENTAL_LOG_DATA_MIN
------------------------------ ------------------------------ ------------------------------
NO NO NO
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
数据库已更改。
SQL> select SUPPLEMENTAL_LOG_DATA_FK,SUPPLEMENTAL_LOG_DATA_ALL,SUPPLEMENTAL_LOG_DATA_MIN from v$database;
SUPPLEMENTAL_LOG_DATA_FK SUPPLEMENTAL_LOG_DATA_ALL SUPPLEMENTAL_LOG_DATA_MIN
------------------------------ ------------------------------ ------------------------------
YES NO IMPLICIT
SUPPLEMENTAL_LOG_DATA_FK=YES表示启动了外键补充日志。
SQL> ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (FOREIGN KEY) COLUMNS;
数据库已更改。
SQL> select SUPPLEMENTAL_LOG_DATA_FK,SUPPLEMENTAL_LOG_DATA_ALL,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

ACID屬性包括原子性、一致性、隔離性和持久性,是數據庫設計的基石。 1.原子性確保事務要么完全成功,要么完全失敗。 2.一致性保證數據庫在事務前後保持一致狀態。 3.隔離性確保事務之間互不干擾。 4.持久性確保事務提交後數據永久保存。

MySQL既是數據庫管理系統(DBMS),也與編程語言緊密相關。 1)作為DBMS,MySQL用於存儲、組織和檢索數據,優化索引可提高查詢性能。 2)通過SQL與編程語言結合,嵌入在如Python中,使用ORM工具如SQLAlchemy可簡化操作。 3)性能優化包括索引、查詢、緩存、分庫分錶和事務管理。

MySQL使用SQL命令管理數據。 1.基本命令包括SELECT、INSERT、UPDATE和DELETE。 2.高級用法涉及JOIN、子查詢和聚合函數。 3.常見錯誤有語法、邏輯和性能問題。 4.優化技巧包括使用索引、避免SELECT*和使用LIMIT。

MySQL是一種高效的關係型數據庫管理系統,適用於存儲和管理數據。其優勢包括高性能查詢、靈活的事務處理和豐富的數據類型。實際應用中,MySQL常用於電商平台、社交網絡和內容管理系統,但需注意性能優化、數據安全和擴展性。

SQL和MySQL的關係是標準語言與具體實現的關係。 1.SQL是用於管理和操作關係數據庫的標準語言,允許進行數據的增、刪、改、查。 2.MySQL是一個具體的數據庫管理系統,使用SQL作為其操作語言,並提供高效的數據存儲和管理。

InnoDB使用redologs和undologs確保數據一致性和可靠性。 1.redologs記錄數據頁修改,確保崩潰恢復和事務持久性。 2.undologs記錄數據原始值,支持事務回滾和MVCC。

EXPLAIN命令的關鍵指標包括type、key、rows和Extra。 1)type反映查詢的訪問類型,值越高效率越高,如const優於ALL。 2)key顯示使用的索引,NULL表示無索引。 3)rows預估掃描行數,影響查詢性能。 4)Extra提供額外信息,如Usingfilesort提示需要優化。

Usingtemporary在MySQL查詢中表示需要創建臨時表,常見於使用DISTINCT、GROUPBY或非索引列的ORDERBY。可以通過優化索引和重寫查詢避免其出現,提升查詢性能。具體來說,Usingtemporary出現在EXPLAIN輸出中時,意味著MySQL需要創建臨時表來處理查詢。這通常發生在以下情況:1)使用DISTINCT或GROUPBY時進行去重或分組;2)ORDERBY包含非索引列時進行排序;3)使用複雜的子查詢或聯接操作。優化方法包括:1)為ORDERBY和GROUPB


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!