We onderzoeken de migratie van een Oracle-database van een EC2-instantie naar een beheerde service-RDS. In de eerste van vier artikelen, "Een Oracle-database migreren van AWS EC2 naar AWS RDS, deel 1", hebben we database-instances gemaakt op EC2 en RDS. In het tweede artikel, "Een Oracle-database migreren van AWS EC2 naar AWS RDS, deel 2", hebben we een IAM-gebruiker gemaakt voor databasemigratie en ook een databasetabel gemaakt om te migreren. Alleen in het tweede artikel hebben we een replicatie-instantie en replicatie-eindpunten gemaakt. In het derde artikel, "Een Oracle-database migreren van AWS EC2 naar AWS RDS, deel 3", hebben we een migratietaak gemaakt om bestaande wijzigingen te migreren. In dit vervolgartikel zullen we doorlopende wijzigingen in gegevens migreren. Dit artikel heeft de volgende secties:
- Een replicatietaak maken en uitvoeren om lopende wijzigingen te migreren
- Aanvullende logboekregistratie toevoegen
- Een tabel toevoegen aan een Oracle-database-instantie op EC2
- Tabelgegevens toevoegen
- De gerepliceerde databasetabel verkennen
- Gegevens verwijderen en opnieuw laden
- Een taak stoppen en starten
- Databases verwijderen
- Conclusie
Een replicatietaak maken en uitvoeren om lopende wijzigingen te migreren
In de volgende subsecties zullen we een taak maken om lopende wijzigingen te repliceren. Om voortdurende replicatie te demonstreren, zullen we eerst de taak starten en vervolgens een tabel maken en gegevens toevoegen. Zet de tabel neer DVOHRA.WLSLOG , zoals weergegeven in figuur 1; we zullen dezelfde tabel maken om voortdurende replicatie te demonstreren.
Figuur 1: Tabel laten vallen DVOHRA.WLSLOG
Aanvullende logboekregistratie toevoegen
Databasemigratieservice vereist dat aanvullende logboekregistratie is ingeschakeld om het vastleggen van wijzigingsgegevens (CDC) mogelijk te maken die wordt gebruikt voor het repliceren van lopende wijzigingen. Aanvullende logboekregistratie is het proces waarbij informatie wordt opgeslagen over welke rijen gegevens in een tabel zijn gewijzigd. Aanvullende logboekregistratie voegt aanvullende of extra kolomgegevens toe in logbestanden voor opnieuw uitvoeren wanneer een update van een tabel wordt uitgevoerd. De kolommen die zijn gewijzigd, worden geregistreerd als aanvullende gegevens in logbestanden voor opnieuw uitvoeren, samen met een identificatiesleutel, die de primaire sleutel of unieke index kan zijn. Als een tabel geen primaire sleutel of unieke index heeft, worden alle scalaire kolommen opgenomen in de logbestanden voor opnieuw uitvoeren om een unieke gegevensrij te identificeren, waardoor de logbestanden voor opnieuw uitvoeren groot kunnen worden. Oracle Database ondersteunt de volgende soorten aanvullende logboekregistratie:
- Minimale aanvullende logboekregistratie: Alleen de minimale hoeveelheid gegevens die LogMiner nodig heeft voor de DML-wijzigingen wordt vastgelegd in logbestanden voor opnieuw uitvoeren.
- Databaseniveau-identificatie Sleutelregistratie: Er worden verschillende soorten logboekregistratie van identificatiesleutels op databaseniveau ondersteund:ALLES, PRIMAIRE SLEUTEL, UNIEKE en BUITENLANDSE SLEUTEL. Met het ALL-niveau worden alle kolommen (behalve LOB's, Longs en ADT's) vastgelegd in logbestanden voor opnieuw uitvoeren. Voor PRIMAIRE SLEUTEL worden alleen kolommen met primaire sleutels opgeslagen in logbestanden voor opnieuw uitvoeren wanneer een rij met een primaire sleutel wordt bijgewerkt; het is niet vereist dat een primaire sleutelkolom wordt bijgewerkt. De FOREIGN KEY-soort slaat alleen de externe sleutels van een rij op in logbestanden voor opnieuw uitvoeren wanneer een van de rode logbestanden wordt bijgewerkt. De UNIQUE-soort slaat alleen de kolommen op in een unieke samengestelde sleutel- of bitmapindex wanneer een kolom in de unieke samengestelde sleutel- of bitmapindex is gewijzigd.
- Aanvullende logboekregistratie op tabelniveau: Specificeert op tabelniveau welke kolommen worden opgeslagen in logbestanden voor opnieuw uitvoeren. Het loggen van identificatiesleutels op tabelniveau ondersteunt dezelfde niveaus als bij het loggen van identificatiesleutels op databaseniveau; ALLES, PRIMAIRE SLEUTEL, UNIEKE en BUITENLANDSE SLEUTEL. Op tabelniveau worden ook door de gebruiker gedefinieerde aanvullende loggroepen ondersteund, waarmee een gebruiker kan bepalen welke kolommen aanvullend moeten worden vastgelegd. De door de gebruiker gedefinieerde aanvullende loggroepen kunnen voorwaardelijk of onvoorwaardelijk zijn.
Voor doorlopende replicatie moeten we minimale aanvullende logboekregistratie en aanvullende logboekregistratie op tabelniveau instellen voor ALLE kolommen.
Voer in SQL*Plus de volgende instructie uit om minimale aanvullende logboekregistratie in te stellen:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
De uitvoer is als volgt:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; Database altered.
Voer de volgende instructie uit om de status van de minimale aanvullende logboekregistratie te vinden. En als de uitvoer een SUPPLEME-kolomwaarde heeft als JA, is minimale aanvullende logging ingeschakeld.
SQL> SELECT supplemental_log_data_min FROM v$database; SUPPLEME -------- YES
Het instellen van minimale aanvullende logboekregistratie en het verifiëren van de statusuitvoer wordt weergegeven in Afbeelding 2.
Figuur 2: Minimale aanvullende logboekregistratie instellen en verifiëren
We zullen ook identificatiesleutelregistratie op tabelniveau instellen wanneer we tabel- en tabelgegevens toevoegen om doorlopende replicatie aan te tonen nadat de taak is gestart. Als we tabel- en tabelgegevens toevoegen voordat we een taak maken en starten, kunnen we geen doorlopende replicatie aantonen.
Als u een taak voor doorlopende replicatie wilt maken, klikt u op Taak maken , zoals weergegeven in afbeelding 3.
Figuur 3: Taken>Taak maken
In de Taak maken wizard, geef een taaknaam en -beschrijving op en selecteer de replicatie-instantie, het broneindpunt en het doeleindpunt, zoals weergegeven in Afbeelding 4. Selecteer Migratietype als Bestaande gegevens migreren en doorlopende wijzigingen repliceren .
Figuur 4: Migratietype selecteren voor doorlopende replicatie
Een bericht dat wordt weergegeven in Afbeelding 5 geeft aan dat aanvullende logboekregistratie moet worden ingeschakeld voor doorlopende replicatie. Het bericht is niet bedoeld om aan te geven dat aanvullende logboekregistratie niet is ingeschakeld, maar alleen als herinnering. We hebben aanvullende logboekregistratie al ingeschakeld. Selecteer het selectievakje Taak starten bij aanmaken .
Figuur 5: Bericht over aanvullende registratievereiste voor het repliceren van doorlopende wijzigingen
De Taakinstellingen zijn hetzelfde als voor het migreren van alleen bestaande gegevens (zie afbeelding 6).
Figuur 6: Taakinstellingen
Voor tabeltoewijzingen is ten minste één selectieregel vereist. Voeg een selectieregel toe om alle tabellen in de DVOHRA . op te nemen tabel, zoals weergegeven in Afbeelding 7.
Figuur 7: Een selectieregel toevoegen
De toegevoegde selectieregel wordt getoond in figuur 8.
Figuur 8: Selectieregel
Klik op Taak maken om de taak te maken, zoals weergegeven in afbeelding 9.
Figuur 9: Taak maken
Er wordt een nieuwe taak toegevoegd met de status Aanmaken , zoals weergegeven in afbeelding 10.
Figuur 10: Taak toegevoegd met status Aanmaken
Wanneer de selectie- en transformatieregels voor alle bestaande gegevens zijn toegepast en de gegevens zijn gemigreerd, wordt de taakstatus Laden voltooid, replicatie bezig (zie afbeelding 11).
Figuur 11: Laden voltooid, replicatie bezig
De Tabelstatistieken tab geeft geen tabellen weer als zijnde gemigreerd of gerepliceerd, zoals weergegeven in Afbeelding 12.
Figuur 12: Tabelstatistieken
Om de CloudWatch-logboeken te verkennen, klikt u op de Logboeken en klik op de link, zoals weergegeven in Afbeelding 13.
Figuur 13: Logboeken
De CloudWatch-logboeken worden weergegeven, zoals weergegeven in Afbeelding 14. De laatste vermelding in de logboeken gaat over het starten van de replicatie. De doorlopende replicatietaak wordt niet beëindigd na het laden van bestaande gegevens, indien aanwezig, maar blijft actief.
Figuur 14: CloudWatch-logboeken
Een tabel toevoegen aan een Oracle-database-instantie op EC2
Maak vervolgens een tabel en voeg tabelgegevens toe om doorlopende replicatie aan te tonen. Voer de volgende twee instructies samen uit, zodat aanvullende logboekregistratie op tabelniveau wordt ingesteld wanneer de tabel wordt gemaakt. Pas het script aan om het schema anders te maken.
CREATE TABLE DVOHRA.wlslog(time_stamp VARCHAR2(255) PRIMARY KEY, category VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255),code VARCHAR2(255),msg VARCHAR2(255)); alter table DVOHRA.WLSLOG add supplemental log data (ALL) columns;
De aanvullende logboekregistratie op tabelniveau wordt ingesteld wanneer de tabel wordt gemaakt.
SQL> CREATE TABLE DVOHRA.wlslog(time_stamp VARCHAR2(255) PRIMARY KEY,category VARCHAR2(255),type VARCHAR2(255),servername VARCHAR2(255),code VARCHAR2(255),msg VARCHAR2(255)); alter table DVOHRA.WLSLOG add supplemental log data (ALL) columns; Table created. SQL> Table altered.
De uitvoer wordt weergegeven in SQL*Plus in Afbeelding 15.
Figuur 15: Tabel maken en aanvullende logboekregistratie instellen
Tot nu toe hebben we alleen de tabel gemaakt en geen tabelgegevens toegevoegd. De DDL voor de tabel wordt gemigreerd, zoals aangegeven door de tabelstatistieken in Afbeelding 16.
Figuur 16: DDL's voor gemigreerde tabel
Tabelgegevens toevoegen
Voer vervolgens het volgende SQL-script uit om gegevens toe te voegen aan de gemaakte tabel. Pas het script aan om het schema anders te maken.
SQL> INSERT INTO DVOHRA.wlslog(time_stamp,category,type, servername,code,msg) VALUES('Apr-8-2014-7:06:16-PM-PDT', 'Notice','WebLogicServer','AdminServer','BEA-000365','Server state changed to STANDBY'); INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername, code,msg) VALUES('Apr-8-2014-7:06:17-PM-PDT','Notice', 'WebLogicServer','AdminServer','BEA-000365','Server state changed to STARTING'); INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername, code,msg) VALUES('Apr-8-2014-7:06:18-PM-PDT','Notice', 'WebLogicServer','AdminServer','BEA-000365','Server state changed to ADMIN'); INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,code, msg) VALUES('Apr-8-2014-7:06:19-PM-PDT','Notice', 'WebLogicServer','AdminServer','BEA-000365','Server state changed to RESUMING'); INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,code, msg) VALUES('Apr-8-2014-7:06:20-PM-PDT','Notice', 'WebLogicServer','AdminServer','BEA-000361','Started WebLogic AdminServer'); INSERT INTO DVOHRA.wlslog(time_stamp,category,type,servername,code, msg) VALUES('Apr-8-2014-7:06:21-PM-PDT','Notice', 'WebLogicServer','AdminServer','BEA-000365','Server state changed to RUNNING'); 1 row created. SQL> 1 row created. SQL> 1 row created. SQL> 1 row created. SQL> 1 row created. SQL> 1 row created.
Voer vervolgens de Commit-verklaring uit.
SQL> COMMIT; Commit complete.
De gerepliceerde databasetabel verkennen
In de tabelstatistieken worden Inserts weergegeven als het aantal toegevoegde rijen met gegevens, zoals weergegeven in Afbeelding 17.
Figuur 17: Lijst met tabelstatistieken 6 Bijlagen
De taak blijft actief na het repliceren van doorlopende wijzigingen. Voeg nog een rij gegevens toe.
SQL> INSERT INTO DVOHRA.wlslog(time_stamp,category,type, servername,code,msg) VALUES('Apr-8-2014-7:06:22-PM-PDT', 'Notice','WebLogicServer','AdminServer','BEA-000360','Server started in RUNNING mode'); 1 row created. SQL> COMMIT; Commit complete. SQL>
Klik op Gegevens vernieuwen van de server, zoals weergegeven in Afbeelding 18.
Figuur 18: Gegevens van server vernieuwen
Het totale aantal tussenvoegsels in tabelstatistieken wordt 7, zoals weergegeven in afbeelding 19.
Figuur 19: Tabelstatistieken met Inserts als 7
Gegevens verwijderen en opnieuw laden
Om tabelgegevens te verwijderen en opnieuw te laden, klikt u op Tabelgegevens verwijderen en opnieuw laden , zoals weergegeven in Afbeelding 20.
Figuur 20: Tabelgegevens neerzetten en opnieuw laden
Klik op Gegevens van server vernieuwen (zie afbeelding 21).
Figuur 21: Gegevens van server vernieuwen
Het pictogram en Status kolom voor de tabel geeft aan dat de tabel opnieuw wordt geladen, zoals weergegeven in Afbeelding 22.
Figuur 22: Tafel wordt opnieuw geladen
Wanneer het opnieuw laden van de tabel is voltooid, wordt de kolom Tabelstatus Tabel voltooid , zoals weergegeven in Afbeelding 23. Nadat de tabelgegevens opnieuw zijn geladen, worden de Volledige rijen geeft een waarde van 7 weer en Inserts is 0 omdat herladen geen doorgaande replicatie is, maar een volledige lading.
Figuur 23: Tabel herladen voltooid
Omdat de tabelgegevens worden verwijderd en opnieuw worden geladen en de brontabelgegevens niet zijn gewijzigd, bevatten de CloudWatch-logboeken het bericht "Sommige wijzigingen van de brondatabase hadden geen invloed bij toepassing op de doeldatabase.", zoals weergegeven in Afbeelding 24.
Figuur 24: Sommige wijzigingen van de brondatabase hadden geen invloed wanneer ze werden toegepast op de doeldatabase
Wanneer het herladen van de DVOHRA.wlslog table is voltooid, verschijnt het bericht "Laden voltooid voor tabel DVOHRA.wlslog. 7 rijen ontvangen” wordt weergegeven, zoals weergegeven in Afbeelding 25.
Figuur 25: CloudWatch-logbericht voor laden is voltooid
Een taak stoppen en starten
Een taak van het type met doorlopende replicatie stopt niet vanzelf, tenzij er een fout optreedt. Om de taak te stoppen, klikt u op Stop (zie afbeelding 26).
Figuur 26: Een taak stoppen
In de Taak stoppen dialoogvenster, klik op Stoppen , zoals weergegeven in Afbeelding 27.
Figuur 27: Bevestigingsdialoogvenster om een taak te stoppen
De taakstatus wordt Stoppen , zoals weergegeven in Afbeelding 28.
Figuur 28: Een taak stoppen
Wanneer een taak stopt, wordt de status Gestopt , zoals weergegeven in Afbeelding 29.
Figuur 29: Taak gestopt
Om een gestopte taak te starten, klikt u op Start/Hervatten , zoals weergegeven in Afbeelding 30.
Figuur 30: Een taak starten of hervatten
In de Taak starten dialoogvenster, klik op Start om de taak te starten vanaf het stoppunt (zie afbeelding 31). De andere optie is om de taak opnieuw te starten.
Figuur 31: Taak starten na stoppen
De taakstatus wordt Begint , zoals weergegeven in Afbeelding 32.
Figuur 32: Een taak starten
Wanneer de migratie van bestaande gegevens is voltooid, wordt de taak voortgezet met de status Laden voltooid, replicatie bezig , zoals weergegeven in Afbeelding 33.
Figuur 33: Laden voltooid, replicatie bezig
Databases verwijderen
De RDS DB-instantie kan worden verwijderd met de Instance Actions>Delete opdracht. De Oracle-database op de EC2-instantie kan worden gestopt met Actions>Instance State>Stop , zoals weergegeven in Afbeelding 34.
Figuur 34: EC2-instantie stoppen
Conclusie
In vier artikelen bespraken we het migreren van een Oracle Database van AWS EC2 naar AWS RDS.