共有メモリー・セグメントのデタッチ、アタッチおよび解放
enduringのRAMポリシーにより、共有メモリー・セグメントからデタッチして、共有メモリー・セグメントをメモリー内に残すことができます。データベースを開く準備ができたら、この同じ共有メモリー・セグメントにアタッチできます。
ノート:
これは、高速アップグレードを実行する場合にのみ使用してください。『Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイド』の高速パッチ・アップグレードの実行についてを参照してください。
共有メモリー・セグメントのアタッチおよびデタッチは、データベースのロードおよびアンロードよりも大幅に高速です。データベースをアンロードすると、共有メモリー・セグメントが破棄されます。データベースをロードすると、新しい共有メモリー・セグメントが作成され、チェックポイント・ファイルからロードされます。enduringのRAMポリシーを指定すると、共有メモリー・セグメントをアタッチ、デタッチおよび解放できます。デタッチしても、共有メモリー・セグメントは引き続き存在し、アタッチするときに再利用できます。
次のttAdminコマンドを使用して、共有メモリー・セグメントに対してアタッチ、デタッチおよび解放を行います。これらの機能は、RAMポリシーがenduringに設定されている場合にのみ使用できます。
-
ttAdmin –shmDetach [-ckpt | -noCkpt]
: 共有メモリー・セグメントをデタッチし、管理サブデーモンを停止します。共有メモリー・セグメントは、サブデーモンの終了後もメモリーに残ります。共有メモリー・セグメントから切断する前に、サブデーモンが静的チェックポイントを実行するかどうかを指定できます。デフォルトでは、最終チェックポイントは
–ckpt
オプションを使用して実行されます。この最終チェックポイントでは、データベースの起動でリカバリ・プロセスを実行する必要がなくなります。–noCkpt
オプションを指定すると、最終チェックポイントを回避し、デタッチ・プロセスとアタッチ・プロセスのパフォーマンスが向上します。ただし、データベースが以前にデタッチされた共有メモリー・セグメントにアタッチできず、チェックポイント・ファイルからロードする必要がある場合、このチェックポイントを実行しないときは、データ損失を回避するためにロード中にリカバリ・プロセスを実行する必要があります。 -
ttAdmin –shmAttach
:ttAdmin –shmDetach
操作で正常にデタッチされた既存の共有メモリー・セグメントにアタッチします。データベースに対してこの共有メモリー・セグメントを管理するためのサブデーモンを作成します。 -
ttAdmin –shmFree
: メモリーに残っている共有メモリー・セグメントを明示的に破棄します。共有メモリー・セグメントは、正常にデタッチされた後、デタッチに失敗した後、またはデータベース・クラッシュ後に解放できます。デタッチ操作の失敗またはデータベースのクラッシュが発生した場合、データベースをリカバリする前に、共有メモリー・セグメントを解放する必要があります。データベースをリロードおよびリカバリするには、チェックポイント・ファイルを使用してリカバリするttAdmin –ramLoad
コマンドを実行します。
次の例は、ttAdmin -shmDetach
を使用して共有メモリー・セグメントをデタッチしてメモリー内に保持する方法を示しています。次に、ttAdmin –shmAttach
コマンドを使用して、既存の共有メモリー・セグメントにアタッチします。
-
ttAdmin -shmDetach
コマンドを使用して共有メモリー・セグメントをデタッチする前に、database1をクローズします。$ ttAdmin -close database1 RAM Residence Policy : enduring Manually Loaded In RAM : True Replication Agent Policy : manual Replication Manually Started : False Cache Agent Policy : manual Cache Agent Manually Started : False Database State : Closed
-
共有メモリー・セグメントをデタッチし、database1の管理サブデーモンを停止します。共有メモリー・セグメントは、「Manually loaded in RAM」の出力がFalseとして表示され、デタッチされていることがわかります。
ttStatus
ユーティリティでは、サブデーモンがデータベースからデタッチされていることが示されます。$ ttAdmin -shmDetach database1 RAM Residence Policy : enduring Manually Loaded In RAM : False Replication Agent Policy : manual Replication Manually Started : False Cache Agent Policy : manual Cache Agent Manually Started : False Database State : Closed $ ttStatus TimesTen status report as of Wed Aug 18 01:45:55 2021 Daemon pid 27561 port 6626 instance instance1 TimesTen server pid 27568 started on port 6628 ------------------------------------------------------------------------ ------------------------------------------------------------------------ Data store /tmp/databases/database1 Daemon pid 27561 port 6626 instance instance1 TimesTen server pid 27568 started on port 6628 There are no connections to the data store … Closed to user connections RAM residence policy: Enduring Subdaemon is manually detached from data store (Shared Memory Key 0x07108a02 ID 745504801) Replication policy : Manual Cache Agent policy : Manual PL/SQL enabled. ------------------------------------------------------------------------ Accessible by group g900 End of report
-
準備ができたら、
ttAdmin –shmAttach
コマンドを実行して管理サブデーモンを作成し、database1データベースの管理サブデーモンを起動して共有メモリー・セグメントにアタッチします。「Manually loaded in RAM」
の出力はTrueとして表示されて、共有セグメントが再度アタッチされることが示されます。ttStatus
ユーティリティでは、データベースがRAMにロードされることが示されます。$ ttAdmin -shmAttach database1 RAM Residence Policy : enduring Manually Loaded In RAM : True Replication Agent Policy : manual Replication Manually Started : False Cache Agent Policy : manual Cache Agent Manually Started : False Database State : Closed $ ttStatus TimesTen status report as of Wed Aug 18 01:46:08 2021 Daemon pid 27561 port 6626 instance instance1 TimesTen server pid 27568 started on port 6628 ------------------------------------------------------------------------ ------------------------------------------------------------------------ Data store /tmp/databases/ database1 Daemon pid 27561 port 6626 instance instance1 TimesTen server pid 27568 started on port 6628 There are 12 connections to the data store … Closed to user connections RAM residence policy: Enduring Data store is manually loaded into RAM Replication policy : Manual Cache Agent policy : Manual PL/SQL enabled. ------------------------------------------------------------------------ Accessible by group g900 End of report
-
そのデータベースをオープンします。
$ ttAdmin -open sampledb RAM Residence Policy : enduring Manually Loaded In RAM : True Replication Agent Policy : manual Replication Manually Started : False Cache Agent Policy : manual Cache Agent Manually Started : False Database State : Open
ノート:
共有メモリーセグメントをデタッチおよびアタッチできるようにすると、アップグレードを高速化できます。Oracle TimesTen In-Memory Databaseインストレーション、移行およびアップグレード・ガイドのTimesTen Classicのアップグレードを参照してください。
データベースが突然停止する障害(サブデーモンのクラッシュやアサーションの失敗など)がある場合、共有メモリー・セグメントはトランザクション上一貫性がない可能性があるため、破棄してからデータベースをリロードして新しい共有メモリー・セグメントを作成する必要があります。
次の例では、ttAdmin –shmFree
コマンドで共有メモリー・セグメントを解放します。その後、この例ではttAdmin –ramLoad
を実行してチェックポイント・ファイルからデータベースをリカバリし、新しい共有メモリー・セグメントを作成します。
-
データベース・クラッシュ後に共有メモリー・セグメントを解放します。
$ ttAdmin -shmFree database1 RAM Residence Policy : enduring Manually Loaded In RAM : False Replication Agent Policy : manual Replication Manually Started : False Cache Agent Policy : manual Cache Agent Manually Started : False Database State : Closed $ ttStatus TimesTen status report as of Wed Aug 18 02:12:27 2021 Daemon pid 6168 port 6626 instance instance1 TimesTen server pid 6175 started on port 6628 ------------------------------------------------------------------------ ------------------------------------------------------------------------ Data store /tmp/databases/database1 Daemon pid 27561 port 6626 instance instance1 TimesTen server pid 27568 started on port 6628 There are no connections to the data store Closed to user connections RAM residence policy: Enduring Data store is manually unloaded from RAM Replication policy : Manual Cache Agent policy : Manual PL/SQL enabled. ------------------------------------------------------------------------ Accessible by group g900 End of report
-
チェックポイント・ファイルからリカバリする、新しい共有メモリー・セグメントがある
database1
データベースをロードしオープンします。$ ttAdmin -ramLoad -open database1 RAM Residence Policy : enduring Manually Loaded In RAM : True Replication Agent Policy : manual Replication Manually Started : False Cache Agent Policy : manual Cache Agent Manually Started : False Database State : Open