Nastavení prostředíKompletní postup je v dokumentu PDF, který je na konci článku k dispozici.Předpokládejme, že máte dva servery vserver1 a vserver2. Oba jsou to linuxové servery s distribucí Enterprise linux.[oracle@vserver1 ~]$ cat /etc/redhat-releaseEnterprise Linux Enterprise Linux Server release 5.2 (Carthage)[oracle@vserver2 ~]$ cat /etc/redhat-releaseEnterprise Linux Enterprise Linux Server release 5.2 (Carthage)Na serveru vserver1 běží primární databáze orcl, zároveň zde běží i instance ASM.SQL> select database_role from v$database;DATABASE_ROLE—————-PRIMARYNa serveru vserver2 běží standby databáze orclsby1, zároveň zde běží instance ASM.SQL> select database_role from v$database;DATABASE_ROLE—————-PHYSICAL STANDBYMáme nastavený a zapnutý Data Guard broker.DGMGRL> show configurationConfigurationName: drsolutionEnabled: YESProtection Mode: MaxPerformanceDatabases:orcl – Primary databaseorclsby1 – Physical standby databaseFast-Start Failover: DISABLEDCurrent status for „drsolution“:SUCCESSPrvní co je potřeba udělat je upravit soubor tnsnames.ora.Vložte do souboru tnsnames.ora na obou serverech tento kód, kterým provádíte vlastní balancování mezi dvěma servery podle toho kde je dostupná služba active. Služba active je virtuální služba, která zastupuje služby orcl a orclsby1.TNSNAMES.ORAACTIVE =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vserver1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = vserver2)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = active)))Zadruhé je potřeba upravit soubory listener.ora na obou serverechLISTENER.ORA vserver1Odmažte tučně zvýrazněný kód, tímto ponecháte registraci služeb na listeneru.LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = vserver2)(PORT = 1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orclsby1)(ORACLE_HOME = /u01/app/oracle/product/11.1.0/db_1)(SID_NAME = orclsby1))(SID_DESC =(GLOBAL_DBNAME = orclsby1_DGMGRL)(ORACLE_HOME = /u01/app/oracle/product/11.1.0/db_1)(SID_NAME = orclsby1)))LISTENER.ORA vserver2LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = vserver2)(PORT = 1521))))SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orclsby1)(ORACLE_HOME = /u01/app/oracle/product/11.1.0/db_1)(SID_NAME = orclsby1))(SID_DESC =(GLOBAL_DBNAME = orclsby1_DGMGRL)(ORACLE_HOME = /u01/app/oracle/product/11.1.0/db_1)(SID_NAME = orclsby1)))Změna jména službyCelé přepínání se děje pomocí jména služby, které je tedy potřeba změnit na active.Tuto hodnotu raději nastavím na obou serverech.orclSQL> alter system set service_names = ‚active, orcl‘ scope=both;System altered.SQL> show parameter serviceNAME TYPE VALUE———————————— ———– —————-service_names string active, orclorclsby1SQL> alter system set service_names = ‚active, orclsby1‘ scope=both;System altered.SQL> show parameter serviceNAME TYPE VALUE———————————— ———– —————-service_names string active, orclsby1Kontrola připojení přes jméno služby[oracle@vserver1 admin]$ sqlplus sys/oracle@active as sysdba…SQL> sho parameter instance_nameNAME TYPE VALUE———————————— ———– —————-instance_name string orclPřipojili jste se na orcl, protože v tnsnames.ora se kontroluje jako první.Teď zkuste provést switchover na standby databázi.DGMGRL> connect sys/oracle@orclConnected.DGMGRL> switchover to orclsby1;Performing switchover NOW, please wait…New primary database „orclsby1“ is opening…Operation requires shutdown of instance „orcl“ on database „orcl“Shutting down instance „orcl“…ORA-01109: database not openDatabase dismounted.ORACLE instance shut down.Operation requires startup of instance „orcl“ on database „orcl“Starting instance „orcl“…ORACLE instance started.Database mounted.Switchover succeeded, new primary is „orclsby1″Zkusíte-li se připojit nyní se stejným connect stringem, pak se připojíte opět do databáze orcl, která je však již standby, tedy otevřená jen v mount režimu. To je správně, protože má pořád nastaven parametr service na active.[oracle@vserver1 admin]$ sqlplus sys/oracle@active as sysdba…SQL> sho parameter instance_nameNAME TYPE VALUE———————————— ———– —————-instance_name string orclsby1SQL> select database_role from v$database;DATABASE_ROLE—————-PHYSICAL STANDBYZměňte tedy parameres service_namesA vše bude v pořádkuSQL> alter system set service_names = ‚orcl‘ scope=both;System altered.SQL> exit…[oracle@vserver1 admin]$ sqlplus sys/oracle@active as sysdba…SQL> show parameter instance_nameNAME TYPE VALUE———————————— ———– —————-instance_name string orclsby1Připojili jste se do primární databáze.SQL> select database_role from v$database;DATABASE_ROLE—————-PRIMARYUpravené tnsnames.ora je potřeba rozdistribuovat na všechny klienty, pak je jen na vas, abyste při přepnutí na standby databázi změnili parametr service_names.Celý postup je v přiloženém dokumentu PDF.Příklad vychází z metalinku (My Oracle support)How to configure Client Failover after Data Guard Switchover or Failover [ID 316740.1]
Získejte konzultaci v hodnotě 1 500 Kč k vaší databázi Oracle zcela zdarma. Ozvěte se mi ještě dnes.