sql >> Databasteknik >  >> RDS >> Oracle

Konfigurera heterogen databasreplikering – SQL Server till Oracle

Introduktion

SQL Server Replication är en SQL Server-funktion som gör att vi kan överföra data från en instans till en annan för sådana ändamål som att konsolidera data till en rapportmiljö eller migrering. Jag personligen skulle inte betrakta SQL Server-replikering som en högtillgänglighetsteknik även om vissa anser att det är det.

SQL Server-replikering använder termer som liknar dem i förlagsbranschen för att beskriva hur data hanteras från källa till destination. Nyckeltermerna är följande:

  • Publisher – en SQL Server-instans som gör data tillgänglig för att replikeras till andra instanser (paketerad som publikationer).
  • Publikation – en enhet redo att skickas till den mottagande instansen som består av en samling artiklar som faktiskt är databasobjekt.
  • Distributör – en SQL Server-instans som ansvarar för att lagra data associerad med en eller flera utgivare i en databas som kallas en distributionsdatabas . En lokal distributör lagras i samma instans som utgivaren medan en fjärrdistributör finns i en annan instans.
  • Subscriber – en instans som tar emot en replikerad databas. En prenumerantprenumeration är en begäran om ett publikationsexemplar den förväntar sig att få från utgivaren.
  • Ögonblicksbild.

I artikeln kommer jag att dela med mig av några punkter jag lärde mig från att konfigurera SQL Server-replikeringen för att stödja en heterogen abonnent. Jag kommer att skapa en publikation och därefter en Oracle-prenumeration som kommer att bero på denna publikation. Jag kommer också att visa några punkter tillsammans med flödet av processen som är mycket viktiga för att felsöka problem.

Stegen för att konfigurera en replikeringssession för ögonblicksbilder är följande:

  1. Konfigurera en distributör
  2. Konfigurera en utgivare (tillsammans med publikationen inklusive artiklarna som publiceras)
  3. Konfigurera en prenumerant

Jag kommer att ge en kort förklaring av varje steg.

Konfigurera en distributör

En distributör är en instans som ansvarar för att lagra information som används under replikeringen. När du försöker skapa en publikation i instansen för första gången kommer SQL Server att föreslå att du konfigurerar en distributör. I den här artikeln är vår distributör en lokal distributör .

Skapa en publikation

Låt oss identifiera databasen som innehåller de objekt vi vill replikera. Detta kommer att vara en publikationsdatabas .

För att skapa en publikationsdatabas, följ instruktionerna på skärmbilderna nedan.

Detta steg låter dig välja en typ av publikation som du vill konfigurera. Varje publikationstyp beskrivs i den nedre rutan. Av enkelhets- och kompatibilitetsskäl väljer vi en ögonblicksbildspublikation. Observera att vi avser att replikera objekt till en Oracle-instans. I det här fallet Transaktions och Snapshot Publications stöds. Det finns andra bra användningsfall för en peer-to-peer och sammanslagningsreplikering.

I det här steget väljer vi de artiklar vi vill publicera. SQL Server tillåter oss att publicera fyra nyckelobjekttyper såsom:

  1. Tabell
  2. Lagrade procedurer
  3. Visningar
  4. Användardefinierade funktioner

Som du kan se kommer vi att publicera två tabeller:Order och OrderLines. I syfte att demonstrera flexibiliteten hos SQL Server-replikering kommer vi att filtrera posterna enligt nedan.
Obs: Vi är intresserade av att antalet OrderID är fler än 1000.

Om du vill utesluta oönskade rader från publicerade tabeller klickar du på Lägg till... och sedanNästa .

Skärmbilderna nedan visar hur man filtrerar kolumner för tabellen OrderLines.

Konfigurera sedan egenskaperna för Snapshot Agent. Vi definierar en initial ögonblicksbild och intervallet under vilket en ny ögonblicksbild genereras. Data som extraheras i det här steget lagras i en katalog som specificeras när distributören initialt konfigurerades.

Skapa först ett schema för att en ögonblicksbildagent ska starta. Klicka på Nästa .

För varje ögonblicksbildagent, ange vilket konto den ska köras under.

Konfigurera sedan säkerhetsinställningarna för Snapshot Agent. Tabellen Säkerhetsinställningar öppnar ett annat fönster där vi definierar vem som kör Snapshot Agent-processen samt bestämmer vilka SQL Server-inloggningsdetaljer som ska kopplas till utgivaren. Det finns vissa behörigheter som krävs av dessa huvudmän som kan vara lite tvivelaktiga i produktionen. Att använda SQL Server Agent Service-kontot är en lösning för att undvika komplikationer, men det rekommenderas faktiskt INTE av Microsoft.

Nära slutet måste du bestämma om du vill spara konfigurationen som ett skript för senare användning eller skapa publikationen omedelbart.

Nästa steg (fig. 16) sammanfattar alla alternativ du har valt. Vi rekommenderar att du gör en snabb recension innan du klickar på Slutför knappen.

Processen för att skapa publicering startar. Du kan klicka på Stopp för att avbryta processen.

När processen är slutförd blir din publikation synlig i objektutforskaren i SQL Server Management Studio.

Lägga till en prenumerant

En prenumerant får publikationer som görs tillgängliga av utgivaren . Kopian av publikationen som ska levereras till en prenumerant kallas en prenumeration . En utgivare kan ha många prenumeranter. Varje
prenumerant får artiklarna publicerade av denna utgivare som en enhet som kallas publikationen för utgivaren och anses vara prenumerationen på prenumeranten.

Genom att skapa en prenumeration säger vi helt enkelt till utgivaren "Jag vill ha kopior av denna publikation". Så mycket som en Publisher kan ha många publikationer kan det också finnas många prenumeranter på en
publikation. Därför är förhållandet mellan utgivare och prenumeranter en en-till-många-relation.

Guiden Nya prenumerationer låter oss bestämma vilken publikation vi vill prenumerera på. Vi kan välja från en lista över tidigare skapade publikationer som visas i Fig. 20.

Därefter bestämmer vi om vi vill köra ett Push-abonnemang istället för ett Pull-abonnemang. Även om ett Pull-abonnemang är bättre för prestanda när du tänker dig flera prenumeranter, fungerar det inte för en heterogen databasreplikering. Icke-SQL-serverprenumeranter måste använda en Pull-prenumeration. Det är värt att nämna att artiklarna som publiceras i detta scenario också är begränsade till tabeller och indexerade vyer.

Lägg till en Oracle-prenumerant med ett datakällanamn (DSN). Detta DSN måste redan ha skapats, testat och fått reda på att det fungerar när det gäller att kunna ansluta till Oracle-instansen via Oracle Net. Det betyder att du behöver en Oracle-klient installerad på SQL Server-värden med en post till en fil som heter tnsnames.ora definiera destinationen för anslutningen. Denna TNS-post används i sin tur för att konfigurera datakällans namn som guiden för nya prenumerationer ber om i detta skede.

Posten jag har skapat i min tnsnames.ora-fil ser ut så här:

ORCL10G =
 (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = IGIRI-LP)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl10g)
    )
 )

Den markerade delen är aliaset medan övriga detaljer definierar destinationen för anslutningen. Vi kan bekräfta om den här posten fungerar korrekt och om mina Oracle-miljövariabler är korrekt konfigurerade genom att använda tnsping verktyg som visas nedan.

När den har bekräftats används denna TNS-post för att konfigurera det DSN vi tänker använda. Vårt TNS-tjänstnamn heter ORCL10G medan DSN heter ORCLDC . Det är DSN vi använder i guiden för nya prenumerationer.

Observera att vi har använt 64-bitarsversionen av ODBC för att konfigurera DSN och det är ett system-DSN, inte ett användar-DSN. Konfigurationen beror inte på vem som är inloggad på datorn.

Välj en abonnenttyp som ska läggas till och ange datakällans namn. Klicka på OK .

Välj en eller flera prenumeranter, samt ange en databas för varje prenumeration.

När DSN har lagts till kan vi fortsätta med att konfigurera distributionsagentens säkerhet. Vi får reda på att detta liknar fallet när vi konfigurerade en Snapshot Agent Security i guiden Ny publicering.

Här har vi dock en sektion där vi upprättar en koppling till Prenumeranten snarare än till utgivaren (kom ihåg att detta är ett push-abonnemang). Detta användarkonto måste ha skapats på Oracle-instansen och bör ha behörighet att skapa tabeller och kvoter på dess standardtabellutrymme (här kan du behöva en Oracle DBA).

Lägg till parametrar till distributionsagentens säkerhet och klicka på OK .

Ange konto- och anslutningsalternativ för varje distributionsagent och klicka på Nästa .

Definiera synkroniseringsschemat för varje agent. I vårt fall valde vi att synkronisera kontinuerligt. Klicka på Nästa .

Välj alternativet för att initiera prenumerationen omedelbart, vilket innebär att du kopierar ALL data som är tillgänglig i Snapshot-mappen igen. Det rekommenderas för NoSQL Server-prenumeranter att återinitiera prenumerationen när några nya artiklar läggs till i publikationen. Klicka på Nästa .

Välj de alternativ som ska utföras efter att processen har slutförts framgångsrikt. Klicka på Nästa .

Verifiera informationen du lagt till och klicka på Slutför .

Processen för att skapa prenumeration körs.

Prenumerationen vi just skapade visar en post i Objektutforskaren (på Publisher) mappad till dess överordnade publikation. Observera att den inte visas i noden Lokala prenumerationer som ger dig en lista över prenumerationer som skapats på den aktuella instansen som inte är i det här fallet.

Övervakning och felsökning

SQL Server tillhandahåller replikeringsmonitorn för att granska och övervaka detaljer för alla replikeringssessioner på instansen. Replikeringsmonitorn kan informera administratören när Snapshot Agent körs och slutförs. Den kan också visa oss om prenumerationerna är initierade och om distributionsagenten fungerar smidigt.

Det finns åtta SQL Server Agent-jobb kopplade till vår nuvarande konfiguration. Att se historiken för dessa jobb ger också information om huruvida allt är bra.

Faktiska Oracle-fel listas i replikeringsmonitorn och i SQL Server-felloggen när de påträffas. Denna detaljnivå gör SQL Server Replication intressant att felsöka. Att ha kunskap om Oracle (för SQL Server DBA) kommer att ta lång väg att förstå de fel som kan uppstå.

Ta en titt på exemplet på felet i Fig. 34. Detta fel inträffade innan Oracle Net- och ODBC-miljöerna konfigurerades korrekt. Felen ger en mycket tydlig indikation på var problemet finns.

Jobbaktivitetsövervakaren informerar oss också om vilka jobb som lyckas och vilket jobb vi behöver felsöka i detalj genom att granska jobbhistoriken.

När alla tidigare fel är lösta, öppnar en prenumeration genom att dubbelklicka på den ger oss en detaljerad bild av alla sessioner, fel och resultat som vi förväntar oss att se när allt är bra. Observera att Agent Bulk kopierar data från utgivaren till prenumeranten i omgångar. Vi kan också fråga efter tabellerna som har skapats i Oracle-instansen och jämföra posterna. (Fig. 37).

Som du kan se förbereder SQL Server tabellen exklusive källschemat (försäljning) innan tabellen skapas i Oracle och data kopieras.

Postantalet i Oracle-instansen matchar det i källtabellen och tar hänsyn till det faktum att vi filtrerar OrderLines-tabellen för OrderIDs större än 1000.

Slutsats

Vi har kort gått igenom processen att konfigurera heterogen databasreplikering med en Oracle-instans som prenumerant. Även om det här alternativet gradvis fasas ut av Microsoft, finns det användningsfall som fortfarande kan dra nytta av funktionerna som tillhandahålls av denna gamla SQL Server-funktion. Referensavsnittet ger en bredare läsning om ämnet som jag tror kommer att vara användbart för dem som vill öva mer.

Referenser

Konfigurera replikering för alltid aktiva tillgänglighetsgrupper
Icke-Oracle-prenumeranter
Heterogen databasreplikering
Oracle-prenumeranter


  1. Predikatordning spelar roll i utökade evenemang

  2. MariaDB CHARACTER_LENGTH() Förklarad

  3. Hur pg_sleep() fungerar i PostgreSQL

  4. Valfria argument i WHERE-klausulen