-
Diese
Anmeldung betrifft einen ähnlichen Gegenstand
wie die
Japanische Patentanmeldung H11-162044 und
die zugeordnete US-Patentanmeldung Nr. 09/376,991, jetzt
US-Patent Nr. 6,681,303 .
-
Die
vorliegende Erfindung betrifft ein Fernkopiersystem und eine Fernkopierverfahren,
welches zwischen Speichervorrichtungen oder zwischen Host-Computern verwendet
wird.
-
Eine
Technik gemäß dem Stand
der Technik wird in der Praxis so verwendet, dass Inhalte eines physikalischen
Volumens oder eines logischen Volumens mittels Fernkopieren zwischen
Speichervorrichtungen dupliziert werden und, wenn ein Fehler in einer
Speichervorrichtung auftritt, die Speichervorrichtung so geschaltet
wird, dass die Fernkopie gesichert wird. Das Patentdokument 1, welches
als Referenz 1 und 2 angegeben ist, offenbart eine Verdoppelungstechnik,
bei der die Fernkopie nicht für
das gesamte Volumen ausgeführt
wird, sondern nur für
einen notwendigen Teil des Volumens.
-
Bei
dieser Technik wird das Duplizieren für einen spezifizierten Teil
des Volumens erreicht. Dennoch wird ein feineingestelltes Duplizieren
nicht in einer Weise zugeordnet zu Datenbereichen erreicht, welche
durch eine spezielle Anwendung behandelt wurden. Speziell beim Duplizieren
von Datenbankinhalten müssen
Computermanagementanweisungen auf Betriebssystemebene anstelle der
Datenbankanweisungen verwendet werden. Außerdem ist das tabellenweise
Duplizieren in einem Datenbankmanagementsystem nicht leicht durchzuführen.
-
Die
EP 0 672 985A offenbart
ein Ferndaten-Shadowsystem, welches eine speicherbasierte Fähigkeit
zur Echtzeit-Notfallwiederherstellung vorsieht. Aufzeichnungsaktualisierungen
auf der Primärseite
bewirken I/O-Schreibvorgänge
innerhalb eines Speicheruntersystems. Die I/O-Schreibvorgänge erhalten
einen Zeitstempel, und die Zeit, Folge und die physikalische Lage
der Aufzeichnungsaktualisierungen werden in einem primären Datenverschiebungsvorgang
gesammelt. Die primäre
Datenverschiebung gruppiert Sätze
von Aufzeichnungsaktualisierungen und zugeordneten Steuerinformationen
basierend auf einem vorgegebenen Zeitintervall, wobei sie an die
Aufzeichnungsaktualisierungen eine vorangestellte Kopfzeile hängt, sodass
selbstbeschreibende Aufzeichnungssätze gebildet werden. Die selbstbeschreibenden
Aufzeichnungssätze
werden zu einer entfernten sekundären Seite übertragen, wobei konsistente
Gruppen gebildet werden, sodass die Aufzeichnungsaktualisierungen
so angeordnet werden, dass sie in einer Folge gespiegelt werden
können, die
zu der Folge konsistent ist, in der sie I/O-Schreibvorgänge auf
der Primärseite
veranlassen.
-
Somit
werden bei der vorliegenden Erfindung Daten vorzugsweise in Einheiten
von Tabellen dupliziert, die jeweils einen Bereich von Daten darstellen,
der in einer Datenbank behandelt wird.
-
Um
insbesondere das obige Problem anzusprechen, sieht ein Aspekt der
vorliegenden Erfindung ein Fernkopiersystem entsprechend dem Patentanspruch
1 vor. Ein weiterer Aspekt der vorliegenden Erfindung sieht ein
Verfahren zur Anwendung beim Fernkopieren gemäß Patentanspruch 11 vor.
-
Gemäß der vorliegenden
Erfindung wird das Duplizieren (Verdoppeln) in einer Datenbank vorzugsweise
tabellenweise unter Verwendung von Anweisungen für ein Datenbankmanagementsystem gesteuert.
-
Weitere
Aspekte und Merkmale der Erfindung sind in den Ansprüchen gekennzeichnet.
-
In
den Zeichnungsfiguren ist:
-
1 ein
Diagramm, welches die Gesamtkonfiguration einschließlich eines
Fernkopiersystems gemäß einem
ersten Ausführungsbeispiel
zeigt,
-
2 ein
Diagramm, welches die Konfiguration eines Fernkopiersystems zeigt,
-
3A ein
Diagramm, welches Details einer in 2 dargestellten
Seite zeigt,
-
3B ein
Diagramm, welches Details eines in 2 gezeigten
Protokolls zeigt,
-
4 ein
Diagramm, welches ein Beispiel des Aufbaus einer DB-Adress-Blockadress-Umwandlungstabelle
zeigt,
-
5 ein
Diagramm, welches ein Beispiel einer Paarzustandsverwaltungstabelle
zeigt,
-
6 ein
Diagramm, welches die Verarbeitung einer UPDATE-Anweisung (Aktualisierungsanweisung)
in einer Datenbank zeigt,
-
7 ein
Diagramm, welches die Verarbeitung einer COMMIT-Anweisung in einer
Datenbank zeigt,
-
8 ein
Diagramm, welches die Verarbeitung einer Paarformationsanweisung
zeigt,
-
9 ein
Diagramm, welches die Verarbeitung einer Paarresynchronisationsanweisung
zeigt,
-
10 ein
Diagramm, welches die Verarbeitung einer Paarzustandsreferenzanweisung
für eine Tabelle
zeigt,
-
11 ein
Diagramm, welches die Verarbeitung einer COMMIT-Anweisung im Falle
zeigt, bei dem ein Tabellenschreibschutz eingerichtet ist,
-
12 ein
Diagramm, welches das Abbruchverfahren in einem Steuerungsprozess
einer Fernkopie zeigt,
-
13 ein
Diagramm, welches das Verfahren einer Paarabbruchsanweisung zeigt
-
14 ein
Diagramm, welches das Verfahren zeigt, das im Falle eines Fehlerstops
einer Fernkopie ausgeführt
wird,
-
15 ein
Diagramm, welches die Gesamtkonfiguration zeigt, die ein Fernkopiersystem
gemäß einem
zweiten Ausführungsbeispiel
enthält.
-
Ausführungsbeispiele
der Erfindung werden nachfolgend unter Bezugnahme auf die Zeichnungen beschrieben.
Das erste Ausführungsbeispiel
behandelt einen Fall, bei dem das Fernkopieren hauptsächlich in
einer Speichervorrichtungsebene durchgeführt wird. Das zweite Ausführungsbeispiel
ist eine Modifikation des ersten Ausführungsbeispiels und behandelt
einen Fall, bei dem das Fernkopieren hauptsächlich auf der Ebene eines
Hosts ausgeführt
wird, wo eine Datenbank betrieben wird. Diese werden nacheinander
beschrieben.
-
Erstes Ausführungsbeispiel
-
Aufbau des Fernkopiersystems
-
1 ist
ein Diagramm, welches den Gesamtaufbau zeigt, der ein Fernkopiersystem
gemäß dem ersten
Ausführungsbeispiel
umfasst. Wie in 1 dargestellt, umfasst das Fernkopiersystem 1 einen
Host 2A, Kopierquelle-Speichervorrichtungen 3A und 3B und
Kopierziel-Speichervorrichtungen 3C und 3D. In 1 ist
ein Host 2B auf Seiten der Speichervorrichtungen 3C und 3D vorgesehen.
Jedoch ist der Host 2B keine unentbehrliche Komponente.
Außerdem
ist jeweils auf der Seite der Kopierquelle und der Seite des Kopierziels
eine Speichervorrichtung dargestellt. Jedoch können auf jeder Seite auch mehrere
Speichervorrichtungen vorgesehen sein. Beispielsweise können drei
Speichervorrichtungen mit dem Host 2A verbunden sein.
-
Jede
der Speichervorrichtungen 3A, 3B, 3C und 3D können eine
oder mehrere logische Datenträger
enthalten. Im Beispiel von 1 enthält die Speichervorrichtung 3A einen
logischen Datenträger 4A. Die
Speichervorrichtung 3B enthält einen logischen Datenträger 4B.
Die Speichervorrichtung 3C enthält einen logischen Datenträger 4C.
Die Speichervorrichtung 3D enthält einen logischen Datenträger 4D.
-
Im
vorliegenden Ausführungsbeispiel
wird eine Tabelle einer Datenbank eines Fernkopierobjekts in einem
Datenbankserver (nachfolgend: „DB-Server") 21A des
Hosts 2A seitenweise verwaltet und gelesen/geschrieben.
Dagegen wird in den Speichervorrichtungen 3A, 3B, 3C,
und 3D die Verwaltung nicht seitenweise durchgeführt. Stattdessen wird
die Verwaltung in Einheiten durchgeführt, die als Block bezeichnet
werden. Außerdem
wird das Lesen und Schreiben durch die Hosts 2A und 2B blockweise
durchgeführt.
Daher ist die Größe einer
von der Datenbanktabelle verwendeten Seite üblicherweise ein ganzzahliges
Vielfaches der Größe eines
Blocks.
-
So
wie in den Speichervorrichtungen 3A, 3B, 3C und 3D,
werden Objekte blockweise so verwaltet, dass die nachfolgende Fernkopie
ausgeführt
wird. Das bedeutet, dass die Fernkopie von der Speichervorrichtung 3A zu
der Speichervorrichtung 3C durchgeführt wird, so wie von der Speichervorrichtung 3B zu
der Speichervorrichtung 3D. Ein Verfahren, wie dies erreicht
wird, wird später
beschrieben.
-
Ein
Protokoll und eine Tabelle, die durch den DB-Server 21A verwaltet
werden, werden nicht notwendigerweise in einer einzigen Speichervorrichtung und
einem logischen Datenträger
jeweils gespeichert. Beispielsweise kann eine einzelne Tabelle,
wie im Beispiel von TBL1 in 1 gezeigt,
geteilt und in Speicherdatenbereichen (Datenbereichen) bestehend
aus Blöcken
in einer Mehrzahl von Datenträgervorrichtungen
oder logischen Datenträgern
gespeichert werden. In diesem Fall wird für jeden der geteilten Speicherdatenbereiche
eine Fernkopie durchgeführt.
-
2 ist
ein Diagramm, welches den Aufbau des Fernkopiersystems zeigt. Hier
werden der Host 2A und die Speichervorrichtung 3A beschrieben,
die in 1 gezeigt sind. Jedoch sind der Host 2B und die
Speichervorrichtungen 3B, 3C und 3D ähnlich.
-
Aufbau des Hosts
-
Der
Host 2A ist ein Computer, der eine CPU (Central Processing
Unit) 22, einen Speicher 34 und ein Netzwerk-Interface
(nachfolgend: „Netzwerk-I/F") 30 umfasst.
Die CPU 22 kann irgendeine Art von CPU sein, die mit einer
vorgegebenen Rechnerfunktion versehen ist. Deren Art ist nicht auf
eine spezielle CPU eingeschränkt.
Der Speicher 34 kann irgendeine Art von Speicher sein,
so wie ein gewöhnlicher Halbleiterspeicher,
der für
den Betrieb der CPU 22 verwendbar ist. Die Art ist nicht
begrenzt auf einen speziellen Speicher. Die Art des Netzwerk-I/F 30 ist nicht
auf ein spezielles Netzwerk begrenzt und kann von irgendeinem Typ
sein, der zur Kommunikation mit der Speichervorrichtung 3A geeignet
ist. Es kann beispielsweise ein Interface verwendet werden, welches
eine Kommunikation über
ein Gigabit-Ethernet (eingetragene Marke), einen Glasfaserkanal
oder über
eine FICON (registrierte Marke und steht für Fiber Connection (Glasfaserverbindung))
ausführen kann.
-
Der
Speicher 34 enthält
einen DB-Server 21 und enthält das Serverprogramm für einige
Anwendungen. Der DB-Server 21 enthält einen SQL-Ausführungsbereich 23,
einen Protokollverwaltungsbereich 24 und einen Verwaltungspufferbereich 25.
Die Bereiche 23-25 sind Programme. Der DB-Server 21 enthält eine
Verwaltungspuffer-Warteschlange 26, eine DB-Adress-Blockadress-Umwandlungstabelle 27,
einen Protokollpuffer 28 und einen Tabellenpuffer 29.
-
Der
SQL-Ausführungsbereich 23 analysiert eine
SQL-Anweisung und führt
einen Lesevorgang oder Schreibvorgang einer Aufzeichnung im Tabellenpuffer 29 aus.
Wenn ein Schreibvorgang ausgeführt
wird, schreibt der SQL-Ausführungsbereich 23 ein
Protokoll in den Protokollpuffer 28. Außerdem, wenn notwenig, veranlasst
der SQL-Ausführungsbereich 23 den
Protokollverwaltungsbereich 24 und den Verwaltungspufferbereich 25 einen
Lesevorgang in einen Block oder einen Schreibvorgang aus einem Block
durchzuführen.
Der SQL-Ausführungsbereich 23 kann
Standard-SQL-Anweisungen und fünf
Instruktionen ausführen,
die Paarbetriebsanweisungen in Fernkopie betreffen. Die fünf Anweisungen,
die eine Paarbetriebsanweisung betreffen, zeigen an: „Paarerzeugung" zur Durchführung einer
Paarbildung, „Paardisplay" zum Anzeigen des
Paarzustands, „Paarsuspend" zum Anhalten einer
Fernkopie zwischen den Komponenten eines Paars, „Paarsync" zum Wiederaufnehmen einer angehaltenen Fernkopie
und zum Resynchronisieren eines Paars und „Paardelete" zum Löschen eines
Paars.
-
Wenn „Paardelete" ausgeführt wird,
wird „Paarsuspend" zuerst durchgeführt, sodass
die Fernkopie angehalten wird. Dann überträgt der SQL-Ausführungsbereich 23 eine
Anweisung zum Löschen
eines Zielblocks vom Host 2A zur Speichervorrichtung 3A.
Dann löscht
die Speichervorrichtung 3A die Information des betreffenden
Blocks von der Paarzustandsverwaltungstabelle 48. Der Betrieb
bei „Paarerzeugung", „Paardisplay", „Paarsuspend" und „Paarsync" wird später beschrieben.
-
Der
Protokollverwaltungsbereich 24 führt Lesen und Schreiben (Page-in/Page-out) zwischen dem
Protokollpuffer 28 und dem Block in der Speichervorrichtung 3A aus.
Der Verwaltungspufferbereich 25 führt Lesen und Schreiben (Page-in/Page out) zwischen
dem Tabellenpuffer 29 und dem Speicherdatenbereich in der
Speichervorrichtung 3A aus.
-
Die
Pufferverwaltungswarteschlange 26 enthält eine freie Warteschlange 31,
eine benutzte Warteschlange 32 und eine unbenutzte Warteschlange 33.
Die freie Warteschlange 31, die benutzte Warteschlange 32 und
die unbenutzte Warteschlange 33 führen die Page-Verwaltung des
Tabellenpuffers 29 aus. Dies bedeutet, dass die freie Warteschlange 31, die
benutzte Warteschlange 32 und die unbenutzte Warteschlange 33 die
Page-Information in der Form verwalten, wie diese über einen
Zweiweg-Link in jeder Warteschlange verbunden ist. Jede Seite (Page) wird
in irgendeiner dieser drei verwaltet. Die Warteschlange des Zweiweg-Links
wird von einem Warteschlangeneingang gebildet, der folgendes enthält: Einen
Pointer, der den nachfolgenden Warteschlangeneingang anzeigt (ein
Knoten zur Verwaltung der Page-Information), einen Pointer, der
den vorausgehenden Warteschlangeneingang anzeigt und die Adresse
der Seite auf dem Tabellenpuffer 29, verwaltet durch den
betreffenden Warteschlangeneingang. Die Datenstruktur zur Verwaltung
der Warteschlange kann ein Einweg-Link, anders als der Zweiweg-Link, sein,
sowie ein anderes Verfahren.
-
Die
freie Warteschlange 31 verwaltet unbenutzte Seiten, wo
Inhalte nicht von Blöcken
gelesen werden. Die verwalteten Seiten in der freien Warteschlange 31 können so
verwendet werden, wie sie sind. Sogar wenn sie neu verwendet werden,
erfordern diese Seiten kein Schreiben in den Blöcken.
-
Die
benutzte Warteschlange 32 ist eine Warteschlange, die Zeiger
(Pointer) zu Seiten enthält,
deren Inhalte geändert
worden sind, nachdem die Inhalte von den Blöcken gelesen wurden. Die verwalteten Seiten
in der benutzten Warteschlange 32 sind die, die einen Schreibvorgang
in die Blöcke
erfordern.
-
Die
unbenutzte Warteschlange 33 ist eine Warteschlange, die
Zeiger zu Seiten enthält,
deren Inhalte nicht vollständig
verändert
worden sind, nachdem die Inhalte von den Blöcken gelesen worden sind. Die
verwalteten Seiten in der unbenutzten Warteschlange 33 erfordern
kein Schreiben in die Blöcke.
-
Die
verwalteten Seiten in der freien Warteschlange 31, der
benutzten Warteschlange 32 und der unbenutzten Warteschlange 33 verlaufen
gegenseitig.
-
Erst
wenn eine Seite von der Speichervorrichtung 3A in den Tabellenpuffer 29 eingelesen
ist, geht die gelesene Seite von der Verwaltung der freien Warteschlange 31 zu
der Verwaltung der unbenutzten Warteschlange 33 über. Wenn
die Daten in dem Tabellenpuffer 29 gelöscht sind, hat die Seite die
Datenübergänge von
der Verwaltung der unbenutzten Warteschlange 33 zu der
Verwaltung der freien Warteschlange 31 aufgezeichnet.
-
Wenn
eine Seite aus der Speichervorrichtung 3A in den Tabellenpuffer 29 gelesen
ist und dann ihre Inhalte aktualisiert worden sind, geht die Seite
von der Verwaltung der freien Warteschlange 31 zur Verwaltung
der benutzten Warteschlange 32 über. Danach, wenn die Daten
in dem Tabellenpuffer 29 in der Speichervorrichtung 3A eingeschrieben sind
und dann die Daten ausrangiert sind, hat die Seite die Datenübergänge von
der Verwaltung der benutzten Warteschlange 32 zu der Verwaltung
der freien Warteschlange 31 aufgezeichnet.
-
Wenn
Daten im Tabellenpuffer 29 in die Speichervorrichtung 3A eingeschrieben
sind, hat die Seite die Datenübertragungen
von der Verwaltung der benutzten Warteschlange 32 zu der
Verwaltung der unbenutzten Warteschlange 33 aufgezeichnet.
Danach, wenn die Daten im Tabellenpuffer 29 aktualisiert
worden sind, hat die Seite die Datenübertragungen von der Verwaltung
der unbenutzten Warteschlange 33 zu der Verwaltung der
benutzten Warteschlange 32 aufgezeichnet.
-
Die
DB-Adress-Blockadress-Umwandlungstabelle 27 ist eine Tabelle
zur Umwandlung einer Adresse, wobei eine Tabelle der Datenbank in
dem Host 2A in einer Blockadresse eines Speicherdatenbereichs
aufbewahrt wird, der die Inhalte in der Speichervorrichtung 3A speichert.
Ein Beispiel des Aufbaus der DB-Adress-Blockadress-Umwandlungstabelle 27 wird
später
beschrieben.
-
Der
Protokollpuffer 28 ist ein Bereich des Speichers 34,
um das Protokoll einer SQL-Anweisung zu speichern, die durch den
SQL-Ausführungsbereich 23 als
Datenbankanweisungen für
den DB-Server 21 ausgeführt
werden. Beispielsweise, wenn eine UPDATE-Anweisung (Aktualisierungsanweisung)
und eine COMMIT-Anweisung
(Übertragungsanweisung)
im vorhergehenden Bereich ausgeführt
worden sind, wird ein Protokoll der UPDATE-Anweisung im Protokoll
L1 von 2 aufgezeichnet, während ein Protokoll der COMMIT-Anweisung
in dem Protokoll L2 aufgezeichnet wird.
-
Der
Protokollpuffer 28 kann wie ein Ringpuffer bedient werden,
anders als eine Warteschlange eines Zweiweg-Links. In der Form eines
Ringpuffers wird der Pufferbereich aufeinanderfolgend benutzt, beginnend
bei der Startadresse des Protokollpuffers 28. Wenn die
Adresse die Endadresse des Protokollpuffers 28 erreicht,
werden die Seiten nach Rückkehr zur
Startadresse wiederbenutzt.
-
Der
Tabellenpuffer 29 ist ein Puffer zur Aufzeichnung einer
Tabelle der Datenbank. Wie in 2 gezeigt,
zeichnet der Tabellenpuffer 29 die Tabelle seitenweise
auf und verwaltet die Seiten unter Verwendung der Pufferverwaltungswarteschlange 26. Die
hier erwähnte
Tabelle wird in die Seiten P1 und P2 des Tabellenpuffers 29 gespeichert,
wie in 2 gezeigt.
-
Auf
der Ebene des Puffers des DB-Servers 21 wird die Tabelle
durch die Warteschlange seitenweise verwaltet. Schreiben und Lesen
werden für den
Puffer ebenfalls seitenweise durchgeführt. Hier können Lese-/Schreib-Anforderungen
an den Speicher blockweise spezifiziert werden, außer im Falle eines
Großrechners
(Lese-/Schreib-Anforderungen können
in Großrechnern
byteweise spezifiziert werden). Wegen des oben erwähnten Merkmals
des DB-Servers 21 werden Lese-/Schreib-Anweisungen im Seitenformat
umgewandelt und in Form einer Blockadresse ausgegeben. Diese Situation
wird jedoch für
den Protokollpuffer nicht beibehalten. Das heißt, Lesen und Schreiben kann
blockweise durchgeführt werden.
-
Aufbau der Speichervorrichtung
-
Die
Speichervorrichtung 3A umfasst einen Speicherplatten-Controller 42 und
drei Speicherplattenvorrichtungen 44A, 44B und 44C.
Die Speicherplattenvorrichtungen 44A, 44B und 44C können beispielsweise
wie einzelne logische Speicherplatten 45 unter der Verwaltung
des Speicherplatten-Controllers 42 behandelt werden. Die
Anzahl der Speicherplattenvorrichtungen und die Anzahl der logischen
Speicherplatten kann geändert
werden.
-
Der
Speicherplatten-Controller 42 ist ein Computer, der wenigstens
eine CPU 41 und einen Speicher 43 umfasst. Die
CPU 41 kann jede Art von CPU sein, die mit einem vorgegebenen
Berechnungsweg versehen ist. Die Art ist nicht auf eine spezielle
CPU begrenzt. Der Speicher 43 kann jede Art von Speicher
sein, so wie ein gewöhnlicher
Halbleiterspeicher, der für
den Betrieb der CPU 41 geeignet ist. Dessen Art ist nicht
begrenzt auf einen speziellen Speichertyp.
-
Der
Speicher 43 enthält
einen Fernkopierprogrammbereich 46, einen Speicherplattenanordnungs-Steuerprogrammbereich
und eine Paarzustandsverwaltungstabelle 8.
-
Der
Fernkopie-Programmbereich 46 ist ein Programm zur Durchführung der
Fernkopie eines Speicherdatenbereichs korrespondierend zu einer Tabelle
der in den Speicherplattenvorrichtungen 44A, 44B und 44C oder
der logischen Speicherplatte 45 aufgezeichneten Datenbank.
-
Der
Speicherplattenanordnungs-Steuerprogrammbereich hat die Steuerfunktion
wie eine Speicherplattenanordnung mit einer Vielzahl von Speicherplatten 44A, 44B und 44C,
die mit dem Speicherplattencontroller 42 verbunden sind
und dadurch diese Einheiten in der Form einer logischen Speicherplatte 45,
wie oben beschrieben, konfigurieren. Das Steuerverfahren der Speicherplattenanordnung
kann ein RAID (Redundant Array of Independent Disks) oder dergleichen
sein. Jedoch ist das Verfahren nicht darauf beschränkt.
-
Die
Paarzustandsverwaltungstabelle 48 ist eine Tabelle zur
Verwaltung des Zustands eines Paars von Fernkopieobjekten. In dieser
Tabelle werden Informationen verwaltet, was notwendig ist, wenn
der Speicherplattencontroller 42 oder die Speichervorrichtung 3A eine
Fernkopie ausführt.
-
Beispiel für den Aufbau der Seite und
des Protokolls
-
Als
nächstes
werden die Seiten P1 und P2 und die Protokolle L1 und L2, die in 2 dargestellt sind,
nachfolgend unter Bezugnahme auf 3 beschrieben.
-
Wie
in 3A gezeigt, enthält die Seite P1 eine Tabelle
ID (Bezugszeichen P1A), eine DB-Adresse P1B, eine LastLSN (Last
Log Sequence Number = letzte Protokollfolgenummer) P1C, eine LastTSN
(Last Transaction Sequence Number = letzte Transaktionsfolgenummer)
P1D, ein Benutzt-Zeichen (Dirty Flag) P1E und Aufzeichnungen P1F.
Die LastLSN und die LastTSN enthalten jeweils die ID eines Protokolls
und die ID einer Transaktion. Außerdem ist die Seite P2 ähnlich.
-
Die
Tabellen-ID (P1A) ist, eine Information, die eine Tabelle kennzeichnet,
welche die betreffende Seite enthält. Die DB-Adresse P1B ist
eine Informati on, die eine Tabelle kennzeichnet und eine Adresse
der Datenbank, zu der die gegenwärtigen Daten
in der betreffenden Seite gehören.
Ein Beispiel der Verwendung der DB-Adresse P1B ist das, wenn der
Pufferverwaltungsbereich 25 die betreffende Seite in den
Originalzustand zurückschreibt,
wird ein Schreibauftrag zum Speicherdatenbereich ausgegeben, der
durch Umwandlung der DB-Adresse P1B unter Verwendung der DB-Adress-Blockadress-Umwandlungstabelle 27 spezifiziert
ist.
-
Die
LastLSN (P1C) und die LastTSN (P1D) sind Identifikationsinformationen
jeweils für
das Protokoll und die Transaktion. Die enthaltene Information in
diesen Bereichen ist fast äquivalent.
Diese Bereiche speichern Identifikationsinformation für das Protokoll
oder die Transaktion, welche die zugehörige Seite in der vorhergehenden
Stufe verwendet hat. Das Benutzt-Zeichen P1E ist ein Flag (Zeichen)
welches kennzeichnet, ob die Seite benutzt ist oder nicht, das heißt ob die
Inhalte verändert
worden sind, nachdem die Inhalte in den Speicher 34 eingelesen worden
sind. Wenn ein Benutzt-Zeichen P1E auf ON steht, wurden die Inhalte
der betreffenden Seite verändert.
Daher müssen
die Inhalte in den Block geschrieben werden, wenn diese Seite vom
Puffer entfernt werden sollen.
-
Jede
Aufzeichnung (Record) P1F entspricht einer Aufzeichnung der Datenbank.
Eine Mehrzahl von Aufzeichnungen ist beispielsweise in der Seite P1
enthalten. Jedoch kann eine einzelne Aufzeichnung alleine in der
Seite P1 enthalten sein. Wie in 3A dargestellt,
enthält
die Aufzeichnung P1F eine Aufzeichnungs-ID (Record ID)(P1G), den
Wert eines Merkmals 1 (Attribute 1)(P1H), den Wert eines Merkmals
2 (Attribute 2) (P1J) und dergleichen. Zwei Merkmale sind in diesem
Beispiel gezeigt. Jedoch kann eine größere Anzahl von Merkmalen enthalten sein.
Die erwähnten
Merkmale bezeichnen die Merkmale in einer Tabelle der Datenbank.
Beipielsweise im Falle einer Tabelle, die Produktnamen und deren Preise
enthält,
entsprechen die Merkmale dem „Produktnamen" und dem „Preis". Ein Wert des Merkmals 1
(P1H) und ein Wert des Merkmals 2 (P1J) sind Daten eines spezifischen
Produktnamens und eines spezifischen Preises.
-
Als
nächstes
wird nachfolgend der Aufbau der Protokolle L1 und L2 beschrieben.
Wie in 3B gezeigt, enthält das Protokoll
L1 eine LastLSN (L1A) eine LastTSN (L1B), eine Tabellen-ID (L1C),
eine Aufzeichnungs-ID (L1D), ein COMMIT-Flag L1E, ein Abbruch-Flag
(Abort Flag) L1F, Daten L1G vor der Änderung und Daten L1H nach
der Änderung.
Das Protokoll L2 ist ähnlich.
-
Die
LastLSN (L1A) und die Last TSN (L1B) sind ähnlich zur LastLSN (P1C) und
der LastTSN (P1D), die in 3B gezeigt
sind. Die Tabellen-ID (L1C) enthält
Kennzeichnungsinformationen für
eine Tabelle in der Datenbank, die ein Objekt einer im Protokoll
aufgezeichneten Anweisung ist. Die Aufzeichnungs-ID (L1D) enthält Kennzeichnungsinformationen
für eine
Aufzeichnung, die als Erneuerungsobjekt im Protokoll zugewiesen
ist. Obwohl in 3B nicht beschrieben, kann das
Protokoll L1 Information enthalten, die eine DB-Adresse anzeigt,
wo eine Aufzeichnung eines Aktualisierungsobjekts vorhanden ist.
-
Das
COMMIT-Flag L1E ist ein Flag, welches anzeigt, ob eine im Protokoll
aufgezeichnete Anweisung ein COMMIT ist, oder nicht. Das Abort-Flag
L1F ist ein Flag, welches anzeigt, ob eine im Protokoll aufgezeichnete
Anweisung ein ABORT (Abbruch) ist, oder nicht.
-
Die
Daten L1G vor der Veränderung
und die Daten L1E nach der Veränderung
sind jeweils Daten, die Inhalte einer Aufzeichnung vor beziehungsweise nach
der Durchführung
einer Änderung
enthalten, entsprechend einer in dem betreffenden Protokoll aufgezeichneten
Anweisung.
-
4 ist
ein Diagramm, welches ein Beispiel des Aufbaus einer DB-Adress-Blockadress-Umwandlungstabelle
zeigt. Die in 4 dargestellte Tabelle ist ein
Beispiel einer DB-Adress-Blockadress-Umwandlungstabelle 27 von 2.
Gerade diese Tabelle 27 hat einen solchen Aufbau, dass
eine Blockadressausgabe 272 als Ergebnis einer Umwandlung
für eine
DB-Adresseingabe 271 erhalten wird.
-
Jede
DB-Adresseingabe 271 umfasst Information auf der Tabellen-ID
und der Tabellenadresse einer Tabelle in der Datenbank. Jede Blockadressausgabe 272 enthält die Vorrichtungs-ID
einer Speichervorrichtung, die Volumen-ID einer Speicherplattenvorrichtung
oder einer logischen Disk und eine Blockadresse, die einen Speicherdatenbereich
in der Vorrichtungs-ID und in der Volumen-ID anzeigt. In 4 ist
die Umwandlungsinformation für
vier Eingänge
dargestellt.
-
In
der DB-Adress-Blockadress-Umwandlungstabelle 27 kann eine
einzelne Tabelle der Datenbank als Mehrzahl von separaten Eingängen beschrieben
werden. In 4 entsprechen eine DB-Adresseingabe 271A und
eine DB-Adresseingabe 271B einer einzelnen Tabelle TBL1
der Datenbank. In diesem Beispiel wir die Tabellen-ID (Table ID)
der DB-Adresseingabe 271A als „TBL1 (A)" beschrieben, während die Tabellen-ID der DB-Adresseingabe 271B als „TBL1 (B)" beschrieben ist,
sodass diese zwei unterschieden sind. Es genügt jedoch die Beschreibung „TBL1" im Prinzip. Demzufolge
kann die gleiche Tabellen-ID auf der Basis eines Unterschieds in
der Tabellenadresse identifiziert werden. In 4 entspricht
die DB-Adresseingabe 271A einer Vorrichtungs-ID 1 (Device
ID 1) und einer Volumen-ID 1 (Volume ID 1) in einer zugehörigen Blockadressausgabe
(Block Address) 272A. Dagegen entspricht die DB-Adresseingabe 271B einer
Vorrichtungs-ID 2 und einer Volumen-ID 2 in einer zugehörigen Blockadressausgabe 272B.
Somit entspricht eine einzelne Tabelle nicht Notwendigerweise einer einzelnen
Speicherplattenvorrichtung oder logischen Disk.
-
Eine
DB-Adresseingabe 271C für
eine Tabelle TBL2 entspricht einer zugeordneten Blockadressausgabe 272C.
In diesem Fall von 4 entspricht eine einzelne Tabelle
einer einzelnen Speicherplattenvorrichtung oder logischen Disk.
Eine DB-Adresseingabe 271D für LOG, welches ein Protokoll
ist, das Tabellenbearbeitungen betrifft, entspricht einem zugehörigen Blockadressausgang 272D und
einer einzelnen Speicherplattenvorrichtung oder logischen Disk.
-
5 ist
ein Diagramm welches ein Beispiel einer Paarzustandsverwaltungstabelle
zeigt. Dieses Beispiel zeigt die Paarzustandsverwaltungstabelle 48 von 2.
Insgesamt umfasst die Paarzustandsverwaltungstabelle 48 Information
einer Paar-ID, Information einer Kopierquelle, Information eines
Kopierziels und Information eines Paarzustands. Diese Informationsteile
sind ausreichend, um die Fernkopie in den Speichervorrichtungen 3A, 3B, 3C und 3D zu steuern.
Jede der Information der Kopierquelle und der Information des Kopierziels,
wie oben beschrieben, enthalten eine Vorrichtungs-ID, eine Volumen-ID
und die Startadresse und die Endadresse eines Speicherdatenbereichs.
Dies ermöglicht
den Speichervorrichtungen 3A, 3B, 3C und 3D die
Blöcke der
Kopierquelle und das Kopierziel in der Fernkopie zu erkennen.
-
An
einem Eingang 481, in 5 dargestellt, ist
dessen Paar-ID #1. Weiterhin sind eine Vorrichtungs-ID, eine Volumen-ID,
eine Startadresse und eine Endadresse für jede Kopierquelle und Kopierziel angegeben.
Das bedeutet, dass der Paarzustand „Duplex" ist. Dieser „Duplex"-Zustand gibt einen Zustand an, wonach
die Fernkopie von einer Kopierquelle zu einem Kopierziel normal
funktioniert, sodass die Tabelle dupliziert ist und wenn ein Fehler
in der Ko pierquelle auftritt, kann das System umgeschaltet werden
(Fehlerüberwindung)
auf das Kopierziel. Paarzustände,
anders als der Duplex-Zustand, schließen beispielsweise ein, Simplex,
Suspend und Duplex-Pending.
-
Der
Simplex-Zustand kennzeichnet einen Betriebszustand ähnlich dem
eines gewöhnlichen einzelnen
Speichers, wo keine Paarbildung für die Fernkopie durchgeführt wird.
Die Bestimmung dieser Paarzustände
wird später
beschrieben.
-
Suspend
zeigt einen Zustand an, bei dem einmal ein Fernkopiepaar gebildet
worden ist, aber die Fernkopie gestopt worden ist, nachdem diese
aus einem bestimmten Grund zurückgeführt wurde. Wenn
eine Schreiboperation in eine Kopierquelle der Speichervorrichtung 3A (s. 1)
in einem Suspend-Zustand durchgeführt wurde, zeichnet die Speichervorrichtung 3A als
Kopierquelle in die Unterschieds-Bitmap die Position des nach dem Übergang in
den Suspend-Status
ausgeführten
Aufschrieb als einen Bereich auf, wo die Dateninhalte variiert werden
konnten, nach dem Übergang
in den Suspend-Zustand. Das bedeutet, dass ein Bit in der Unterschieds-Bitmap
entsprechend zu dem Speicherdatenbereich auftritt, welcher die Inhalte
enthält,
in denen der Schreibvorgang durchgeführt worden ist.
-
Der
Duplex-Pending-Zustand zeigt einen Zustand an, bei dem die Kopie
gestartet wurde, um ein Fernkopiepaar zu bilden, sodass ein Synchronisationsvorgang
abläuft,
das bedeutet, ein Zustand, bei dem die Kopie zur Ausbildung eines
Paars in Bearbeitung ist und daher das Umschalten auf das Kopierziel
(Fehlerüberwindung)
nicht durchgeführt
werden kann. Wenn eine Paarerzeugung für einen Speicherdatenbereich
in einem Simplex-Zustand erhalten wird, oder alternativ ein Pairresync
für einen
Speicherdatenbereich in einem Suspend-Zustand erhalten wird, gehen
diese Zustände
in einen Duplex-Pending-Zustand über.
Wenn das Kopieren zur Bildung eines Paars vollständig abgeschlossen ist, geht
der Duplex-Pending-Zustand in einen Duplex-Zustand über.
-
Betrieb des Fernkopiersystems
-
Als
nächstes
wird der Betrieb des Fernkopiersystems 1 nachfolgend beschrieben.
Im Fernkopiersystem 1 gibt der Host 2A eine Paarbetriebsanweisung
sowie eine Paarbildungsanweisung aus. Dann arbeitet die Speichervorrichtung 3A entsprechend
der empfangenen Anweisung. Der entsprechend durchgeführte Betrieb
zu jeder Anweisung wird nachfolgend im Einzelnen beschrieben.
-
6 ist
ein Diagramm, welches die Verarbeitung einer UPDATE-Anweisung in
der Datenbank zeigt.
-
Zuerst
empfängt
der DB-Server 21 eine UPDATE-Anweisung (eine UPDATE-Instruktion in SQL) (S11).
Dann bestimmt der DB-Server 21, ob irgendeine notwendige
Aufzeichnung in dem Tabellenpuffer 29 (s. 2)
vorliegt, oder nicht (S12). Als Ergebnis der Bestimmung, wenn keine
notwendige Aufzeichnung vorliegt („Nein" bei S12), liest der Pufferverarbeitungsbereich 25 in
dem DB-Server 21 eine
Aufzeichnung als Antwort auf die Anweisung von dem SQL-Ausführungsbereich 23 (S13).
Dann geht der Vorgang zu Schritt S14. Im Gegensatz zu S12, geht der
Vorgang, wenn eine notwendige Aufzeichnung vorliegt („Ja” bei S12)
direkt zum Schritt S14 über.
-
Bei
Schritt S14 aktualisiert der SQL-Ausführungsbereich 23 die
LastLSN und die LastTSN und setzt das Benutzt-Flag P1E (s. 3A)
(S14).
-
Dann
setzt der SQL-Ausführungsbereich 23 das
Aktualisierungs-Flag der Tabelle des Aktualisierungsobjekts (S15).
Dabei wird ein Aktualisierungs-Flag für jede Tabelle vorgesehen.
Dann erzeugt der SQL-Ausführungsbereich 23 ein
Protokoll der Aktualisierung der Aufzeichung (S16) und gibt ein OK
zurück
für die
UPDATE-Anweisung (S17). Dann ist das Verfahren abgeschlossen.
-
Zu 6 wurde
eine UPDATE-Anweisung unter den SQL-Anweisungen als Beispiel beschrieben.
Jedoch wird fast das gleiche Verfahren gleichermaßen für eine Anweisung,
wie eine INSERT-Anweisung durchgeführt, die das Schreiben einer
Aufzeichnung verlangt. Wenn eine Anweisung, die das Schreiben einer
Aufzeichnung nicht erfordert, durchgeführt wird, ist Schritt S15 unnötig. Jedoch
wird fast der gleiche Vorgang bezüglich den anderen Punkten durchgeführt. Der
Fall einer COMMIT-Ausführung und
eine ABORT-Ausführung
werden später
beschrieben.
-
7 ist
ein Diagramm, welches den Verfahrensablauf für eine COMMIT-Anweisung in der
Datenbank zeigt. Dieser Verfahrenablauf wird nachfolgend zu dem
Verfahrensablauf von 6 oder drgl. in vielen Fällen durchgeführt.
-
Zuerst
empfängt
der DB-Server 21 eine COMMIT-Anweisung (eine Anweisung
in SQL zur Realisierung einer Aktualisierung und dergleichen) (S21).
Dann erzeugt der DB-Server 21 ein Protokoll der COMMIT-Anweisung
(S22). Dann schreibt als Antwort auf eine Anweisung von dem SQL-Ausführungsbereich 23 der
Protokollverwaltungsbereich 24 die Daten des Protokollpuffers 28 in
den Datenspeicherbereich wo das Protokoll gespeichert ist (S23)
Wenn das Protokoll der COMMIT-Anweisung in den Protokollspeicherdatenbereich
geschrieben worden ist, gibt der SQL-Ausführungsbereich 23 ein
OK für
die COMMIT-Anweisung zurück
an den Pufferverwaltungsbereich 25 (S24).
-
Dann
schreibt der Pufferverwaltungsbereich 25 zu einem Zeitraum,
der unabhängig
von einem solchen Verarbeitungsvorgang ist, die aktualisierte Seite
auf dem Tabellenpuffer 29 in den Speicherdatenbereich,
wo die Tabelle gespeichert wird (S25). Dann ist das Verfahren abgeschlossen.
-
8 ist
ein Diagramm, welches den Ablauf für eine Paarbildungsanweisung
zeigt. Die Paarbildungsanweisung ist ähnlich zu der oben beschriebenen
Paarerzeugungs-Anweisung (Paircreate-Statement).
-
Zuerst
definiert der DB-Server 21 die Verbindung zur Speichervorrichtung 3A (S31).
Dies definiert ein Paar zur Ausführung
einer Fernkopie und definiert bei dem Host 2A, welcher
Host und welche Speichervorrichtung das Computersystem bilden, um eine
Kopierquellendatenbank zu verwalten, und welcher Host und welche
Speichervorrichtung ein Computersystem zur Verwaltung einer Kopierzieldatenbank
bilden. Beispielsweise ist in der in 1 gezeigten
Konfiguration ein Paar so definiert, dass der Host 2A und
die Speichervorrichtungen 3A und 3B eine Kopierquelle
bilden und der Host 2B und die Speichervorrichtungen 3C und 3D ein
Kopierziel bilden.
-
Dann
empfängt
der DB-Server 21 eine Paarbildungsanweisung für die Tabelle
von einem Auftraggeber (S32). Der hier erwähnte Auftraggeber bezeichnet
einen Computer, der die Ausführung
einer SQL-Anweisung an den DB-Server 21 anfordert. Somit
kann der Auftraggeber ein Host 2A oder 2B selbst sein,
oder alternativ dazu ein anderer Computer über ein Netzwerk, der zu dem
DB-Server 21 zugreift.
-
Dann
bestimmt der SQL-Ausführungsbereich 23,
ob der Protokollspeicherdatenbereich (ein Speicherdatenbereich in
der Speichervorrichtung, in welcher das Protokoll gespeichert ist)
eine Fernkopie durchläuft,
oder nicht (S33). Dies kann geprüft
werden, wenn eine Paarzustandsreferenzanweisung (Pairdisplay = Paaranzeige)
in Bezug auf den Protokollspeicherdatenbereich ausgeführt wird.
-
Als
Bestimmungsergebnis geht der Ablauf direkt zum Schritt S36, wenn
der Protokollspeicherdatenbereich eine Fernkopie durchläuft („Ja” bei S33).
Wenn dagegen der Protokollspeicherdatenbereich keiner Fernkopie
unterzogen wird („Nein" bei S33), weist
der Host 2A die Speichervorrichtung 3A an, eine
Paarbildung des Protokollspeicherdatenbereichs (S34) durchzuführen. Dann
startet die Speichervorrichtung 3A eine Paarbildungskopie
des Protokollspeicherdatenbereichs und fügt dann den Protokollspeicherdatenbereich
der Paarzustandsverwaltungstabelle 48 (S35) zu. Danach
geht der Ablauf zu Schritt S36 über.
-
Bei
Schritt S36 erhält
der Host 2A den Speicherdatenbereich (nachfolgend: ein
Tabellenspeicherdatenbereich) in der Speichervorrichtung, die von
der Tabelle benutzt wird, entsprechend der DB-Adress-Blockadress-Umwandlungstabelle 27 und
instruiert die Speichervorrichtung 3A eine Paarbildung
durchzuführen
(S36). Dann startet die Speichervorrichtung 3A eine Paarbildungskopie
des Tabellenspeicherdatenbereichs und fügt dann den Tabellenspeicherdatenbereich
der Paarzustandsverwaltungstabelle 48 (S37) hinzu. Dann
ist der Vorgang abgeschlossen. Zu dem Zeitpunkt, bei dem der Vorgang
dieser Paarbildung abgeschlossen ist, befindet sich der Paarzustand
in einem Duplex-Pending-Zustand (Duplex ist anhängig). Weiterhin wird die gesamte
notwendige Information in der Paarzustandsverwaltungstabelle bei
Schritt S35 bis Schritt S37 vorgesehen. Jedoch kann die Information
bei der Ausführung
von Schritt S31 bereitgestellt werden.
-
9 ist
ein Diagramm, welches die Bearbeitung der Paarresynchronisationsanweisung
zeigt. Die Paarresynchronisationsanweisung ist die gleiche wie die
oben beschriebenen Pairresync-Anweisung.
-
Bei
dieser Bearbeitung empfängt
der DB-Server 21 zuerst eine Paarresynchronisationsanweisung
für die
Tabelle von dem Auftraggeber (S41). Dann bestimmt der DB-Server 21,
ob der Protokollspeicherdatenbereich eine Fernkopie ausführt, oder nicht
(S42). Als Bestimmungsergebnis geht die Bearbeitung direkt zum Schritt
S45 über,
wenn der Protokollspeicherdatenbereich eine Fernkopie durchläuft („Ja” bei S42).
Dagegen instruiert der DB-Server 21 die Speichervorrichtung 3A eine
Paarresynchronisation des Protokollspeicherdatenbereichs durchzuführen, wenn
der Protokollspeicherdatenbereich keine Fernkopie durch läuft („Nein" bei S42) (S43).
Dann wird eine Differenzkopie gestartet, die die Unterschieds-Bitmap
des Protokollspeicherdatenbereichs verwendet (S44).
-
Danach
geht die Bearbeitung bei Schritt S45 weiter. Die Unterschieds-Bitmap,
die hier verwendet wird, ist eine Unterschieds-Bitmap, welche durch Ausführung einer
logischen Summenbildung (OR) auf der Unterschieds-Bitmap erhalten
wird, aufgezeichnet in der Kopierquellenspeichervorrichtung 3A und
der Unterschieds-Bitmap aufgezeichnet in der Kopierzielspeichervorrichtung 3C,
und wobei dann das Ergebnis gemischt wird.
-
Bei
Schritt S45 wird der Speicherdatenbereich, der von der Tabelle verwendet
wird, von der DB-Adress-Blockadress-Umwandlungstabelle 27 erhalten
und dann die Speichervorrichtung 3A instruiert, eine Paarresynchronisationsanweisung
auszuführen.
Dann wird eine Differenzkopie des Tabellenspeicherdatenbereichs
gestartet, der die Unterschieds-Bitmap verwendet. Dann ist die Bearbeitung abgeschlossen.
-
10 ist
ein Diagramm, welches die Verarbeitung für eine Paarzustandsreferenzanweisung
für die
Tabelle zeigt. Die Paarzustandsreferenzanweisung ist ähnlich zur
Paardisplay-Anweisung, die oben beschrieben wurde. Die Anweisung
wird beispielsweise bei der Überwachung
verwendet, ob die Fernkopie normal durchgeführt worden ist, oder bei der
Bestimmung, ob das Kopierziel ein Duplex-Zustand als Ergebnis der
erstellten Kopie oder der Differenzkopie ist.
-
Zuerst
empfängt
der DB-Server 21 eine Paarzustandsreferenzanweisung entsprechend
der Tabelle (S51). Dann prüft
die Speichervorrichtung 3A den Paarzustand des Protokollspeicherdatenbereichs
und des Tabellenspeicherdatenbereichs (S52). Bei diesem Schritt
kann die Information der DB-Adress-Blockadress-Umwandlungstabelle 27 zum
Erreichen des Protokollspeicherdatenbereichs und des Tabellenspeicherdatenbereichs
verwendet werden. Es kann jedoch auch ein anderes Verfahren verwendet
werden. Ein Beispiel für
ein Verfahren besteht darin, dass eine Kennung zum DB-Server 21 als
Reaktion auf die Paarbildungsanweisung für die Speichervorrichtung returniert
wird und dass der DB-Server diese Kennung speichert und die Kennung
in den nachfolgenden Paarbearbeitungen für den Speicherdatenbereich
spezifiziert. Dann wird bestimmt, ob alle Speicherdatenbereiche
in der Tabelle im Duplex-Zustand (gepaarter Zustand) sind, oder nicht
(S53). Als Ergebnis, wenn alle im Duplex-Zustand sind („Ja” bei S53),
wird ein Duplex-Zustand zurückgegeben
(S57). Dann ist das Verfahren abgeschlossen. Wenn nicht alle Speicherdatenbereiche im
Duplex-Zustand sind
(„Nein" bei S53), geht die
Bearbeitung mit Schritt S54 weiter.
-
Bei
Schritt S54 wird bestimmt, ob irgendein Speicherdatenbereich unter
den gesamten Speicherdatenbereichen in der Tabelle sich im Simplex-Zustand
(ungepaarter Zustand) befindet, oder nicht. Als Ergebnis dieser
Bestimmung wir der Simplex-Zustand wieder hergestellt (S58), wenn
irgendein Speicherdatenbereich sich im Simplex-Zustand („Ja” bei S54)
befindet. Dann ist die Verarbeitung abgeschlossen. Befindet sich
kein Speicherdatenbereich in einem Simplex-Zustand („Nein" bei S54), geht das Verfahren zum Schritt
S55.
-
Bei
Schritt S55 wird bestimmt, ob irgendein Speicherdatenbereich unter
den gesamten Speicherdatenbereichen in der Tabelle sich im Suspend-Zustand
befindet, oder nicht. Als Ergebnis erfolgt ein Zurückführen in
den Suspend-Zustand (S59), wenn irgendein Speicherdatenbereich sich
im Suspend-Zustand („Ja” bei S55)
befindet. Dann ist die Verarbeitung abgeschlossen. Wenn sich kein
Speicherdatenbereich in einem Suspend-Zustand („Nein" bei S55) befindet, erfolgt eine Rückkehr in
den Duplex-Pending-Zustand (Paarbildungswartezustand) (S56). Damit
ist die Verarbeitung abgeschlossen.
-
11 ist
ein Diagramm, welches die Verarbeitung für eine COMMIT-Anweisung in
einem Fall zeigt, in welchem ein Tabellenschreibschutz gesetzt ist.
Diese Verarbeitung wird gewöhnlich
nach einer Schreibanweisung für
den Tabellenpuffer 29 durchgeführt. Dieser Verarbeitung wird
beispielsweise gerade in einem Zustand durchgeführt, dem die Verarbeitung einer
UPDATE-Anweisung vorausgegangen ist, die in 6 beschrieben
wurde.
-
Bei
dieser Verarbeitung empfängt
der DB-Server 21 zuerst eine COMMIT-Anweisung (S61). Dann wird geprüft, ob die
Tabelle des Schreibobjekts oder des Aktualisierungsobjekts ein schreibgeschütztes Objekt
ist, oder nicht (S62).
-
Ist
der Schreibschutz nicht gesetzt („Nein" bei S62) geht die Verarbeitung direkt
zum Schritt S65. Ist der Schreibschutz gesetzt („Ja” bei S62), wird der Paarzustand
von dem Protokoll und den Tabellenspeicherdatenbereichen aus der
Speichervorrichtung 3A entnommen (S63). Dann wird geprüft, ob irgendein
Speicherdatenbereich sich im Suspend-Zustand befindet, oder nicht
(S64). Als Ergebnis, wenn sich irgendein Speicherdatenbereich im Suspend-Zustand
(„Ja” bei S64)
befindet, wird ein Verarbeitungsabbruch durchgeführt (S69). Damit ist der Vorgang
abgeschlossen. Details des Verarbeitungsabbruchs bei Schritt S69
werden später
beschrieben. Befindet sich kein Speicherdatenbereich in ei nem Suspend-Zustand
(„Nein" bei S64), geht die Verarbeitung
zum Schritt S65 über.
-
Bei
Schritt S65 wird ein Protokoll der COMMIT-Anweisung im Protokollpuffer 28 erzeugt.
Dann wird der Protokollpuffer 28 ausgeschrieben (S66). Das
bedeutet, dass die wiederbeschriebenen Inhalte des Protokollpuffers 28 bei
Schritt S65 in der Speichervorrichtung 3A aufgezeichnet
werden.
-
Danach
wird aus der Speichervorrichtung 3A der Paarzustand des
Protokollspeicherdatenbereichs gewonnen (S67). Dann wird geprüft, ob der
Protokollspeicherdatenbereich sich in einem Suspend-Zustand befindet,
oder nicht (S68). Im Falle des Suspend-Zustands („Ja” bei S68)
wird ein Verarbeitungsabbruch durchgeführt (S69). Damit ist der Vorgang abgeschlossen.
In einem. Falle, der anders ist als der Suspend-Zustand („Nein” bei S68),
wird die Verarbeitung unmittelbar abgeschlossen. Wenn „Nein" bei S62 erhalten
wird, wählt
S68 immer „Nein" aus.
-
12 ist
ein Diagramm, welches den Verarbeitungsabbruch in einem Steuerungsprozess
einer Fernkopie zeigt. Der Prozess ist eine detaillierte Verarbeitung
des Schritts S69, der in 11 gezeigt
ist.
-
Bei
dieser Verarbeitung wird zuerst geprüft, ob ein Protokoll einer
COMMIT-Anweisung
im Protokollpuffer 28 vorliegt, oder nicht (S71). Wenn
ein Protokoll einer COMMIT-Anweisung vorliegt („Ja” bei S71), wird das Protokoll
der COMMIT-Anweisung in ein Protokoll einer Abbruch-Anweisung wieder
eingeschrieben (S72). Dann geht die Verarbeitung zum Schritt S73 über. Wenn
kein Protokoll einer COMMIT-Anweisung vorliegt („Nein" bei S71), wird ein Protokoll einer
Abbruch-Anweisung erzeugt (S76). Dann geht die Verarbeitung zum
Schritt S73 über.
-
Beim
Schritt S73 kehrt der Tabellenpuffer 29 zurück in den
Ursprungszustands, entsprechend den Inhalten (wie den Daten L1G
vor der Aktualisierung in 3B), die
im Protokoll aufgezeichnet sind. Dann wird der Protokollpuffer 28 ausgeschrieben
zu der Speichervorrichtung 3A (S74). Dann wird ein NG (Kennzeichnung,
dass das COMMIT nicht normal verarbeitet worden ist) für die COMMIT-Anweisung wiedergegeben
wird. Damit ist der Vorgang abgeschlossen.
-
13 ist
ein Diagramm, welches die Verarbeitung für eine Paaraussetzanweisung
(Pair Suspend Instruction) zeigt. Die Paaraussetzanweisung ist die
Gleiche, wie die Paarsuspend-Anweisung, welche oben beschrieben
wurde.
-
Bei
dieser Verarbeitung empfängt
der DB-Server 21 zuerst eine Paaraussetzanweisung für die Tabelle
(S81). Dann wird der von der Tabelle verwendete Speicherdatenbereich
von der DB-Adress-Blockadress-Umwandlungstabelle 27 angefordert
und dann die Speichervorrichtung 3A angewiesen, eine Paaraussetzung
(Pairsuspend) durchzuführen
(S82). Als Reaktion auf diese Anweisung stopt die Kopierquellenspeichervorrichtung 3A (s. 1)
die Kopie des instruierten Speicherdatenbereichs (S83).
-
Dann
führt die
Kopierzielspeichervorrichtung 3C (s. 1)
unter Verwendung des Protokolls, welches die von dem Protokollspeicherdatenbereich
erhaltene Tabelle betrifft, einen Wiederherstellungsvorgang zur
Aufzeichnung im Aktualisierungsvorgang durch (S84). Der erwähnte Wiederherstellungsvorgang
ist ähnlich
zu dem Abbruchvorgang in der Datenbank, der in 12 beschrieben
ist, und kennzeichnet am derartigen Vorgang, dass die aufgezeichneten
Inhalte einer Transaktion, wo eine COMMIT-Anweisung nicht ausgeführt worden
ist, in den Originalzustand zurückgeführt werden,
sodass die Daten in dem Aktualisierungsvorgang nicht verbleiben
sollen. Dies bedeutet, dass in diesem Vorgang die Ausführung eines
Anweisungssatzes nacheinander unter Verwendung der Daten (entsprechend
L1G von 3B) vor der Aktualisierung im
Protokollspeicherdatenbereich gespeichert worden sind, zurückverfolgt
werden, sodass die Inhalte in den Zustand zurückkehren (zurückgesetzt
werden), der sogleich nach der Ausführung der letzten durchgeführten COMMIT-Ausführung erzeugt
worden ist.
-
Bei
dem Rücksetzvorgang
in der Kopierzielspeichervorrichtung 3C wird ein Schreibprozess durchgeführt, der
die Daten vor der Aktualisierung verwendet, um die aufgezeichneten
Inhalte wiederherzustellen. Damit ändern sich die Daten der Kopierzielspeichervorrichtung 3C im
Verarbeitungsablauf in einigen Fällen.
Damit wird auch in der Kopierzielspeichervorrichtung 3C, ähnlich wie
im Fall der Kopierquellenspeichervorrichtung 3A, die Schreibposition
nach einem Suspend-Zustand (Aussetzzustand) in der Unterschieds-Bitmap
aufgezeichnet. Weiterhin wird auch die Schreibposition im durchgeführten Schreibprozess
beim Rücksetzvorgang
auch in der Unterschieds-Bitmap aufgezeichnet.
-
Weiterhin
wird im vorliegenden Ausführungsbeispiel
angenommen, dass der Wiederherstellungsvorgang durch den Kopierziel-Host 2B (s. 1) durchgeführt wird.
Jedoch können
die Kopierzielspeichervorrichtungen 3C und 3D die
Funktion haben, die Datenbank so zu bedienen, dass ein Wiederherstellungsvorgang
durchgeführt
wird.
-
Dann
prüft der
DB-Server 21, ob irgendeine andere Tabelle im Rahmen einer
Fernkopie zurückbleibt,
oder nicht (S85). Wenn keine derartige Tabelle vorliegt („Nein" bei S85) wird auch
im Protokollspeicherdatenbereich ein Paaraussetzvorgang durchgeführt (S86).
Damit ist der Vorgang abgeschlossen. Wenn eine solche Tabelle zurückbleibt
(„Ja” bei S85) liefert
der DB-Server 21 keine Aussetzanweisung und der Vorgang
wird in einem Zustand abgeschlossen, in dem die Fernkopie des Protokollspeicherdatenbereichs
durch die Speichervorrichtungen 3A und 3C fortgeführt wird.
-
14 ist
ein Diagramm, welches einen Vorgang zeigt, der im Falle eines Fehlerstops
der Fernkopie durchgeführt
wird.
-
Bei
diesem Vorgang wird zuerst geprüft,
ob sich irgendein Speicherdatenbereich unter denen, die die Tabelle
bilden, sich in einem Fehlerstop befinden, oder nicht (S91). Wenn
kein derartiger Speicherdatenbereich vorliegt („Nein" bei S91), wird der Vorgang direkt abgeschlossen.
Wenn sich irgendein Speicherdatenbereich in einem Fehlerstop („Ja” bei S91)
befindet, wird eine Paaraussetzanweisung durchgeführt für alle die
Speicherdatenbereiche, die die Tabelle bilden (S92). Dann führt die
Kopierzielspeichervorrichtung 3C einen Wiederherstellungsvorgang
unter Verwendung des Protokolls im Protokollspeicherdatenbereich
durch (S93). Damit ist der Vorgang abgeschlossen. Der Wiederherstellungsvorgang,
wie er hier durchgeführt
wird, ist ähnlich
dem oben beschriebenen.
-
Somit
definiert der Host-Computer 2A gemäß dem ersten Ausführungsbeispiel
eine Paarbildung zwischen der ersten Speichervorrichtung 3A, die
als Kopierquelle dient und der zweiten Speichervorrichtung 3C,
die als Kopierziel dient, entsprechend einer vorher bereitgestellten
Anweisung, dann erzeugt er eine Umwandlungstabelle 27 zur
Durchführung
einer Adressumwandlung von einer Tabelle und einem Protokoll der
Datenbank, die als Definitionsobjekt des gebildeten Paars zu einem
Speicherdatenbereich dient, entsprechend der Tabelle und dem Protokoll
in der ersten Speichervorrichtung 3A, und weist dann die erste
Speichervorrichtung 3A an, eine definierte Paarbildung
durchzuführen,
unter Verwendung der erzeugten Umwandlungstabelle 27. Auf diese
Instruktion vom Host-Computer 2A erzeugt die erste Speichervorrichtung 3A in
der Paarzustandsverwaltungstabelle 48 das Paarverhältnis zwischen der
Kopierquelle und dem Kopierziel.
-
Entsprechend
dieser Konfiguration wird als Antwort auf die Instruktion vom Host 2A eine
Paarbildung zwischen der Kopierquellenspeichervorrichtung 3A und
der Kopierzielspeichervorrichtung 3C ausgeführt, sodass
das Fernkopieren möglich
wird.
-
Entsprechend
dem ersten Ausführungsbeispiel
aktualisiert die erste Speichervorrichtung 3A abhängig von
dem Paarbildungszustand der Tabelle und des Protokolls die Paarzustandsverwaltungstabelle 48 und
führt eine
Datenfernkopie der Kopierquelle in die zweite Speichervorrichtung 3C durch, die
als Kopierziel dient.
-
Diese
Konfiguration erlaubt die Ausführung einer
Fernkopie zwischen der Kopierquellenspeichervorrichtung 3A und
der Kopierzielspeichervorrichtung 3C.
-
Gemäß dem ersten
Ausführungsbeispiel ordnet
der Host 2A und die erste Speichervorrichtung 3A erneut
einen Speicherdatenbereich korrespondierend zur Tabelle zu, wenn
der Datenumfang der Tabelle anwächst,
und definiert dann in der Paarzustandsverwaltungstabelle 48 eine
Paarbildung eines erneut zugeordneten Datenbereichs und führt dann eine
Datenfernkopie des Kopierobjekts in die zweite Speichervorrichtung 3C durch,
die als Kopierziel dient.
-
Diese
Konfiguration erlaubt dem Fernkopiersystem 1, einen Umfangszuwachs
in der Tabelle der Datenbank automatisch zu bearbeiten.
-
Gemäß dem ersten
Ausführungsbeispiel setzt
die zweite Speichervorrichtung 3C ein Bit in die Unterschieds-Bitmap,
welches einen Unterschied zwischen Daten der betreffenden zweiten
Speichervorrichtung 3C und der ersten Speichervorrichtung 3A bezüglich zugehöriger, wiederhergestellter
Daten kennzeichnet, in einem Fall, bei dem die Fernkopie einer Tabelle,
die als Host-Computer 2A gekennzeichnet ist, ausgesetzt
wird und die veränderten
Daten durch eine unvollständige
Transaktion wiederhergestellt wurden, unter Verwendung der Protokollinformation
der zugehörigen
Tabelle.
-
Diese
Konfiguration ermöglicht,
dass das Fernkopieren in einen wiederaufnehmbaren Zustand ausgesetzt
wird.
-
Entsprechend
dem ersten Ausführungsbeispiel,
welches die gebildete Unterschieds-Bitmap verwendet, realisiert
die erste Speichervorrichtung 3A in der zweiten Speichervorrichtung 3C eine
Datenaktualisierung, die nach dem Aussetzen der Fernkopie durchgeführt wurde,
und nimmt dann das Fernkopieren der gekennzeichneten Tabelle wieder
auf.
-
Entsprechend
dieser Konfiguration wird eine Änderung,
die in der Kopierquelle während
des Aussetzens durchgeführt
wurde, im Kopierziel realisiert und dann die ausgesetzte Fernkopie
wieder hergestellt.
-
Gemäß dem ersten
Ausführungsbeispiel prüft die erste
Speichervorrichtung 3A außerdem den Paarzustand des
Speicherdatenbereichs, der dem Protokoll und der Tabelle zugeordnet
ist. Dann, wenn der Speicherdatenbereich zu dem Protokoll und der Tabelle
verdoppelt ist, gibt die Vorrichtung diesen Zustand zurück. Wenn
der Speicherdatenbereich entsprechend dem Protokoll und der Tabelle
kein verdoppeltes Objekt ist, gibt die Vorrichtung diesen Zustand
zurück.
Wenn die Verdoppelung des Speicherdatenbereichs entsprechend dem
Protokoll und der Tabelle ausgesetzt ist, gibt die Vorrichtung diesen
Zustand zurück.
Weiterhin, wenn der Speicherdatenbereich entsprechend dem Protokoll
und der Tabelle sich in einer vorbereitenden Stufe zur Durchführung einer
Kopie zur Verdoppelung befindet, gibt die Vorrichtung diesen Zustand
zurück.
-
Diese
Konfiguration ermöglicht
den Zustand der Fernkopie zu bestimmen, wenn dies notwendig ist.
-
Diese
Konfiguration erlaubt einen Fernkopierbetrieb zur Bearbeitung der
Daten, die in einer speziellen Anwendung behandelt werden, was beim Stand
der Technik nicht einfach war. Speziell, wenn Fernkopieren einer
Datenbank tabellenweise durchgeführt
wird, ist eine Feineinstellung für
die Verdoppelung möglich.
Außerdem
wird die Einstellung nicht in einer Betriebssystemebene des Computers
vorgenommen, sondern durch Verwendung von Anweisungssätzen, die
der SQL-Sprache des Datenbankverwaltungssystems zugefügt sind.
Dadurch kann sogar ein Datenbankadministrator, der unerfahren ist im
Betrieb eines Computers, das Verdoppeln einrichten und ausführen.
-
Weiterhin
führt die
Speichervorrichtung die Fernkopie aus. Somit ist das Fernkopieren
fast ohne Belastung des Host durchführbar. Entsprechend wird die
Verdoppelung ohne Verringerung der Verarbeitungsgeschwindigkeit
des Host erreicht. Dies ermöglicht
den Aufbau eines stabilen und zuverlässigen Systems.
-
Zweites Ausführungsbeispiel
-
15 ist
ein Diagramm, welches den Gesamtaufbau zeigt, der ein Fernkopiersystem
gemäß einem
zweiten Ausführungsbeispiel
umfasst. Ein Merkmal des zweiten Ausführungsbeispiels, welches von
dem ersten Ausführungsbeispiel
abweicht, ist dass die Hosts 102A und 102B das
Fernkopieren durchführen,
anstelle der Speichervorrichtungen 103A und 103B.
Andererseits schließt
die Gesamtanordnung ein Fernkopiersystem 10 ein, welches
annähernd
das Gleiche ist, wie das des ersten Ausführungsbeispiels. Jedoch ist
im Gegensatz zum ersten Ausführungsbeispiel
der Kopierziel-Host 102B eine unverzichtbare Komponente.
Die Speichervorrichtung 103A im zweiten Ausführungsbeispiel
muss von dem Typ sein, der das Fernkopieren unterstützt.
-
Wie
in 15 gezeigt, umfasst das Fernkopiersystem 10 einen
Kopierquellen-Host 102A,
die Kopierquellenspeichervorrichtung 103A, den Kopierziel-Host 102B und
die Kopierzielspeichervorrichtung 103B. Der Kopierquellen-Host 102A und
der Kopierziel-Host 102B schließen jeweils DB-Server 105A und 105B sowie
Volumenmanager 106A und 106B ein. Die Speichervorrichtungen 103A und 103B enthalten
jeweils Speicherplattenvorrichtungen 104A und 104B.
Die Anzahl der Speicherplattenvorrichtungen, die in den Speichervorrichtungen 103A und 103B enthalten
sind, ist nicht begrenzt und kann beliebig sein.
-
Im
Gegensatz zum ersten Ausführungsbeispiel,
wo die Speichervorrichtungen 3A, 3B, 3C und 3D ein
Fernkopierprogramm und eine Paarzustandsverwaltungstabelle aufbewahren,
sind das Programm und die Tabelle in den Volumenmanagern 106A und 106B der
Hosts 102A und 102B im vorliegenden Ausführungsbeispiel
enthalten. Die weiteren Punkte beim Grundbetrieb und der Konfiguration
sind fast die gleichen, wie die des ersten Ausführungsbeispiels. Daher werden
unter schiedliche Punkte gegenüber
dem ersten Ausführungsbeispiel
in der nachfolgenden Beschreibung herausgestellt.
-
Im
zweiten Ausführungsbeispiel
wird das Fernkopieren erreicht, wenn eine Zugriffsanweisung, ausgegeben
vom Volumenmanager 106A zur Speichervorrichtung 103A,
ausgeführt
wird, und wenn die gleiche Zugriffsanweisung vom Volumenmanager 106A des
Kopierquellen-Host 102A zum Kopierziel-Host 102B übertragen
worden ist.
-
Beispielsweise,
wenn der Kopierquellen-Host 102A eine SCSI-Schreibanweisung
als Zugriffsanweisung zur Speichervorrichtung 103A ausgibt, überträgt der Volumenmanager 106A die
SCSI-Anweisung zur Speichervorrichtung 103A und gleichzeitig
die gleiche Zugriffsanweisung auch zu dem Kopierzielvolumenmanager 106B.
Dann überträgt der Kopierzielvolumenmanager 106B die
empfangene Zugriffsanweisung unverändert zur Speichervorrichtung 103B oder
alternativ eine Anweisung zu der Speichervorrichtung 103B nach
einer Umwandlung der empfangenen Anweisung entsprechend gemäß der Situation
des Speicherdatenbereichs der Kopierzielspeichervorrichtung 103B.
Als Ergebnis wird, wenn keine Umwandlung durchgeführt wird,
eine Verdopplung an der exakt gleichen Adresse in der Kopierquelle
und im Kopierziel durchgeführt.
Weiterhin, wenn eine Umwandlung durchgeführt wurde, wird ebenso eine
Verdopplung durchgeführt,
obwohl die Speicheradresse zwischen der Kopierquelle und dem Kopierziel
unterschiedlich ist.
-
Das
vorliegende Ausführungsbeispiel
wurde für
den Fall beschrieben, bei dem die Volumenmanager 106A und 106E die
Initiative zur Durchführung der
Fernkopie übernehmen.
Jedoch kann auch ein File-System die Initiative übernehmen. In diesem Fall umfasst
das File-System einen Mechanismus zur Durchführung des Fernkopierens, einen
Mechanismus zur Verwaltung eines gekennzeichneten Bereichs (entsprechend
einem Block) im File und den Daten, entsprechend der Paarzustandsverwaltungstabelle.
-
Demgemäß, entsprechend
dem zweiten Ausführungsbeispiel,
wird eine Blockverdoppelung mittels Fernkopie entsprechend der Tabelle
der Datenbank erreicht, sogar wenn Speichervorrichtungen verwendet
werden, die nicht mit einem speziellen Mechanismus versehen sind.
Weiterhin können Hosts,
die aus einem gewöhnlichen
Computer bestehen, verwendet werden, um so ein kostengünstiges Fernkopiersystem
aufzubauen.
-
Die
Ausführungsbeispiele
der Erfindung können
abgewandelt werden, ohne vom Schutzumfang der Erfindung abzuweichen,
wie dieser in den Ansprüchen
gekennzeichnet ist.