Vor dem Ausführen des Setupskripts sollten Sie die folgenden Anforderungen berücksichtigen:
Der gleiche Datenbankbenutzer, der das Setupskript ausführt, wird als Benutzer erwartet, der die MobiLink-Systemtabellen während der Synchronisation aktualisiert. Dieser Benutzer muss verwendet werden, um den MobiLink-Server zu starten und MobiLink-Anwendungen zu konfigurieren. Siehe Erforderliche Berechtigungen.
Der RDBMS-Benutzer, der mithilfe des MobiLink-Servers eine Verbindung mit der konsolidierten Datenbank herstellt, muss in der Lage sein, die MobiLink-Systemtabellen, -Prozeduren usw. ohne Qualifizierer zu verwenden (Beispiel: SELECT * from ml_user).
Der RDBMS-Benutzer benötigt außerdem die SELECT-Berechtigung für GV$TRANSACTION und V$SESSION sowie die EXECUTE-Berechtigung für DBMS_UTILITY. Sie können eine Berechtigung nicht direkt für die Synonyme GV$TRANSACTION und V$SESSION erteilen. Stattdessen müssen Sie die Berechtigung für die zugrunde liegenden dynamischen Performance-Ansichten GV_$TRANSACTION und V_$SESSION erteilen. Dazu müssen Sie eine Verbindung als SYS herstellen. Die Oracle-Syntax zur Erteilung dieser Berechtigung lautet:
grant select on SYS.GV_$TRANSACTION to user-name; |
grant select on SYS.V_$SESSION to user-name; |
grant execute on SYS.DBMS_UTILITY to user-name; |
Um Oracle für die Verwendung als MobiLink-konsolidierte Datenbank einzurichten, müssen Sie eine Einrichtungsprozedur durchführen, die Systemtabellen, gespeicherte Prozeduren, Trigger und Ansichten hinzufügt, die für die MobiLink-Synchronisation erforderlich sind. Es gibt mehrere Möglichkeiten, dies durchzuführen:
Führen Sie das Setupskript syncora.sql aus, das sich im Verzeichnis %SQLANY12%\MobiLink\Setup befindet.
Prüfen und Aktualisieren der MobiLink-Systemeinrichtung von Sybase Central. Siehe MobiLink-Systemkonfiguration.
Für die konsolidierte Oracle-Datenbank muss eine ODBC-DSN eingerichtet werden. Siehe:
MobiLink-Synchronisation und zeitstempelbasierte Downloads mit einem Oracle Real Application Cluster Zeilen in der konsolidierten Datenbank, die auf einem Oracle RAC ausgeführt wird, können ausgelassen werden, wenn die Systemuhren der Knoten des Oracle-Clusters sich um mehr unterscheiden als die Zeit, die zwischen dem Abrufen des vorletzten Download-Zeitstempels durch den MobiLink-Server und dem Abrufen der herunterzuladenden Zeilen verstrichen ist. Dieses Problem ist auf einem RAC-System mit synchronisierten Knotensystemuhren unwahrscheinlich, aber die Wahrscheinlichkeit erhöht sich bei größeren Unterschieden von Systemuhren verschiedener Knoten. Eine Behelfslösung ist die Erstellung eines modify_next_last_download_timestamp- oder modify_last_download_timestamp-Skripts zur Subtrahierung des maximalen Unterschieds der Knotensystemuhren.
Mindestens seit Version 10i empfiehlt Oracle die Verwendung des NTP-Protokolls (Network Time Protocol) für die Synchronisation der Systemuhren auf allen Knoten in einem Cluster. NTP läuft normalerweise standardmäßig unter Unix und Linux. Wenn Cluster-Knoten korrekt für die Verwendung von NTP konfiguriert sind, sollten alle Systemuhren innerhalb von 200 Mikrosekunden bis zu 10 Millisekunden liegen (abhängig von der Nähe des NT-Servers). Seit Windows Server 2003 implementiert der Windows Time Service die NTP Version 3, die standardmäßig ausgeführt wird. Ab Version 11gR2 enthält die Oracle Clusterware den Oracle Cluster Time Synchronization Service (CTSS) zur Überwachung der Synchronisation der Systemuhren oder, wenn weder NTP noch Windows Time Service ausgeführt wird, zur aktiven Aufrechterhaltung der Systemuhr-Synchronisation. CTSS und Windows Time Service sind jedoch weniger präzise als NTP.
Zur Vermeidung von fehlenden Zeilen wird folgendermaßen vorgegangen: Wenn Systemuhren von Oracle RAC-Knoten um bis zu eine Sekunde mehr voneinander abweichen, als die Zeit, die zwischen dem Abrufen des next_last_download_timestamp-Werts und dem Herunterladen der Zeilen liegt, subtrahiert der MobiLink-Server eine Sekunde vom next_last_download_timestamp-Wert, der aus der konsolidierten Datenbank abgerufen wurde, wenn die folgenden Bedingungen erfüllt sind:
Das vom MobiLink-Server verwendete Oracle-Konto hat die Ausführungsberechtigung für SYS.DBMS_UTILITY.
Die konsolidierte Datenbank ist ein Oracle RAC-System.
Für MobiLink-Versionen 12.0.0 und höher ist kein generate_next_last_download_timestamp-Skript vorhanden.
Bei Oracle RAC-Knoten, deren Systemuhren größere Unterschiede aufweisen, können Sie das Problem vermeiden, indem Sie ein generate_next_last_download_timestamp-, modify_next_last_download_timestamp- oder modify_last_download_timestamp-Skript definieren, um den größten Systemuhrunterschied der Knoten zu beheben.
Datentypen zuordnen Die Datentypen von Spalten müssen korrekt zwischen der konsolidierten und der entfernten Datenbank abgestimmt und zugeordnet werden. Siehe Oracle-Datentypzuordnung.
CHAR-Spalten In Oracle haben CHAR-Datentypen eine feste Länge und werden bis zur vollen Länge der Zeichenfolge mit Leerzeichen aufgefüllt. In entfernten MobiLink-Datenbanken (SQL Anywhere oder UltraLite) entspricht CHAR dem Datentyp VARCHAR: Werte werden nicht bis zu einer bestimmten Länge mit Leerzeichen aufgefüllt. Verwenden Sie in der konsolidierten Datenbank unbedingt VARCHAR anstelle von CHAR. Wenn Sie CHAR verwenden müssen, können Sie mit der mlsrv12-Befehlszeilenoption -b während der Synchronisation nachgestellte Leerzeichen aus Zeichenfolgen entfernen. Diese Option ist wichtig für Zeichenfolgenvergleiche, mit denen Konflikte erkannt werden.
Siehe mlsrv12-Option -b .
Zeitstempel Der MobiLink-Server generiert mithilfe von gv$transaction einen Zeitstempel, der von der entfernten Datenbank bei der nächsten Synchronisation verwendet werden soll. Daher muss die Login-ID für den MobiLink-Server eine SELECT-Berechtigung für gv$transaction besitzen. Oracle gestattet es Ihnen nicht, den Zugriff direkt auf gv$transaction zu erteilen. Stattdessen müssen Sie die SELECT-Berechtigung für die zugrunde liegende gv_$transaction-Ansicht erteilen. Siehe Berechtigungen.
Gespeicherte Prozeduren Wenn Sie gespeicherte Prozeduren verwenden, um Ergebnismengen zurückzugeben oder VARRAY-Parameter zu akzeptieren, müssen Sie die Option Prozedur gibt Ergebnisse zurück oder verwendet VARRAY-Parameter für den iAnywhere Solutions 12 - Oracle ODBC-Treiber aktivieren. Darüber hinaus benötigt Sybase Central Prozeduren für die Rückgabe von Ergebnissen, um die zentrale Administration von entfernten Datenbanken verwenden zu können, sodass diese Option bei Verwendung der zentralen Administration aktiviert werden muss.
Variablen für die gesamte Sitzung Sie können sitzungsbezogene Daten in Variablen in Oracle-Paketen speichern. Mit Oracle-Paketen können Variablen erstellt, geändert und gelöscht werden und diese Variablen können verfügbar sein, so lange das betreffende Oracle-Paket aktuell ist.
Methoden für automatisches Inkrementieren Um die Eindeutigkeit von Primärschlüsseln zu erhalten, können Sie mit einer Oracle-Sequenz eine Liste von Schlüsseln erstellen, die der in einem SQL Anywhere-autoincrement-Feld ähnelt. In der Beispieldatenbank CustDB finden Sie Code-Beispiele unter Samples\MobiLink\CustDB\custora.sql. Im Unterschied zu einer autoincrement-Spalte müssen Sie jedoch die Sequenz explizit referenzieren. Bei SQL Anywhere-autoincrement-Spalten wird automatisch ein Spaltenwert eingefügt, wenn die Spalte nicht in einer INSERT-Anweisung referenziert ist.
Oracle unterstützt keine leeren Zeichenfolgen In Oracle wird eine leere Zeichenfolge wie der Wert NULL behandelt. In SQL Anywhere und UltraLite haben leere Zeichenfolgen eine andere Bedeutung als der Wert NULL. Verwenden Sie daher keine leeren Zeichenfolgen in Ihren Client-Datenbanken, wenn Sie mit einer konsolidierten Oracle-Datenbank arbeiten.
Siehe MobiLink-Isolationsstufen.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |