SQL Server: tipi di dati, oggetti e operazioni supportati
Informazioni sul supporto per Oracle GoldenGate nel database SQL Server.
Oracle GoldenGate per SQL Server supporta l'acquisizione e la consegna dei dati di caricamento iniziale e transazionali per le versioni di database SQL Server supportate.
Oracle GoldenGate per SQL Server supporta il mapping, l'applicazione di filtri e la trasformazione dei dati di origine, a meno che non sia indicato diversamente in questo documento, nonché la replica dei dati derivati da altri database di origine supportati da Oracle GoldenGate, nei database di SQL Server.
Requisiti istanza
-
Il nome del server SQL Server (
@@SERVERNAME) non deve essereNULL. -
(Estrazione) Affinché Oracle GoldenGate acquisisca i dati transazionali, l'agente SQL Server deve essere in esecuzione nell'istanza SQL Server di origine e il job SQL Server Change Data Capture deve essere in esecuzione nel database. Se la replica transazionale di SQL Server è abilitata anche per il database, è necessario che sia in esecuzione l'agente del lettore di log di SQL Server.
-
Se i dati per le colonne
TEXT, NTEXT, IMAGE,oVARCHAR(MAX), NVARCHAR(MAX)eVARBINARY(MAX)supereranno la dimensione predefinita di SQL Server impostata per l'opzionemax text repl size, estendere la dimensione. Utilizzaresp_configureper visualizzare o modificare il valore corrente dimax text repl size. Nota: per Amazon RDS per SQL Server, per modificare le impostazioni delle istanze, è necessario utilizzare i gruppi di parametri anzichésp_configure.
- Si consiglia di installare il Service Pack o l'aggiornamento cumulativo più recente per l'istanza di SQL Server per garantire la corretta funzionalità. Per SQL Server 2012, 2014, 2016 e 2017, Microsoft ha identificato e risolto diversi problemi importanti che influenzano direttamente la funzione SQL Server Change Data Capture. Questa situazione influisce sulla capacità di Oracle GoldenGate di acquisire correttamente i dati. Gli attuali problemi noti che richiedono patch Microsoft includono KB3030352, KB3166120 e KB 4073684.
Requisiti database
Osservare i requisiti e le limitazioni riportati di seguito per il supporto di Oracle GoldenGate.
-
Solo i database utente sono supportati per l'acquisizione e la consegna.
-
Assicurarsi che
Auto Create StatisticseAuto Update Statisticssiano abilitati per il database. -
Il database deve essere impostato sul livello di compatibilità della versione dell'istanza di SQL Server.
-
Oracle GoldenGate supporta i database di SQL Server configurati con TDE (Transparent Data Encryption).
-
(Estrazione) Il database di origine può essere impostato su qualsiasi modello di recupero che supporti la funzione di acquisizione dei dati di modifica in Microsoft SQL Server.
-
Se il database di origine è stato creato ripristinando un backup da un'istanza diversa, è necessario sincronizzare il SID proprietario del database con il SID sulla nuova istanza. In alternativa, è possibile utilizzare
sp_changedbownerper impostare il database ripristinato su un login corrente. -
L'acquisizione dai database SQL Server (SQL Server 2017 CU15 e release successive) abilitati con OLTP in-memory (ottimizzazione in-memory) è supportata, con Oracle GoldenGate release 21.15 e 23.5 in poi. Tuttavia, è supportata solo l'acquisizione da tabelle su disco e non dalle tabelle ottimizzate per la memoria.
-
(AlwaysOn) Extract supporta l'acquisizione dal database primario o da una modalità di commit sincrono di sola lettura. La modalità di commit asincrono non è supportata per l'acquisizione.
-
Considerazione delle prestazioni di Replicat: a partire da SQL Server 2016, Microsoft ha modificato l'impostazione predefinita per l'opzione di database
TARGET_RECOVERY_TIMEda 0 a 60 secondi. È stato dimostrato nei test interni che questo può ridurre il throughput del Replicat. Se si verifica una riduzione del throughput Replicat, considerare la possibilità di modificare l'impostazioneTARGET_RECOVERY_TIMEsu 0.
Limitazioni:
-
Oracle GoldenGate non supporta l'acquisizione o la consegna dei database di sistema.
-
Oracle GoldenGate non supporta l'acquisizione dai database contenuti.
-
I nomi dei database di origine non possono superare i 121 caratteri. Questa limitazione è dovuta alle stored procedure di SQL Server utilizzate per abilitare la registrazione supplementare.
-
Se si sta configurando la funzionalità heartbeat di Oracle GoldenGate, il nome del database di SQL Server non deve superare i 107 caratteri.
-
(AlwaysOn) L'acquisizione dai database configurati in modalità di commit asincrono di un gruppo di disponibilità AlwaysOn non è supportata.
Requisiti tabella
Le tabelle da includere per l'acquisizione e la consegna devono includere solo i tipi di dati elencati in Tipi di dati di SQL Server supportati.
-
Oracle GoldenGate supporta l'acquisizione di DML transazionali dalle tabelle utente, la consegna alle tabelle utente e alle viste scrivibili.
-
Le operazioni DDL non sono supportate.
-
Oracle GoldenGate supporta il numero massimo consentito di nomi di tabella e lunghezze di colonna per le tabelle monitorate da SQL Server Change Data Capture.
-
La somma di tutte le lunghezze di colonna da cui acquisire una tabella non deve superare la lunghezza consentita da SQL Server per l'abilitazione di Change Data Capture per la tabella. Se la somma di tutte le lunghezze di colonna supera quanto consentito dalla procedura
sys.sp.cdc_enable_tabledi SQL Server, non è possibile abilitareADD TRANDATAper tale tabella. La lunghezza massima consentita per i record diminuisce in quanto sono presenti più colonne, pertanto esiste una relazione inversa tra la lunghezza massima dei record e il numero di colonne nella tabella.
Tipi di dati di SQL Server supportati
I tipi di dati riportati di seguito sono supportati per l'acquisizione e la consegna, a meno che non venga specificato in modo specifico nelle limitazioni riportate di seguito.
-
Tipi di dati binari
-
(binary, varbinary, varbinary (max)) -
(varbinary (max)conFILESTREAM)
-
-
Tipi di dati carattere
(char, nchar, nvarchar, nvarchar (max), varchar, varchar (max))
-
Tipi di dati data e ora
(date, datetime2, datetime, datetimeoffset, smalldatetime, time)
-
Tipi di dati numerici
(bigint, bit, decimal, float, int, money, numeric, real, smallint, smallmoney, tinyint)
-
LOB
(image, ntext, text)
-
Altri tipi di dati
(timestamp, uniqueidentifier, hierarchyid, geography, geometry, sql_variant (Delivery only), XML)
-
Oracle GoldenGate per SQL Server può replicare i dati delle colonne contenenti le impostazioni
SPARSE.
Limitazioni:
-
Oracle GoldenGate non supporta l'applicazione di filtri, il mapping di colonne o la manipolazione di oggetti di grandi dimensioni superiori a 4 KB. La funzionalità completa di Oracle GoldenGate può essere utilizzata per oggetti fino a 4 KB.
-
Oracle GoldenGate considera i dati XML come un oggetto di grandi dimensioni (LOB), così come SQL Server quando l'XML non rientra in una riga. I miglioramenti XML estesi di SQL Server, ad esempio la convalida dei lass,
DATETIMEe la funzionalità di unione, non sono supportati. -
Una colonna
TIMESTAMPassegnata dal sistema o una colonna calcolata non materializzata non può far parte di una chiave. Una tabella contenente una colonnaTIMESTAMPdeve avere una chiave, che può essere una chiave primaria o un vincolo univoco, oppure una chiave sostitutiva specificata con una clausolaKEYCOLSnelle istruzioniTABLEoMAP. Per ulteriori informazioni, vedere Assegnazione di identificativi riga. -
Oracle GoldenGate supporta i tipi di dati a caratteri multibyte e i dati a più byte memorizzati nelle colonne di caratteri. I dati multibyte sono supportati solo in una configurazione simile a quella di SQL Server. Trasformazione, filtraggio e altri tipi di manipolazione non sono supportati per i dati dei caratteri multibyte.
-
Se l'acquisizione dei dati per le colonne
TEXT,NTEXT,IMAGE,VARCHAR (MAX),NVARCHAR(MAX)eVARBINARY (MAX)supererà la dimensione predefinita di SQL Server impostata per l'opzionemax text repl size, estendere la dimensione. Utilizzaresp_configureper visualizzare il valore corrente dimax text repl sizee modificare l'opzione in base alle esigenze. Nota: Amazon RDS per SQL Server non consente amax text repl sizedi essere maggiore di 64 MB. {: .infoboxnote} -
Le colonne dei tipi di dati
IMAGE,NTEXTeTEXTvengono registrate come valoreNULLper le operazioni di eliminazione e prima dell'aggiornamento delle immagini. Le colonneVARBINARY(MAX),VARCHAR(MAX)eNVARCHAR(MAX)vengono registrate come valoreNULLprima delle operazioni di aggiornamento dell'immagine, a meno che la colonna non sia stata aggiornata.Per ulteriori informazioni, vedere il contenuto Tipi di dati oggetto di grandi dimensioni nel seguente documento Microsoft:
-
Oracle GoldenGate supporta dati UDT e UDA di dimensioni fino a 2 GB. Sono supportati tutti gli UDT tranne SQL_Variant.
-
Sono supportati i tipi di dati CLR (Common Language Runtime, CLR), inclusi i tipi di dati CLR integrati di SQL Server (ad esempio, geometria, geografia e ID gerarchia). I tipi di dati CLR sono supportati solo in una configurazione SQL Server simile. Trasformazione, filtraggio e altri tipi di manipolazione non sono supportati per i dati CLR.
-
Le colonne
VARBINARY (MAX)con l'attributoFILESTREAMsono supportate fino a una dimensione di 4 GB. Extract utilizza le funzioni standard del fileWin32per leggere il fileFILESTREAM. -
La gamma e la precisione dei numeri a virgola mobile dipendono dalla macchina host. In generale, la precisione è precisa a 16 cifre significative, ma è necessario esaminare la documentazione del database per determinare le approssimazioni previste. Oracle GoldenGate arrotonda o tronca i valori che superano la precisione supportata.
-
Oracle GoldenGate supporta i dati di indicatore orario da 0001/01/03:00:00:00 a 9999/12/31:23:59:59. Se un indicatore orario viene convertito da GMT all'ora locale, tali limiti si applicano anche all'indicatore orario risultante. A seconda del fuso orario, la conversione può aggiungere o sottrarre ore, il che può causare il superamento dell'indicatore orario del limite supportato inferiore o superiore.
Limiti sulle colonne calcolate:
-
Le colonne calcolate, persistenti o non persistenti, non sono supportate da Change Data Capture di Microsoft. Pertanto, non vengono scritti dati nel trail per le colonne che contengono colonne calcolate. Per replicare i dati per le colonne calcolate non persistenti, utilizzare l'opzione
FETCHCOLSoFETCHMODCOLSdel parametroTABLEper recuperare i dati delle colonne dalla tabella.Tenere presente che possono esserci discrepanze causate da differenze nei valori dei dati tra il momento in cui la colonna è stata modificata nel database e l'ora in cui Extract recupera i dati per il record transazione in fase di elaborazione.
-
Quando una colonna con tipo di dati non supportato
sql_variantviene utilizzata nelle opzioniFETCHCOLSoFETCHMODCOLS, Extract viene interrotto con il seguente errore:ERROR OGG-25230 Unsupported datatype '*column-name* (sql_variant)' used with 'FETCHCOLS/FETCHCOLSEXCEPT' in table '*table-name>*. -
Replicat non applica DML ad alcuna colonna calcolata, anche se i dati per tale colonna sono nel trail, perché il database non consente DML su quel tipo di colonna. I dati di una colonna calcolata persistente di origine o di una colonna non persistente recuperata possono essere applicati a una colonna di destinazione che non è una colonna calcolata.
-
In un caricamento iniziale, tutti i dati vengono selezionati direttamente dalle tabelle di origine, non dal log delle transazioni. Pertanto, in un caricamento iniziale, i valori dei dati per tutte le colonne, incluse le colonne calcolate non persistenti, vengono scritti nel trail o inviati alla destinazione, a seconda del metodo utilizzato. Come quando si applicano i dati di modifica, Replicat non applica i dati di caricamento iniziale alle colonne calcolate, poiché il database non consente DML su quel tipo di colonna.
-
Oracle GoldenGate non consente l'uso di una colonna calcolata non persistente in una clausola
KEYCOLSin un'istruzioneTABLEoMAP. -
Se una chiave univoca include una colonna calcolata non persistente e Oracle GoldenGate deve utilizzare la chiave, la colonna calcolata non persistente viene ignorata. Ciò può influire sull'integrità dei dati se le colonne rimanenti non applicano l'univocità.
-
Se un indice univoco è definito in qualsiasi colonna calcolata non persistente, non viene utilizzato.
-
Se una chiave o un indice univoco contiene una colonna calcolata non persistente ed è l'unico identificativo univoco in una tabella, Oracle GoldenGate deve utilizzare tutte le colonne come identificativo per trovare le righe di destinazione. Poiché non è possibile utilizzare una colonna calcolata non persistente in questo identificativo, Replicat può applicare le operazioni contenenti questo identificativo alle righe di destinazione errate.
Tipi e funzioni di dati di SQL Server non supportati
-
Il tipo dati
SQL_Variantnon è supportato per l'acquisizione. -
Le tabelle che contengono tipi di dati non supportati possono causare l'interruzione di Extract. Come soluzione alternativa, è necessario rimuovere
TRANDATAda tali tabelle e rimuoverle dall'istruzioneTABLEdi Extract oppure utilizzare il parametroTABLEEXCLUDEdi Extract per la tabella.
Oggetti e operazioni supportati per SQL Server
Sono supportati gli oggetti e le operazioni riportati di seguito.
-
Replicat parallelo è supportato con Oracle GoldenGate per SQL Server.
-
Oracle GoldenGate supporta l'acquisizione di DML transazionali dalle tabelle utente e la consegna alle tabelle utente e alle viste scrivibili.
-
Le colonne
TEXT, NTEXT, IMAGE, VARBINARY, VARBINARY (MAX) VARCHAR (MAX)eNVARCHAR (MAX)sono supportate nella dimensione completa per le operazioni registrate da SQL Server Chang Data Capture. Ad esempio, le colonne dei tipi di datiIMAGE,NTEXTeTEXTvengono registrate come valore NULL per le operazioni di eliminazione. Per ulteriori informazioni, consultare il contenuto Tipi di dati oggetto di grandi dimensioni nel seguente documento Microsoft: -
Oracle GoldenGate supporta le dimensioni massime di righe consentite per le tabelle abilitate per SQL Server Change Data Capture.
-
Oracle GoldenGate supporta l'acquisizione da tabelle abilitate con compressione
PAGEeROW. Per le tabelle partizionate che utilizzano la compressione, tutte le partizioni devono essere abilitate con lo stesso tipo di compressione. -
Oracle GoldenGate supporta l'acquisizione per le tabelle partizionate se la tabella ha lo stesso layout fisico in tutte le partizioni.
-
La somma di tutte le lunghezze di colonna da cui acquisire una tabella non deve superare la lunghezza consentita da SQL Server per l'abilitazione di Change Data Capture per la tabella. Se la somma di tutte le lunghezze di colonna supera quanto consentito dalla procedura SQL Server
sys.sp.cdc_enable_table, non è possibile aggiungereADD TRANDATAper la tabella. La lunghezza massima consentita per i record diminuisce in quanto sono presenti più colonne, pertanto esiste una relazione inversa tra la lunghezza massima dei record e il numero di colonne nella tabella.
Oggetti e operazioni non supportati per SQL Server
Gli oggetti e le operazioni seguenti non sono supportati:
-
Si consideri una relazione padre-figlio tra due tabelle, in cui una chiave primaria nella tabella padre fa riferimento a una chiave esterna nella tabella figlio con la clausola
ON UPDATE SET DEFAULT. L'aggiornamento differito della chiave primaria nella tabella padre restituisce le coppie DELETE e INSERT. Non è possibile identificare in modo affidabile le operazioni DELETE e INSERT corrispondenti nella tabella padre. Quando tale aggiornamento rinviato viene eseguito sulla tabella padre, Oracle GoldenGate Extract potrebbe non acquisire in modo affidabile tutti gli eventi. -
Per i database di origine, operazioni non supportate da SQL Server Change Data Capture, ad esempio istruzioni
TRUNCATE. Fare riferimento alla documentazione di Microsoft SQL Server per un elenco completo delle operazioni limitate abilitando SQL Server Change Data Capture. -
Oracle GoldenGate per SQL Server non supporta l'acquisizione o la consegna delle modifiche DDL per SQL Server e sono necessari passi aggiuntivi per i processi Oracle GoldenGate nell'origine e nella destinazione per gestire qualsiasi modifica DDL a livello di tabella, incluse le operazioni di rigenerazione dell'indice di tabella. Vedere Requisiti per le modifiche DDL a livello di tabella.
-
Viste non supportate.
-
Operazioni eseguite dalla utility
TextCopye dalle istruzioniWRITETEXTeUPDATETEXT. Queste funzioni eseguono operazioni che non sono registrate dal database o sono registrate solo parzialmente, pertanto non possono essere supportate dal processo Extract. -
Tabelle partizionate con più layout fisici tra le partizioni.
-
La partizione passa a una tabella di origine. SQL Server Change Data Capture considera gli switch di partizione come operazioni DDL e i dati spostati da una partizione all'altra non vengono registrati nelle tabelle CDC, pertanto è necessario seguire le procedure descritte in Requisiti per le modifiche DDL a livello di tabella per implementare manualmente uno switch di partizione quando la tabella è abilitata per il log supplementare.
-
A causa di una limitazione con Change Data Capture di SQL Server, le raccolte a livello di colonna diverse dalla raccolta del database potrebbero causare la scrittura di dati errati nelle tabelle CDC per i dati dei caratteri e Extract li acquisirà man mano che vengono scritti nelle tabelle CDC. Si consiglia di utilizzare il tipo di dati
NVARCHAR,NCHARoNTEXTper le colonne contenenti dati non ASCII oppure utilizzare la stessa combinazione per le colonne di tabella del database. Per ulteriori informazioni, vedere Informazioni su SQL Server (Change Data Capture). -
A causa di una limitazione con Change Data Capture di SQL Server,
NOOPUPDATESnon viene acquisito dall'agente SQL Server Change Data Capture, pertanto non sono presenti record da acquisire per le operazioni di aggiornamento non operativo. -
Le tabelle temporali non sono supportate per l'abilitazione di Change Data Capture, pertanto non possono essere configurate per Extract per le implementazioni di origine.
Requisiti per modifiche DDL a livello di tabella
Oracle GoldenGate for SQL Server non supporta l'acquisizione o la consegna delle modifiche DDL. Tuttavia, a partire da Oracle GoldenGate 21c, le modifiche apportate alle tabelle abilitate con TRANDATA non causeranno l'interruzione di Extract. Extract continuerà a elaborare i dati di modifica per la tabella così come esisteva quando TRANDATA era abilitato.
Le operazioni considerate modifiche DDL a livello di tabella includono, a titolo non esaustivo: ALTER TABLE, TRUNCATE TABLE, ricostruzioni di indici e switch di partizione.
Per evitare incongruenze di dati dovute a modifiche DDL a livello di tabella, è necessario eseguire i passi riportati di seguito.
-
Origine: sospendere o arrestare i dati dell'applicazione nella tabella o nelle tabelle da modificare.
-
Origine: assicurarsi che non vi siano transazioni aperte per la tabella da modificare.
-
Origine: assicurarsi che il job Acquisizione CDC di SQL Server elabori tutte le transazioni rimanenti per la tabella da modificare.
-
Origine: assicurarsi che Extract elabori tutte le transazioni per la tabella da modificare prima di apportare modifiche DDL.
-
Target: assicurarsi che Replicat elabori tutte le transazioni per la tabella da modificare prima di apportare modifiche DDL.
-
Facoltativamente, l'implementazione di una tabella Indicatore evento può essere utilizzata per determinare quando sono state elaborate tutte le transazioni rimanenti per la tabella da modificare e gestire il coordinamento di quando arrestare correttamente Extract e Replicat.
-
Origine: interrompe il processo di estrazione.
-
Destinazione: arresta il processo Replicat.
-
Origine: disabilitare il log supplementare per la tabella da modificare eseguendo
DELETE TRANDATA. -
Origine: Apporta modifiche DDL tabella alla tabella di origine.
-
Destinazione: Apporta modifiche DDL tabella alla tabella di destinazione.
-
Origine: riabilitare il log supplementare eseguendo
ADD TRANDATAnelle tabelle dopo l'esecuzione delle modifiche. -
Origine: avviare l'estrazione.
-
Destinazione: avviare Replicat.
-
Origine: riprende i dati dell'applicazione nella tabella o nelle tabelle modificate.
Schemi di sistema per SQL Server
Gli schemi di sistema riportati di seguito non sono supportati per la replica.
-
sys -
cdc -
INFORMATION_SCHEMA
Lo schema guest non è supportato mediante mapping di caratteri jolly, ma è supportato se elencato in modo esplicito, ad esempio TABLE guest.employees.