Oracle RAC cache fusion原理测试

Jun 07, 2016 pm 04:50 PM
oracle oracle rac

Oracle RAC cache fusion是RAC最核心的工作机制,他把所有实例的SGA虚拟成一个大的SGA区,每当不同的实例请求相同的数据块,这个数

Oracle RAC cache fusion是RAC最核心的工作机制,他把所有实例的SGA虚拟成一个大的SGA区,每当不同的实例请求相同的数据块,这个数据块就需要在实例间进行传递。那到底什么时候传递呢?加上RAC有4个节点,其中的一个节点执行了一条SQL是全表扫描一张表,这个时候这个节点把这张表的数据加载到缓存;其他的节点如果需要相同的数据块会取第一个节点的数据,,那是需要的时候去,还是第一个节点推送呢?
 
  实验设定:
 
  1.清空4个节点的share pool和databuffer,其实当清除第一个节点的时候,其他的节点都已经清除了,从执行清除语句的时间就可以看出。清除后查下各节点data buffer中有没有缓存将要执行的SQL的表。
 
  2.在第一个节点上执行一条SQL.,在其他的节点上看data buffer中是否缓存SQL的表,如果有,说明是数据块是主动推送的。
 
  实验结论:
 
  数据块从第执行的节点推送到其他的节点上,RAC虽然使得使用的资源多了几倍,但由于cache fusion这个特性,上了RAC后的系统系统是否有提升还是未知之数。
 

 

---清理4个节点(54,55,56,57)shared_pool和buffer_cache
 现在节点54上清理share pool和data buffer
 SQL> alter system flush shared_pool;
 系统已更改。
 SQL> alter system flush buffer_cache;
 系统已更改。
 
---在其他的节点55,56,57上同样执行
 
---在第54个节点测试语句
 SQL> SELECT COUNT(1)
  2  FROM MM_DISTRIBUTION W
  3  WHERE    W.DATA_AREA LIKE '03'
  4    || '%'
  5  AND W.CREATE_DATE > TO_DATE('2013-01-01', 'yyyy-mm-dd');
 已用时间:  00: 00: 02.40
 执行计划
 ----------------------------------------------------------
 Plan hash value: 3507380501
 -------------------------------------------------------------------------------------------------------
 | Id  | Operation          | Name            | Rows  | Bytes | Cost (%CPU)| Time    | Pstart| Pstop |
 -------------------------------------------------------------------------------------------------------
 |  0 | SELECT STATEMENT    |                |    1 |    13 |  5209  (2)| 00:01:03 |      |      |
 |  1 |  SORT AGGREGATE    |                |    1 |    13 |            |          |      |      |
 |  2 |  PARTITION LIST ALL|                | 43668 |  554K|  5209  (2)| 00:01:03 |    1 |    2 |
 |*  3 |    TABLE ACCESS FULL| MM_DISTRIBUTION | 43668 |  554K|  5209  (2)| 00:01:03 |    1 |    2 |
 -------------------------------------------------------------------------------------------------------
 Predicate Information (identified by operation id):
 ---------------------------------------------------
    3 - filter("W"."CREATE_DATE">TO_DATE('2013-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
              "W"."DATA_AREA" LIKE '03%')
 统计信息
 ----------------------------------------------------------
        2997  recursive calls
          0  db block gets
      24196  consistent gets
      23581  physical reads
          0  redo size
        334  bytes sent via SQL*Net to client
        338  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          39  sorts (memory)
          0  sorts (disk)
          1  rows processed
 
SQL> /
 
已用时间:  00: 00: 00.28
 
执行计划
 ----------------------------------------------------------
 Plan hash value: 3507380501
 -------------------------------------------------------------------------------------------------------
 | Id  | Operation          | Name            | Rows  | Bytes | Cost (%CPU)| Time    | Pstart| Pstop |
 -------------------------------------------------------------------------------------------------------
 |  0 | SELECT STATEMENT    |                |    1 |    13 |  5209  (2)| 00:01:03 |      |      |
 |  1 |  SORT AGGREGATE    |                |    1 |    13 |            |          |      |      |
 |  2 |  PARTITION LIST ALL|                | 43668 |  554K|  5209  (2)| 00:01:03 |    1 |    2 |
 |*  3 |    TABLE ACCESS FULL| MM_DISTRIBUTION | 43668 |  554K|  5209  (2)| 00:01:03 |    1 |    2 |
 -------------------------------------------------------------------------------------------------------
 Predicate Information (identified by operation id):
 ---------------------------------------------------
    3 - filter("W"."CREATE_DATE">TO_DATE('2013-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
              "W"."DATA_AREA" LIKE '03%')
 统计信息
 ----------------------------------------------------------
          0  recursive calls
          0  db block gets
      23554  consistent gets
          0  physical reads
          0  redo size
        334  bytes sent via SQL*Net to client
        338  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed
 
---在4个节点查看share_pool中的SQL是否同步
 select sql_text from v$sql s where sql_text like '%MM_DISTRIBUTION%';
 
---在4个节点查看测试buffer_cache,可以看到其他的3个节点都已同步缓存数据
 select count(b.object_name)
  from sys.v_x$bh a, user_objects b
  where a.OBJ = b.object_id
    and b.object_name = 'MM_DISTRIBUTION'
    and a.STATE 0;    ---state=0表示free,其他表示已占用
 COUNT(B.OBJECT_NAME)
 --------------------
                23543 

Oracle教程:实例故障恢复

Linux-6-64下安装Oracle 12C笔记

在CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2

本文永久更新链接地址:

linux

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Oracle データベースのログはどのくらいの期間保存されますか? Oracle データベースのログはどのくらいの期間保存されますか? May 10, 2024 am 03:27 AM

Oracle データベース ログの保存期間は、次のようなログのタイプと構成によって異なります。 REDO ログ: 「LOG_ARCHIVE_DEST」パラメータで構成された最大サイズによって決定されます。アーカイブ REDO ログ: 「DB_RECOVERY_FILE_DEST_SIZE」パラメータで構成された最大サイズによって決まります。オンライン REDO ログ: アーカイブされず、データベースの再起動時に失われます。保持期間はインスタンスの実行時間と一致します。監査ログ: 「AUDIT_TRAIL」パラメータによって構成され、デフォルトで 30 日間保持されます。

Oracleで2つの日付の間の日数を計算する関数 Oracleで2つの日付の間の日数を計算する関数 May 08, 2024 pm 07:45 PM

2 つの日付の間の日数を計算する Oracle の関数は DATEDIFF() です。具体的な使用法は次のとおりです。 時間間隔の単位を指定します: 間隔 (日、月、年など) 2 つの日付値を指定します: date1 と date2DATEDIFF(interval, date1, date2) 日数の差を返します。

Oracle データベースの起動手順の順序は次のとおりです。 Oracle データベースの起動手順の順序は次のとおりです。 May 10, 2024 am 01:48 AM

Oracle データベースの起動シーケンスは次のとおりです。 1. 前提条件を確認します。 3. データベース インスタンスを起動します。 5. データベースに接続します。サービスを有効にします (必要な場合)。 8. 接続をテストします。

オラクルで間隔を使用する方法 オラクルで間隔を使用する方法 May 08, 2024 pm 07:54 PM

Oracle の INTERVAL データ型は、時間間隔を表すために使用されます。構文は INTERVAL <precision> <unit> です。INTERVAL の演算には、加算、減算、乗算、除算を使用できます。これは、時間データの保存などのシナリオに適しています。日付の差を計算します。

Oracle で特定の文字の出現数を確認する方法 Oracle で特定の文字の出現数を確認する方法 May 09, 2024 pm 09:33 PM

Oracle で文字の出現数を確認するには、次の手順を実行します。 文字列の全長を取得します。 文字が出現する部分文字列の長さを取得します。 部分文字列の長さを減算して、文字の出現数をカウントします。全長から。

Oracle データベース サーバーのハードウェア構成要件 Oracle データベース サーバーのハードウェア構成要件 May 10, 2024 am 04:00 AM

Oracle データベース サーバーのハードウェア構成要件: プロセッサ: マルチコア、少なくとも 2.5 GHz のメイン周波数 大規模なデータベースの場合は、32 コア以上が推奨されます。メモリ: 小規模データベースの場合は少なくとも 8 GB、中規模のデータベースの場合は 16 ~ 64 GB、大規模なデータベースまたは重いワークロードの場合は最大 512 GB 以上。ストレージ: SSD または NVMe ディスク、冗長性とパフォーマンスのための RAID アレイ。ネットワーク: 高速ネットワーク (10GbE 以上)、専用ネットワーク カード、低遅延ネットワーク。その他: 安定した電源、冗長コンポーネント、互換性のあるオペレーティング システムとソフトウェア、放熱と冷却システム。

Oracle にはどれくらいのメモリが必要ですか? Oracle にはどれくらいのメモリが必要ですか? May 10, 2024 am 04:12 AM

Oracle が必要とするメモリーの量は、データベースのサイズ、アクティビティー・レベル、および必要なパフォーマンス・レベル (データ・バッファー、索引バッファーの保管、SQL ステートメントの実行、およびデータ・ディクショナリー・キャッシュの管理) によって異なります。正確な量は、データベースのサイズ、アクティビティ レベル、および必要なパフォーマンス レベルによって影響されます。ベスト プラクティスには、適切な SGA サイズの設定、SGA コンポーネントのサイズ設定、AMM の使用、メモリ使用量の監視などが含まれます。

Oracleで文字列を置換する方法 Oracleで文字列を置換する方法 May 08, 2024 pm 07:24 PM

Oracle で文字列を置換する方法は、REPLACE 関数を使用することです。この関数の構文は、REPLACE(string, search_string, replace_string) です。使用手順: 1. 置換する部分文字列を特定します。 2. 部分文字列を置換する新しい文字列を決定します。 3. REPLACE 関数を使用して置換します。高度な使用法には、複数の置換、大文字と小文字の区別、特殊文字の置換などが含まれます。

See all articles