Ten artykuł jest częścią 1 dwuczęściowej serii, która opisuje kroki związane z ustawianiem fizycznej gotowości Active Data Guard w architekturze RAC One Node.
Wprowadzenie
Oracle Data Guard jest jednym z głównych komponentów Oracle Database High Availability (HA), zintegrowanego zestawu rozwiązań, który pomaga organizacjom zminimalizować bezczynność, zaplanowaną lub nie, do zagwarantować płynność ich działalności. Active Data Guard to licencjonowana opcja dla Oracle Database Enterprise Edition, która rozszerza podstawową funkcjonalność Data Guard [1], umożliwiając korzystanie z zaawansowanych zasobów, takich jak:konsultacje, raporty, aktualizacje rezerwowej bazy danych, które nie wpływają na podstawową bazę danych, automatyczne odzyskiwanie uszkodzonych bloków danych, między innymi przyrostowe kopie zapasowe.
Oracle RAC One Node wykorzystuje architekturę dysku współdzielonego, aby zapewnić rozwiązanie o wysokiej dostępności bazy danych, podobne do Oracle Real Application Clusters (RAC). W przeciwieństwie do Oracle RAC, który wykonuje kilka instancji jednocześnie, Oracle RAC One Node zapewnia rozwiązanie awaryjne tylko w jednej instancji, a ponadto może ułatwić infrastrukturę w klastrze dzięki łatwej aktualizacji do ustawień Oracle Real Application Clusters z kilkoma instancjami.
Środowisko
- Podstawowa baza danych używa Oracle RAC z 2 węzłami
- Użyty tryb ochrony to „Maksymalna wydajność” przy użyciu trybu „asynchroniczny transport ponawiania”
- Funkcja „Szybkiego uruchamiania awaryjnego” nie będzie używana.
- Ustawienia brokera ochrony danych
1. Ustaw db_unique_name na Podstawowa baza danych:
sqlplus> zmień zestaw systemowy db_unique_name='analytics' scope=spfile sid='*';
2. Skopiuj „Plik haseł Oracle” do trybu gotowości serwera:
scp orapwanalytics oracle@hostdr:/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs
3. W instancjach banku węzłów 1 i 2 serwera głównego dodaj wpisy w listener.ora:
Węzeł 1:
(SID_DESC =(GLOBAL_DBNAME =analytics1_dgmgrl)(SID_NAME =analytics1)(ORACLE_HOME =/u01/app/oracle/product/12.1.0.2/dbhome_1))
Węzeł 2:
(SID_DESC =(GLOBAL_DBNAME =analytics2_dgmgrl)(SID_NAME =analytics2)(ORACLE_HOME =/u01/app/oracle/product/12.1.0.2/dbhome_1))
4. W trybie gotowości dodaj wpis w listener.ora
(SID_DESC =(GLOBAL_DBNAME =analytics_DG_DGMGRL)(SID_NAME =analytics_dg)(ORACLE_HOME =/u01/app/oracle/product/12.1.0.2/dbhome_1))
Po tych ustawieniach konieczne jest wykonanie polecenia „listener reload”, aby zmusić słuchacza do ponownego odczytania wpisów listener.ora. Uwaga! Ta operacja wpłynie na dostępność słuchacza.
5. Dodaj wpisy w pliku tnsnames.ora w podstawowej i rezerwowej bazie danych;
5.1. Skomentuj stary wpis
#analytics =# (OPIS =# (ADRES =(PROTOKÓŁ =TCP)(HOST =hostdr-pscan1)(PORT =1521))# (CONNECT_DATA =# (SERVER =DEDYKOWANY)# (SERVICE_NAME =analytics)# ) )
5.2. Dodaj nowe wpisy:
analytics =(OPIS =(ADRES =(PROTOKÓŁ =TCP)(HOST =hostdr-pscan1)(PORT =1521))(CONNECT_DATA =(SERVER =DEDYKOWANY)(SERVICE_NAME =analytics)(UR=A)))analytics1 =(OPIS =(ADRES =(PROTOKÓŁ =TCP)(HOST =hostdr01vmp01-vip)(PORT =1521))(CONNECT_DATA =(SERVER =DEDYKOWANY)(SERVICE_NAME =analityka)(SID =analityka1)(UR=A))) analytics2 =(OPIS =(ADRES =(PROTOKÓŁ =TCP)(HOST =hostdr02vmp01-vip)(PORT =1521))(CONNECT_DATA =(SERVER =DEDYKOWANY)(SERVICE_NAME =analytics)(SID =analytics2)(UR=A)) )analytics1_DGMGRL =(OPIS =(ADRES =(PROTOKÓŁ =TCP)(HOST =hostdr01vmp01-vip)(PORT =1521))(CONNECT_DATA =(SERVER =DEDYKOWANY)(SERVICE_NAME =analytics_DGMGRL)(UR=A)))analytics2_DGMGRL =( OPIS =(ADRES =(PROTOKOL =TCP)(HOST =hostdr02vmp01-vip)(PORT =1521))(CONNECT_DATA =(SERVER =DEDYKOWANY)(SERVICE_NAME =analytics_DGMGRL)(UR=A)))
5.3. Wpisy DG:
analytics_DG =(OPIS =(ADRES =(PROTOKÓŁ =TCP)(HOST =host01vmp01-vip)(PORT =1521))(CONNECT_DATA =(SERVER =DEDYKOWANY)(SERVICE_NAME =analytics_dg) (UR =A))))analytics_DG_DGMGRL =(OPIS =(ADRES =(PROTOKÓŁ =TCP)(HOST =host01vmp01-vip)(PORT =1521))(CONNECT_DATA =(SERVER =DEDYKOWANY)(SERVICE_NAME =analytics_dg_dgmgrl)(UR=A)))
6. Przetestuj nowe wpisy w pliku tnsnames.ora
tnsping analyticstnsping analytics1tnsping analytics2tnsping analytics_DGtnsping analytics1_DGMGRLtnsping analytics2_DGMGRLtnsping analytics_DG_DGMGRL
7. Włącz „Force Logging” i „Archivelog mode” w podstawowej bazie danych. Uwaga:Instancja została już skonfigurowana w trybie dziennika archiwalnego.
sqlplus> zmiana wymuszenia rejestrowania bazy danych;sqlplus> select force_logging, log_mode z v$database;FORCE_LOGGING LOG_MODE--------------------------- ------------ ------------TAK ARCHIWUM
8. Sprawdź ustawienia RedoLogs w podstawowej bazie danych. Używany skrypt logfiles.sql jest dostępny na oracle-base.com.
9. Dodaj pliki dziennika stanu gotowości.
Aby określić zalecaną liczbę dzienników ponownego wykonywania w trybie gotowości, użyj następującego wzoru [2]:
(maksymalna liczba grup plików dziennika +1) * maksymalna liczba wątków
Moja podstawowa baza danych ma dwa wątki, a każdy z nich ma cztery grupy ponownego wykonywania online, dlatego powinniśmy mieć dziesięć dzienników ponownego wykonywania w trybie gotowości.
(maksymalna liczba grup plików dziennika +1) * maksymalna liczba wątków =((4 + 1) * 2 =10)
sqlplus> alter database add standby logfile thread 1 group 41 ('+DG_RECO_DR') size 1024M;sqlplus> alter database add standby logfile thread 2 group 42 ('+DG_RECO_DR') size 1024M;sqlplus> alter database add standby logfile wątek 1 grupa 43 ('+DG_RECO_DR') size 1024M;sqlplus> alter database add standby logfile thread 2 group 44 ('+DG_RECO_DR') size 1024M;sqlplus> alter database add standby logfile thread 1 group 45 ('+DG_RECO_DR') size 1024M;sqlplus> alter database add standby logfile thread 2 group 46 ('+DG_RECO_DR') size 1024M;sqlplus> alter database add standby logfile thread 1 group 47 ('+DG_RECO_DR') size 1024M;sqlplus> alter database add standby logfile wątek 2 grupa 48 ('+DG_RECO_DR') size 1024M;sqlplus> alter database add standby logfile thread 2 group 49 ('+DG_RECO_DR') size 1024M;sqlplus> alter database add standby logfile thread 2 group 50 ('+DG_RECO_DR') rozmiar 1024M;
10. W podstawowej bazie danych utwórz plik p, który będzie bazą plików parametrów rezerwowej bazy danych.
utwórz pfile='/tmp/initanalytics_dg_aux.ora' z pliku spfile;
11. W rezerwowej bazie danych utwórz plik pfile z informacjami o zdalnym serwerze. Najłatwiejszym sposobem utworzenia tego pliku jest skopiowanie pliku parametrów Podstawowej Bazy Danych (pozycja 10) do Rezerwowej Bazy Danych i jego edycja.
$ cd $ORACLE_HOME/dbs$ vi initanalytics_dg_aux.ora#*.audit_file_dest='/u01/app/oracle/admin/analytics/adump'*.audit_file_dest='/u01/app/oracle/admin/analytics_dg/adump '*.audit_trail='db'#.cluster_database=true*.cluster_database=false*.compatible='12.1.0.2.0'#*.control_files='+DG_DATA_DR/analytics/controlfile/current.1257.954609365','+DG_RECO_DR /analytics/controlfile/current.527.954609365'*.control_files='+DG_DATA/analytics_dg/controlfile/current1.ctl','+DG_RECO/analytics_dg/controlfile/current2.ctl'*.db_block_size=8192#*.db_create_file_dest='+ DG_DATA_DR'*.db_create_file_dest='+DG_DATA'#*.db_create_online_log_dest_1='+DG_DATA_DR'*.db_create_online_log_dest_1='+DG_DATA'#*.db_create_online_log_dest_2='_DEST_''*_R *.db_name='analytics'*.db_files=2000#*.db_recovery_file_dest='+DG_RECO_DR'*.db_recovery_file_dest='+DG_RECO'*.db_recovery_file_dest_size=100G#*.db_unique_name='analytics_name_*. /pre>12. Utwórz hierarchie katalogów.
12.1. Utwórz katalog dla „zrzutu audytu”, w którym zostaną utworzone pliki i audyt bazy danych.
mkdir -p /u01/app/oracle/admin/analytics_dg/adump12.2. W ASM utwórz katalogi dla plików kontrolnych i plików parametrów:
mkdir +DG_DATA/analytics_DG/mkdir +DG_DATA/analytics_DG/PARAMETERFILEmkdir +DG_DATA/analytics_DG/CONTROLFILEmkdir +DG_DATA/analytics_DG/BROKERCFGmkdir +DG_RECO/GRECO/analytics/DGDGm>_DGDGm13. Utwórz spfile i pfile w rezerwowej bazie danych
Eksportuj $ ORACLE_SID=analytics_dg$ sqlplus / jako sysdba13.1. Uruchom rezerwową bazę danych za pomocą pfile initanalytics_dg_aux.ora i przekonwertuj plik parametrów (pfile) na spfile.
sqlplus> startup nomount pfile='/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/initanalytics_dg_aux.ora';sqlplus> create spfile='+DG_DATA/analytics_DG/PARAMETERFILE/spfileanalytics_dg.ora' z pfile='/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/initanalytics_dg_aux.ora';13.2. Utwórz plik pfile i w tym pliku wstaw następujący wpis:
echo "spfile='+DG_DATA/analytics_DG/PARAMETERFILE/spfileanalytics_dg.ora">> initanalytics_dg.ora13.3. Uruchomienie instancji ze spfile do późniejszego przywrócenia bazy danych.
$ export ORACLE_SID=analytics_dg$ sqlplus sys jako sysdbasqlplus> zamknij natychmiast;sqlplus> start nomount;14. Uruchom przywracanie z duplikatem bazy danych;
connect target sys/xxxxxx@analytics1;connect pomocniczy sys/xxxxxx@analytics_dg_dgmgrl;RUN {Przydziel dysk typu urządzenia kanału pr1;Przydziel dysk typu urządzenia kanału pr2;przydziel dysk typu kanału pomocniczego stby1;przydziel dysk typu kanału pomocniczego stby2;DUPLICATE DOCELOWA BAZA DANYCH W STANIE CZUWANIA Z AKTYWNEJ BAZY DANYCH;KANAŁ ZWOLNIENIA pr1;KANAŁ ZWOLNIENIA pr2;KANAŁ ZWOLNIENIA stby1;KANAŁ ZWOLNIENIA stby2;}
W następnym poście będziemy kontynuować tę sagę!
Referencje
[1] Najlepsze praktyki Oracle Active Data Guard. Dostępne pod adresem:https://www.oracle.com/database/technologies/active-data-guard-12c-best-practice.html [2] Najlepsze praktyki dotyczące wysokiej dostępności bazy danych Oracle 11g, wydanie 2 (11.2). Dostępne pod adresem:https://docs.oracle.com/cd/E24693_01/server.11203/e10803/config_dg.htm [3] Broker ochrony danych. Dostępne pod adresem:https://docs.oracle.com/cd/E11882_01/server.112/e40771/dbpropref.htm#DGBKR3781