Professional Documents
Culture Documents
Oracle 10g Data Guard 创建与维护
Oracle 10g Data Guard 创建与维护
Oracle 10g Data Guard 创建与维护
Maximum availability:
Maximum protection Maximum protection
Maximum
performance
Maximum performance:Oracle
Data Guard
Data Guard
SQL> select * from v$option where parameter = 'Managed Standby';
PARAMETER
VALUE
-------------------- ---------Managed Standby
TRUE
SQL>
D:>orapwd
file=D:\oracle\product\10.2.0\db_1\database\PWDauxdb.ora
password=oracle
entries=5;
orcl.__streams_pool_size=0
*.audit_file_dest='D:\oracle\product\10.2.0\admin\orcl\adump'
*.background_dump_dest='D:\oracle\product\10.2.0\admin\orcl\bdump'
*.compatible='10.2.0.1.0'
*.control_files='D:\oracle\product\10.2.0\oradata\orcl\CONTROL01.CTL','D:\oracle\product\10.2.
0\oradata\orcl\CONTROL02.CTL','D:\oracle\product\10.2.0\oradata\orcl\CONTROL03.CTL'
*.core_dump_dest='D:\oracle\product\10.2.0\admin\orcl\cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='orcl'
*.db_recovery_file_dest_size=2147483648
*.db_recovery_file_dest='d:\oracle\product\10.2.0\flash_recovery_area'
*.db_unique_name='orcl'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.job_queue_processes=10
*.log_archive_config='dg_config=(orcl,auxdb)'
*.log_archive_dest_1='location=D:\oracle\product\10.2.0\oradata\orcl\archive
VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'
*.log_archive_dest_2='service=AUX VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
DB_UNIQUE_NAME=auxdb'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.log_archive_max_processes=1
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:\oracle\product\10.2.0\admin\orcl\udump'
*.fal_service='aux'
*.fal_client='orcl'
*.standby_archive_dest='D:\oracle\product\10.2.0\oradata\orcl\standbyarchive'
*.standby_file_management=auto
3 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
4 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
5 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
6 D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEST01.DBF
6
1 copy
SQL>ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'd:\bak\standby.ctl';
file 123456 copy d:\bak
2 rman copy
C:\Documents and Settings\Administrator.XY>rman target/
: Release 10.2.0.1.0 - Production on 3 15 14:42:25 2007
Copyright (c) 1982, 2005, Oracle.
: ORCL (DBID=1140649303, )
RMAN> copy datafile 1 to 'd:\bak\system01.dbf',datafile 2 to 'd:\bak\undotbs01.d
bf',datafile 3 to 'd:\bak\sysaux01.dbf',datafile 4 to 'd:\bak\users01.dbf',dataf
ile 5 to 'd:\bak\example01.dbf',datafile 6 to 'd:\bak\test01.dbf', current contr
olfile for standby to 'd:\bak\standby.ctl';
2>
backup 15-3 -07
: ORA_DISK_1
ORA_DISK_1: sid=155 devtype=DISK
ORA_DISK_1:
ORA_DISK_1: , : 00:00:01
ORA_DISK_1:
Data Guard
2
3
thread
LGWR
thread 6
SQL>
SELECT
GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS
FROM
V$STANDBY_LOG;
GROUP#
THREAD# SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ---------4
1
0 NO ACTIVE
5
1
0 YES UNASSIGNED
6
1
0 YES UNASSIGNED
7
1
0 YES UNASSIGNED
listener.ora tnsnames.ora
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = auxdb)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = auxdb)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.199)(PORT = 1521))
)
)
tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.199)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
aux =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.199)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SID = auxdb)
)
)
pfile
spfile
:auxdb
initauxdb.ora
*.db_name=orcl
*.db_unique_name=auxdb
*.DB_FILE_NAME_CONVERT=('d:\oracle\product\10.2.0\oradata\orcl','d:\bak')
*.LOG_FILE_NAME_CONVERT=('d:\oracle\product\10.2.0\oradata\orcl','d:\bak')
*.control_files='D:\bak\standby.CTL'
*.REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
*.compatible='10.2.0.1.0'
*.db_block_size=8192
*.sga_target=250000000
*.background_dump_dest=d:\bak\bdump
*.core_dump_dest=d:\bak\cdump
*.user_dump_dest=d:\bak\udump
*.standby_archive_dest='d:\bak\standbyarchive'
*.fal_server='orcl'
*.fal_client='aux'
*.standby_file_management='AUTO'
*.log_archive_config='dg_config=(orcl,auxdb)'
*.log_archive_dest_1='location=D:\bak\archive VALID_FOR=(ALL_LOGFILES,ALL_ROLES)
DB_UNIQUE_NAME=auxdb'
*.LOG_ARCHIVE_DEST_2='SERVICE=orcl
LGWR
ASYNC
VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'
SQL> create spfile from pfile;
SQL>
SQL>
SELECT
SEQUENCE#,
FIRST_TIME,
NEXT_TIME,APPLIED
V$ARCHIVED_LOG ORDER BY SEQUENCE#
SEQUENCE# FIRST_TIME
NEXT_TIME
APP
---------- -------------- -------------- --1 15-3 -07
15-3 -07
NO
24 15-3 -07
15-3 -07
YES
25 15-3 -07
15-3 -07
YES
26 15-3 -07
15-3 -07
YES
FROM
18
1 standby_archive_dest/standby_file_management
SQL>
alter
system
set
standby_archive_dest='D:\oracle\product\10.2.0\oradata\orcl\standbyarchive' scope=both;
SQL> alter system set standby_file_management='auto' scope=both;
TYPE
VALUE
session active
SQL> SELECT SID, PROCESS, PROGRAM FROM V$SESSION WHERE TYPE = 'USER'
AND SID <>
(SELECT DISTINCT SID FROM V$MYSTAT);
SID PROCESS
PROGRAM
---- ---------- --------------148 2660:2244 plsqldev.exe
154 2660:2244 plsqldev.exe
158 2660:2244 plsqldev.exe
SQL>
1 plsql
SQL> SELECT SID, PROCESS, PROGRAM FROM V$SESSION WHERE TYPE = 'USER'
AND SID <>
(SELECT DISTINCT SID FROM V$MYSTAT);
NAME
TYPE
VALUE
------------------------------------ ----------- -----------------------------job_queue_processes
integer
10
SQL> alter system set job_queue_processes=0;
SQL> SELECT SID, PROCESS, PROGRAM FROM V$SESSION WHERE TYPE = 'USER'
AND SID <>
(SELECT DISTINCT SID FROM V$MYSTAT);
SID PROCESS
PROGRAM
---- ---------- --------------148 2660:2244 plsqldev.exe
154 2660:2244 plsqldev.exe
158 2660:2244 plsqldev.exe
SQL> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
-------------------SESSIONS ACTIVE
CJQ0
job
JOB_QUEUE_PROCESSES 0
spfile
QMN0
AQ_TM_PROCESSES 0
spfile
DBSNMP
oem
4 mount
SQL> shutdown immediate
ORA-01507:
ORACLE
SQL> startup mount;
ORACLE
Total System Global Area 167772160 bytes
Fixed Size
1247900 bytes
Variable Size
75498852 bytes
Database Buffers
88080384 bytes
Redo Buffers
2945024 bytes
5
SQL> select t.PROTECTION_MODE,t.DATABASE_ROLE from v$database t;
PROTECTION_MODE
DATABASE_ROLE
-------------------- ---------------MAXIMUM PERFORMANCE PHYSICAL STANDBY
6
SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;
PROTECTION_MODE
-------------------MAXIMUM PROTECTION
SQL> alter database commit to switchover to physical standby;
alter database commit to switchover to physical standby
*
1 :
ORA-01093: ALTER DATABASE CLOSE
orcl
SQL> alter database commit to switchover to physical standby;
orcl
SQL> select t.PROTECTION_MODE,t.DATABASE_ROLE from v$database t;
PROTECTION_MODE
DATABASE_ROLE
-------------------- ---------------MAXIMUM PROTECTION PHYSICAL STANDBY
SQL>
2 auxdb
auxdb
SQL> startup
ORACLE
Total System Global Area 251658240 bytes
Fixed Size
1248380 bytes
Variable Size
83886980 bytes
Database Buffers
163577856 bytes
Redo Buffers
2945024 bytes
ORA-03113:
alert_auxdb.log
Errors in file d:\bak\bdump\auxdb_lgwr_2040.trc:
ORA-16086: standby database does not contain available standby log files
Thu Mar 22 16:37:37 2007
LGWR: Error 16086 verifying archivelog destination LOG_ARCHIVE_DEST_2
Thu Mar 22 16:37:37 2007
Destination LOG_ARCHIVE_DEST_2 is UNSYNCHRONIZED
LGWR: Error 16086 disconnecting from destination LOG_ARCHIVE_DEST_2 standby host
'orcl'
LGWR: Continuing...
LGWR: Minimum of 1 applicable standby database required
Thu Mar 22 16:37:41 2007
Errors in file d:\bak\bdump\auxdb_lgwr_2040.trc:
ORA-16072: a minimum of one standby database destination is required
standby redo
3 orcl standby redo
orcl
SQL> alter database add standby logfile 'd:\oracle\product\10.2.0\oradata\orcl\r
edo04.log' size 50m;
SQL>
4 auxdb
auxdb
SQL> conn /as sysdba
SQL> startup
ORACLE
Total System Global Area 251658240 bytes
Fixed Size
1248380 bytes
Variable Size
83886980 bytes
Database Buffers
163577856 bytes
Redo Buffers
2945024 bytes
COMPATIBLE='10.2.0.1.0': redo
DB_FILE_NAME_CONVERT=:
DB_UNIQUE_NAME=:
LOG_ARCHIVE_CONFIG
FAL_CLIENT= aux
FAL_SERVER orcl
LOG_ARCHIVE_CONFIG='DG_CONFIG=( db_unique_name, db_unique_name)'
LOG_ARCHIVE_DEST_n:
1:
MANDATORYREOPENMAX_FAILURE
MANDATORY REOPEN=5 MAX_FAILURE=3 5 3
3
*.log_archive_dest_2='service=AUX VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)
MANDATORY REOPEN=5 MAX_FAILURE=3 DB_UNIQUE_NAME=auxdb'
1 standby
SQL> SELECT MAX(R.SEQUENCE#) LAST_SEQ_RECD, MAX(L.SEQUENCE#)
LAST_SEQ_SENT FROM
2> V$ARCHIVED_LOG R, V$LOG L WHERE
3> R.DEST_ID=2 AND L.ARCHIVED='YES';
LAST_SEQ_RECD LAST_SEQ_SENT
------------- ------------7 10
2 primary
SQL> SELECT NAME FROM V$ARCHIVED_LOG WHERE THREAD#=1 AND DEST_ID=1
AND
2> SEQUENCE# BETWEEN 7 AND 10;
NAME
-------------------------------------------------------------------------------/primary/thread1_dest/arcr_1_7.arc
/primary/thread1_dest/arcr_1_8.arc
/primary/thread1_dest/arcr_1_9.arc
2
gap 1 Mail
olivenan@163.com
1
SQL>
SELECT
THREAD#,
LOW_SEQUENCE#,
HIGH_SEQUENCE#
FROM
V$ARCHIVE_GAP;
THREAD# LOW_SEQUENCE# HIGH_SEQUENCE#
---------- ------------- -------------1 90 92
2 copy standby_archive_dest