Vytvoření fyzické standby databáze není nikterak složitý proces. Navíc ve verzi databáze 11g lze použít příkaz duplicate, který za vás vykoná plno kroků, které byste dříve museli dělat ručně.Co tedy máme připraveno a co je potřeba udělat dále. Celý příklad je vychází z toho, že máte dva oddělené servery. V mém případě se jedná o dva servery vytvořené jako virtuální. Jak je vytvořit jsem ukazoval v předešlém příspěvku.Jedná se o server vserver1, na kterém běží instance ASM a zároveň standardní instalace databáze verze 11.1.0.6, která se jmenuje orcl.Na druhém serveru, který se jmenuje vserver2 běží jen instance ASM. A zde vytvoříme standby databázi, která se bude jmenovat orclsby1.Kompletní postup i s obrázky je v dokumentu PDF, který je na konci článku k dispozici.Nastavení a kontrola primární databázeVše se dělá na serveru vserver1Datové souborySQL> select file_name from dba_data_files;FILE_NAME—————————————————————–+DATA/orcl/datafile/users.259.663655093+DATA/orcl/datafile/undotbs1.258.663655093+DATA/orcl/datafile/sysaux.257.663655091+DATA/orcl/datafile/system.256.663655091Jméno databázeSQL> select name from v$database;NAME———ORCLSQL> show parameter uniqueNAME TYPE VALUE———————————— ———– —————-db_unique_name string orclZapnutí FORCE LOGGINGTímto zajistíme, že veškeré děni v databázi bude logováno a to i to, které je nastaveno na NOLOGGING.SQL> select force_logging from v$database;FOR—NOSQL> alter database force logging;Database altered.Konfigurace Standby redo logůSQL> select member from v$logfile;MEMBER—————————————————————–+DATA/orcl/onlinelog/group_3.266.663655201+DATA/orcl/onlinelog/group_3.267.663655205+DATA/orcl/onlinelog/group_2.264.663655195+DATA/orcl/onlinelog/group_2.265.663655199+DATA/orcl/onlinelog/group_1.262.663655189+DATA/orcl/onlinelog/group_1.263.6636551936 rows selected.SQL> select bytes from v$log;BYTES———-524288005242880052428800V případě, že používáte ASM není potřeba zadávat celou cestu.SQL> alter database add standby logfile group 4 size 50M;Database altered.SQL> alter database add standby logfile group 5 size 50M;Database altered.SQL> alter database add standby logfile group 6 size 50M;Database altered.Kontrola, že se logy vytvořili správně.SQL> select group#, dbid, bytes from v$standby_log;GROUP# DBID BYTES———- —————————————- ———-4 UNASSIGNED 524288005 UNASSIGNED 524288006 UNASSIGNED 52428800SQL> select group#, type, member from v$logfile;GROUP# TYPE———- ——-MEMBER——————————————————————————–3 ONLINE+DATA/orcl/onlinelog/group_3.266.6636552013 ONLINE+DATA/orcl/onlinelog/group_3.267.6636552052 ONLINE+DATA/orcl/onlinelog/group_2.264.6636551952 ONLINE+DATA/orcl/onlinelog/group_2.265.6636551991 ONLINE+DATA/orcl/onlinelog/group_1.262.6636551891 ONLINE+DATA/orcl/onlinelog/group_1.263.6636551934 STANDBY+DATA/orcl/onlinelog/group_4.270.7110891954 STANDBY+DATA/orcl/onlinelog/group_4.271.7110891995 STANDBY+DATA/orcl/onlinelog/group_5.272.7110892295 STANDBY+DATA/orcl/onlinelog/group_5.273.7110892336 STANDBY+DATA/orcl/onlinelog/group_6.274.7110892516 STANDBY+DATA/orcl/onlinelog/group_6.275.71108925512 rows selected.Kontrola případně vytvoření souboru hesel (password file)SQL> select * from v$pwfile_users;USERNAME SYSDB SYSOP SYSAS—————————— —– —– —–SYS TRUE TRUE FALSESoubor hesel je na svém místě a je používán.[oracle@vserver1 ~]$ cd /u01/app/oracle/product/11.1.0/db_1/dbs/[oracle@vserver1 dbs]$ ls -ltrtotal 64-rw-r–r– 1 oracle dba 8385 Sep 11 1998 init.ora-rw-r–r– 1 oracle dba 12920 May 2 2001 initdw.ora-rw-rw—- 1 oracle dba 1544 Feb 13 2008 hc_orcl.dat-rw-rw—- 1 oracle dba 1544 Aug 25 2008 hc_+ASM.dat-rw-r—– 1 oracle dba 1536 Aug 25 2008 orapw+ASM-rw-r—– 1 oracle dba 24 Aug 25 2008 lk+ASM-rw-r—– 1 oracle dba 1536 Aug 25 2008 spfile+ASM.ora-rw-r—– 1 oracle dba 24 Aug 25 2008 lkORCL-rw-rw—- 1 oracle dba 962 Feb 16 04:02 ab_+ASM.dat-rw-r—– 1 oracle dba 1536 Feb 16 04:07 orapworcl-rw-r—– 1 oracle dba 990 Feb 16 04:24 initorcl.oraKonfigurace a nastavení cest pro archívní souborySQL> alter system set log_archive_config=’dg_config=(orcl,orclsby1)‘;System altered.Nastavení druhého umístění, kam se budou archívní soubory přenášet.SQL> alter system set log_archive_dest_2=’service=orclsby1 async valid_for=(online_logfile,primary_role) db_unique_name=orclsby1′;System altered.Kontrola nastaveníSQL> show parameter log_archive_configNAME TYPE VALUE———————————— ———– ——————————log_archive_config string dg_config=(orcl,orclsby1)SQL> show parameter log_archive_dest_2NAME TYPE VALUE———————————— ———– ——————————log_archive_dest_2 string service=orclsby1 async valid_for=(online_logfile,primary_role) db_unique_name=orclsby1Nastaveni parametru pro fal_*Tento krok já dělám, v postupu jsem na OTN jsem ho nevidělSQL> alter system set fal_client=orcl;System altered.SQL> alter system set fal_server=orclsby+;System altered.SQL> show parameter falNAME TYPE VALUE———————————— ———– —————-fal_client string ORCLfal_server string ORCLSBY1Přepnutí databáze do archívního móduSQL> archive log listDatabase log mode No Archive ModeAutomatic archival DisabledArchive destination USE_DB_RECOVERY_FILE_DESTOldest online log sequence 9Current log sequence 11SQL> shutdown immediate…SQL> startup mount…Database mounted.SQL> alter database archivelog;Database altered.SQL> alter database open;Database altered.Nastavení TNSNAMES.ORAToto nastavení můžete provést i přímo změnou v souboru nebo jako je zde ukázáno pomocí nástroje netmgr. A je potřeba nastavit přklad jmen, abyste byli schopni se připojit na druhý server a službu orclsby1, která tam běží (bude běžet).Vše děláte na primárním serveru vserver1.Obrázky v dokumentu PDF:Úvodní obrazovkaVytvořte novou službu.Definujte protokolZadejte druhý server a port na kterém služba běží.Kontrola, že je vše správně nastaveno.Nastaveni listeru (listener.ora)Vše děláte na primárním serveru vserver1.Obrázky v dokumentu PDF:Přidání služby.Definice jména a domovského adresáře.Načtěte novou konfiguraci listeneru.ora[oracle@vserver1 admin]$ lsnrctl reloadTakhle nějak vypadá upravený soubor listener.ora[oracle@vserver1 admin]$ cat listener.ora# listener.ora Network Configuration File: /u01/app/oracle/product/11.1.0/db_1/network/admin/listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orclsby1)(ORACLE_HOME = /u01/app/oracle/product/11.1.0/db_1)(SID_NAME = orclsby1)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = vserver1)(PORT = 1521)))(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))Upravený soubor tnsnames.ora[oracle@vserver1 admin]$ cat tnsnames.ora# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.1.0/db_1/network/admin/tnsnames.ora# Generated by Oracle configuration tools.# tnsnames.ora Network Configuration File:ORCLSBY1 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vserver2)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orclsby1)))ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vserver1)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))Nastavení a kontrola standby databázeVše se dělá na serveru vserver2Překopírování a přejmenování souboru hesel.[oracle@vserver2 dbs]$ scp oracle@vserver1:/u01/app/oracle/product/11.1.0/db_1/dbs/orapworcl .oracle@vserver1’s password:orapworcl 100% 1536 1.5KB/s 00:00[oracle@vserver2 dbs]$ mv orapworcl orapworclsby1Vytvoření inicializačního souboru pro standby databázi.[oracle@vserver2 dbs]$ vi initorclsby1.ora[oracle@vserver2 dbs]$ cat initorclsby1.oradb_name=orclsby1*.compatible=’11.1.0.0.0’Nemáte-li nastavený parametr compatible na stejnou verzi jako je na primární databázi získáte chybové hlášení, které je popsáno na konci dokumentu.Nastartování standby databáze v režimu nomount[oracle@vserver2 dbs]$ export ORACLE_SID=orclsby1[oracle@vserver2 dbs]$ sqlplus / as sysdbaSQL*Plus: Release 11.1.0.6.0 – Production on Tue Feb 16 06:02:10 2010Copyright (c) 1982, 2007, Oracle. All rights reserved.Connected to an idle instance.SQL> startup nomount pfile=’/u01/app/oracle/product/11.1.0/db_1/dbs/initorclsby1.ora‘;ORACLE instance started.Překopírujte soubory listener.ora a tnsnames.ora z primární databáze.Takhle nějak by měl vypadat soubor TNSNAMES.ORA[oracle@vserver2 admin]$ cat tnsnames.ora# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.1.0/db_1/network/admin/tnsnames.ora# Generated by Oracle configuration tools.# tnsnames.ora Network Configuration File:ORCLSBY1 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vserver2)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orclsby1)(UR=A)))ORCL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = vserver1)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))Nemáte-li nastavený parametr UR=A nepřipojíte se poté ze serveru vserver1 na službu, která je v nomount režimu.Takhle nějak by měl vypadat soubor LISTENER.ORA[oracle@vserver2 admin]$ cat listener.ora# listener.ora Network Configuration File: /u01/app/oracle/product/11.1.0/db_1/network/admin/listener.ora# Generated by Oracle configuration tools.SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orclsby1)(ORACLE_HOME = /u01/app/oracle/product/11.1.0/db_1)(SID_NAME = orclsby1)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = vserver2)(PORT = 1521)))(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))))Opět na primárním serveru (vserver1)Ověřte, že jste schopni se připojit na standby databázi z primární pomocí utility tnsping.[oracle@vserver1 dbs]$ . oraenvORACLE_SID = [orcl] ? orclThe Oracle base for ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1 is /u01/app/oracle[oracle@vserver1 dbs]$ tnsping orclsby1TNS Ping Utility for Linux: Version 11.1.0.6.0 – Production on 16-FEB-2010 06:04:38Copyright (c) 1997, 2007, Oracle. All rights reserved.Used parameter files:/u01/app/oracle/product/11.1.0/db_1/network/admin/sqlnet.oraUsed TNSNAMES adapter to resolve the aliasAttempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = vserver2)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = orclsby1)))OK (20 msec)Spusťte RMANa a vytvořte standby databázi k databázi orclPřipojte se do RMANa[oracle@vserver1 dbs]$ rmanRecovery Manager: Release 11.1.0.6.0 – Production on Tue Feb 16 06:09:28 2010Copyright (c) 1982, 2007, Oracle. All rights reserved.Připojte se k zdrojové databázi orclRMAN> connect target sys/oracleconnected to target database: ORCL (DBID=1191435922)Připojte se k cílové databázi orclsby1RMAN> connect auxiliary sys/oracle@orclsby1connected to auxiliary database: ORCLSBY1 (not mounted)Spusťte skript, který vytvoří standby databáziParametry se kterými vytváříte spfile pro standby databázi mužete zadat i přímo do init souboru, který jste vytvářeli dříve, ale takto je to taky možné.RMAN> run {allocate channel prmy1 type disk;allocate channel prmy2 type disk;allocate channel prmy3 type disk;allocate channel prmy4 type disk;allocate auxiliary channel stby type disk;duplicate target database for standby from active databasespfileparameter_value_convert ‚orcl‘,’orclsby1’set db_unique_name=’orclsby1’set db_file_name_convert=’orcl‘,’orclsby1’set log_file_name_convert=’orcl‘,’orclsby1’set control_files=’/u01/app/oracle/product/11.1.0/db_1/dbs/control_orclsby1.ctl’set log_archive_max_processes=’5’set fal_client=’orclsby1’set fal_server=’orcl’set standby_file_management=’AUTO’set log_archive_config=’dg_config=(orcl,orclsby1)’set log_archive_dest_1=’service=orcl ASYNCvalid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=orcl‘;}Po dokončení je potřeba ještě aktivovat aplikování archívních souborů na standby databázi. (vserver2)SQL> alter database recover managed standby database using current logfile disconnect;Database altered.V databázi orcl můžete provést několikrát log switch, abyste si ověřili, že dojde k překopírování na druhý server a jejich aplikaci v databázi orclsby1.orclSQL> alter system switch logfile;System altered.orclsby1SQL> select sequence#, applied from v$archived_log order by sequence#;SEQUENCE# APP———- —14 YES15 YES16 YES17 YES18 YES19 YES20 NO7 rows selected.SQL> /SEQUENCE# APP———- —14 YES15 YES16 YES17 YES18 YES19 YES20 YES21 YES8 rows selected.Tak a máte implemetované disaster recovery. V dalším článku vám ukáži, jak lze nastavit Data Guard pro jednoduché přepínání mezi primární a standby databázi.Celý postup plus screenshoty obrazovek a řešení chyb je v přiloženém dokumentu PDF.