20
1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.c Web Version

1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

Embed Size (px)

Citation preview

Page 1: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

1 © 2006 Julian Dyke

LogicalStandbyJulian Dyke

Independent Consultant

juliandyke.com

Web Version

Page 2: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

2

© 2006 Julian Dykejuliandyke.com

LogicalStandby

Page 3: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

3

© 2006 Julian Dykejuliandyke.com

Standby DatabaseARCH Redo Transmission

ARC0 ARC1

OnlineRedoLog

LGWR RFS

StandbyRedoLog

ARCn

ArchivedRedoLogs

MRPLSP

StandbyDatabase

PrimaryDatabase

LOG_ARCHIVE_DEST_1

LOG

_AR

CH

IVE

_DE

ST_

2

Primary Database Standby Database

ArchivedRedoLogs

Page 4: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

4

© 2006 Julian Dykejuliandyke.com

Standby DatabaseLGWR (ASYNC) Redo Transmission

ArchivedRedoLogs

ARCn

RFS

StandbyRedoLog

ARCn

ArchivedRedoLogs

MRPLSP

StandbyDatabase

PrimaryDatabase

LOG_ARCHIVE_DEST_1

Primary Database Standby Database

LNSn

LGWR

OnlineRedoLog

Page 5: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

5

© 2006 Julian Dykejuliandyke.com

Standby DatabaseLGWR (SYNC) Redo Transmission

ArchivedRedoLogs

ARCn

OnlineRedoLog

RFS

StandbyRedoLog

ARCn

ArchivedRedoLogs

MRPLSP

StandbyDatabase

PrimaryDatabase

LOG_ARCHIVE_DEST_1

Primary Database Standby Database

LNSnLGWR

Page 6: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

6

© 2006 Julian Dykejuliandyke.com

Logical StandbyPreparation Used two separate servers

london1 and reading1

Used DBCA to create one database on primary server PRIMARY

Archiving must be enabled NOLOGGING must be disabled

Installed SCOTT/TIGER schema $ORACLE_HOME/rdbms/admin/utlsampl.sql

Created physical standby on reading1

SQL> ALTER DATABASE FORCE LOGGING;

Page 7: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

7

© 2006 Julian Dykejuliandyke.com

Physical StandbyPreparation On both servers, configure TNSNAMES.ORA

LONDON =(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = london1)(PORT = 1521))(CONNECT_DATA =

(SERVER = DEDICATED)(SERVICE_NAME = LONDON)

))

READING =(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = reading1)(PORT = 1521))(CONNECT_DATA =

(SERVER = DEDICATED)(SERVICE_NAME = READING)

))

Page 8: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

8

© 2006 Julian Dykejuliandyke.com

Physical StandbyPreparation On primary server create backup location

mkdir /u01/oradata/PRIMARY/backup;

On primary server run RMAN to backup database

$ORACLE_HOME/bin/rman NOCATALOG TARGET sys/oracle@PRIMARY

In RMAN configure backup

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/oradata/PRIMARY/backup/%F';

CONFIGURE CHANNEL 1 DEVICE TYPE DISK CONNECT 'sys/oracle@PRIMARY';

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/admin/PRIMARY/backup/snapcf_PRIMARY.f';

Page 9: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

9

© 2006 Julian Dykejuliandyke.com

Physical StandbyPreparation In RMAN backup database

BACKUP FORMAT '/u01/oradata/PRIMARY/backup/%d_D_%T_%u_s%s_p%p' DATABASE;

BACKUP CURRENT CONTROLFILE FOR STANDBY FORMAT '/u01/oradata/PRIMARY/backup/%d_C_%U';

SQL "ALTER SYSTEM ARCHIVE LOG CURRENT";

BACKUPFILESPERSET 10ARCHIVELOG ALLFORMAT '/u01/oradata/PRIMARY/backup/%d_A_%T_%u_s%s_p%p';

In RMAN create controlfile for standby database

In RMAN switch and archive current online redo log

In RMAN backup archived redo logs

Page 10: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

10

© 2006 Julian Dykejuliandyke.com

Physical StandbyPreparation On standby server create administrative directories

$ mkdir $ORACLE_BASE/admin/PRIMARY;$ mkdir $ORACLE_BASE/admin/PRIMARY/adump;$ mkdir $ORACLE_BASE/admin/PRIMARY/bdump;$ mkdir $ORACLE_BASE/admin/PRIMARY/cdump;$ mkdir $ORACLE_BASE/admin/PRIMARY/dpdump;$ mkdir $ORACLE_BASE/admin/PRIMARY/pfile;$ mkdir $ORACLE_BASE/admin/PRIMARY/udump;

On standby server create database location

$ mkdir /u01/oradata/PRIMARY/arch

On standby server create backup location

$ mkdir /u01/oradata/PRIMARY/backup;

$ mkdir /u01/oradata/PRIMARY

On standby server create archived redo log location

Page 11: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

11

© 2006 Julian Dykejuliandyke.com

Physical StandbyPreparation On standby server create password file

Copy SPFILE from primary to standby

scp london1:$ORACLE_HOME/dbs/spfilePRIMARY.ora \ reading1:$ORACLE_HOME/dbs

$ORACLE_HOME/bin/orapwd \ file=$ORACLE_HOME/dbs/orapwPRIMARY \ password=oracle \

Note - initPRIMARY.ora is not required on either server

Page 12: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

12

© 2006 Julian Dykejuliandyke.com

Physical StandbyConfiguration On primary server set parameters

ALTER SYSTEM SET db_unique_name = LONDON SCOPE = SPFILE;

ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/u01/oradata/PRIMARY/arch'

SCOPE=SPFILE;

ALTER SYSTEM SET log_archive_dest_2 = 'SERVICE=READING VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=READING'

SCOPE=SPFILE;

ALTER SYSTEM SET fal_client = LONDON SCOPE = SPFILE;

ALTER SYSTEM SET fal_server = READING SCOPE = SPFILE;

ALTER SYSTEM SET standby_file_management = AUTO SCOPE = SPFILE;

Restart the instance

Page 13: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

13

© 2006 Julian Dykejuliandyke.com

Physical StandbyConfiguration On standby server configure LISTENER.ORA

SID_LIST_LISTENER_SERVER4 =(SID_LIST =

(SID_DESC =(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)(SID_NAME = PRIMARY)

))

Reload the listener

$ lsnrctl reload

Start the standby instance (NOMOUNT)

$ export ORACLE_SID=PRIMARY$ sqlplus / as sysdbaSQL> startup nomount

Page 14: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

14

© 2006 Julian Dykejuliandyke.com

Physical StandbyConfiguration On standby server set parameters

ALTER SYSTEM SET db_unique_name = READING SCOPE = SPFILE;

ALTER SYSTEM SET log_archive_dest_1 = 'LOCATION=/u01/oradata/PRIMARY/arch'

SCOPE = SPFILE;

ALTER SYSTEM SET log_archive_dest_2 = 'SERVICE=LONDON VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=LONDON'

SCOPE=SPFILE;

ALTER SYSTEM SET fal_client = READING SCOPE = SPFILE;

ALTER SYSTEM SET fal_server = LONDON SCOPE = SPFILE;

ALTER SYSTEM SET standby_file_management = AUTO SCOPE = SPFILE;

Restart the instance

Page 15: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

15

© 2006 Julian Dykejuliandyke.com

Physical StandbyConfiguration On primary server run RMAN connecting to standby server as

AUXILIARY

$ORACLE_HOME/bin/rman NOCATALOG TARGET / AUXILIARY sys/oracle@"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=reading1)(PORT=1521))(CONNECT_DATA=(SID=PRIMARY)))"

Run the following command to clone the database backup on the standby server

RMAN> DUPLICATE TARGET DATABASE FOR STANDBY DORECOVER NOFILENAMECHECK;

Page 16: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

16

© 2006 Julian Dykejuliandyke.com

Physical StandbyConfiguration On standby server restart the instance

SQL> SHUTDOWN IMMEDIATE

SQL> STARTUP NOMOUNT

SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

Mount the standby database

Start managed recovery

Page 17: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

17

© 2006 Julian Dykejuliandyke.com

Logical Standby Configuration On standby server cancel managed recovery

SQL> ALTER SYSTEM SET log_archive_dest_2 = 'SERVICE=READING

VALID_FOR=(ONLINE_LOGFILES,STANDBY_ROLE) DB_UNIQUE_NAME=READING'

SCOPE=SPFILE;

On primary server modify the LOG_ARCHIVE_DEST_2 parameter

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;

Page 18: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

18

© 2006 Julian Dykejuliandyke.com

Logical Standby Configuration On primary server build the logical standby dictionary

SQL> EXECUTE LOGSTDBY.BUILD;

For a default database this generated about 8MB redo and updated the following objects:

SYS.LOGMNRG_SEED$ SYS.LOGMNRG_TYPE$

SYS.LOGMNRG_DICTIONARY$ SYS.LOGMNRG_COLTYPE$

SYS.LOGMNRG_OBJ$ SYS.LOGMNRG_ATTRIBUTE$

SYS.LOGMNRG_TAB$ SYS.LOGMNRG_LOB$

SYS.LOGMNRG_COL$ SYS.LOGMNRG_CDEF$

SYS.LOGMNRG_ATTRCOL$ SYS.LOGMNRG_CCOL$

SYS.LOGMNRG_TS$ SYS.LOGMNRG_ICOL$

SYS.LOGMNRG_IND$ SYS.LOGMNRG_LOGFRAG$

SYS.LOGMNRG_USER$ SYS.LOGMNRG_INDPART$

SYS.LOGMNRG_TABPART$ SYS.LOGMNRG_BUILDLOG

Page 19: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

19

© 2006 Julian Dykejuliandyke.com

Logical Standby Configuration On standby server enable recovery and change the name of

the standby database

SQL> ALTER DATABASE RECOVER TO LOGICAL STANDBY standby;

On standby server create a new password file

$ORACLE_HOME/bin/orapwd file=$ORACLE_HOME/dbs/orapwSTANDBY \password=oracle

On standby server restart the instance and reset the logs

SQL> SHUTDOWN IMMEDIATESQL> STARTUPSQL> ALTER DATABASE OPEN RESETLOGS;

On standby server start SQL apply

SQL> ALTER DATABASE START LOGICAL STANDBY APPLY;

Page 20: 1 © 2006 Julian Dyke Logical Standby Julian Dyke Independent Consultant juliandyke.com Web Version

20

© 2006 Julian Dykejuliandyke.com

Thank you for your interest

[email protected]