ITPub博客

首页 > 数据库 > Oracle > 同机物理standby配制

同机物理standby配制

原创 Oracle 作者:outdo 时间:2007-03-20 14:08:08 0 删除 编辑
今天参考着http://yangtingkun.itpub.net/post/468/267555 做了一下将物理STANDBY和主库部署在同一台服务器上的过程.过程如下,但仍有好多地方不慎明白.先把大概步骤贴上来,供慢慢研究.[@more@]


USER ID_SESSION SCN HOST LOCAL NOW
---------- --------------- ---------- --------------- --------------- -----------------
OUTDO 20,49912 913135088 192.168.1.1 172.16.1.187 20070320 09:20:16

SQL> conn sys/dxy@lab as sysdba
已连接。
--
SQL> SELECT DBID, NAME, LOG_MODE, FORCE_LOGGING FROM V$DATABASE
2 /

DBID NAME LOG_MODE FOR
---------- --------- ------------ ---
1060092665 LAB ARCHIVELOG YES

SQL> SELECT DBID, NAME, LOG_MODE, FORCE_LOGGING FROM V$DATABASE;

DBID NAME LOG_MODE FOR
---------- --------- ------------ ---
1060092665 LAB ARCHIVELOG YES

--查看主库已经是归档模式,而且也已经设置FORCE LOGGING。如果没有,用ALTER DATABASE FORCE LOGGING;

--将主数据库的数据文件,重做日志文件拷贝到standby数据库响应目录上.

SQL> SELECT NAME FROM V$DATAFILE
2 UNION ALL
3 SELECT NAME FROM V$TEMPFILE
4 UNION ALL
5 SELECT MEMBER FROM V$LOGFILE;

NAME
------------------------------------------------------------------------------------------------------------------------------------------------------
E:ORACLEORADATALABSYSTEM01.DBF
E:ORACLEORADATALABUNDOTBS01.DBF
E:ORACLEORADATALABINDX01.DBF
E:ORACLEORADATALABTOOLS01.DBF
E:ORACLEORADATALABUSERS01.DBF
E:ORACLEORADATALABLOGMNRTS.DBF
E:ORACLEORADATALABTEMP01.DBF
E:ORACLEORADATALABREDO01.LOG
E:ORACLEORADATALABREDO02.LOG
E:ORACLEORADATALABREDO03.LOG

已选择10行。

SQL>
SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> HOST COPY E:ORACLEORADATALAB*.* E:ORACLEORADATASTD

--创建standby数据库控制文件.并拷贝到响应目录.
SQL> startup
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL>
SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS 'E:ORACLEORADATASTDCONTROL01.CTL' REUSE;

数据库已更改。

--创建standby数据库一些目录.
SQL> HOST MD E:oracleadminstdBDUMP

SQL> HOST MD E:oracleadminstdCDUMP

SQL> HOST MD E:oracleadminstdUDUMP

SQL> HOST MD E:oracleadminstdPFILE

--从主数据库中创建standby参数文件
SQL> CREATE PFILE = 'E:oracleadminstdPFILEINITSTD.ORA' FROM SPFILE;

文件已创建。

SQL> HOST MD E:ORACLEORADATASTDSTANDBYARCHIVE

SQL> HOST MD E:ORACLEORADATASTDARCHIVE

--在Windows环境,建立一个服务,配置一下listener.ora 既可启动一个新的进程.
SQL> HOST ORADIM -NEW -SID LABSTD -STARTMODE MANUAL

--修改$ORACLE_HOME/network/admin目录下的listener.ora文件,在SID_LIST中添加下列信息,并重启监听:
(SID_DESC =
(ORACLE_HOME = E:oracleora92)
(SID_NAME = labstd)
)

SQL> HOST LSNRCTL STOP

SQL> HOST LSNRCTL START

--修改从库中的$ORACLE_HOME/network/admin目录下的sqlnet.ora文件,添加下列参数,用以检测死连接:

SQLNET.EXPIRE_TIME=2
--修改主库和从库中的$ORACLE_HOME/network/admin目录下的tnsnames.ora文件,添加下面的配置
LABSTD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = chsi-outdo)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = labstd)
)
)
--启动standby数据库,并且创建spfile,这里需要重新创建stantby数据库密码文件.修改从库的初始化参数,需要修改或添加下面的记录:

*.background_dump_dest='E:oracleadminstdbdump'
*.compatible='9.2.0.0.0'
*.control_files='E:oracleoradatastdcontrol01.ctl','E:oracleoradatastdcontrol02.ctl','E:oracleoradatastdcontrol03.ctl'
*.core_dump_dest='E:oracleadminstdcdump'
*.db_block_size=8192
*.db_cache_size=25165824
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='lab'
*.fast_start_mttr_target=300
*.hash_join_enabled=TRUE
*.instance_name='labstd'
*.java_pool_size=0
*.large_pool_size=8388608
*.log_archive_dest_1='LOCATION=E:oracleoradatastdarchive'
*.log_archive_format='%t_%s.dbf'
*.log_archive_start=true
*.open_cursors=300
*.pga_aggregate_target=25165824
*.processes=150
*.query_rewrite_enabled='FALSE'
*.remote_login_passwordfile='EXCLUSIVE'
*.resource_manager_plan='SYSTEM_PLAN'
*.shared_pool_size=50331648
*.sort_area_size=524288
*.sql_trace=TRUE
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='E:oracleadminstdudump'
db_file_name_convert=('E:oracleoradatalab', 'E:oracleoradatastd')
log_file_name_convert=('E:oracleoradatalab', 'E:oracleoradatastd')
standby_file_management=AUTO
remote_archive_enable=TRUE
lock_name_space=labstd
standby_archive_dest='e:oracleoradatastdstandbyarchive'

--如果STANDBY数据库的数据文件、日志文件所在目录和主库不同,那么就需要在从库的初始化参数中设置DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT参数。这个例子由于主库和STANDBY在同一个服务器上,所以必须设置这两个参数。
--当主库和STANDBY在一个服务器上,LOCK_NAME_SPACE参数是必须要设置的。这个参数的值和INSTANCE_NAME保持一致,但是要和主库的INSTANCE_NAME有所区别。


SQL> conn sys@labstd as sysdba
ERROR:
ORA-01031: insufficient privileges


警告: 您不再连接到 ORACLE。
SQL> host orapwd file=E:oracleora92databasepwdlabstd.ora password=dxy entries=5

SQL> conn sys/dxy@labstd as sysdba
已连接到空闲例程。
SQL> CREATE SPFILE FROM PFILE = 'E:oracleadminstdPFILEINITSTD.ORA';
CREATE SPFILE FROM PFILE = 'E:oracleadminstdPFILEINITSTD.ORA'
*
ERROR 位于第 1 行:
ORA-01078: failure in processing system parameters
LRM-00116: syntax error at ')' following 'E:oracleoradat'


SQL> CREATE SPFILE FROM PFILE = 'E:oracleadminstdPFILEINITSTD.ORA';

文件已创建。

--参数文件创建后,
SQL> STARTUP NOMOUNT
ORACLE 例程已经启动。

Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

数据库已更改。

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

数据库已更改。

--从库现在已经启动为应用归档模式,下面还需要设置一下主库参数:
SQL> conn sys/dxy@lab as sysdba
已连接。
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_2 = 'SERVICE=LABSTD';

系统已更改。

SQL> show parameter log_archive

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest string
log_archive_dest_1 string LOCATION=E:oracleoradatalab
archive
log_archive_dest_10 string
log_archive_dest_2 string SERVICE=LABSTD
log_archive_dest_3 string
log_archive_dest_4 string
log_archive_dest_5 string
log_archive_dest_6 string
log_archive_dest_7 string
log_archive_dest_8 string
log_archive_dest_9 string
log_archive_dest_state_1 string enable
log_archive_dest_state_10 string enable
log_archive_dest_state_2 string enable
log_archive_dest_state_3 string enable
log_archive_dest_state_4 string enable
log_archive_dest_state_5 string enable
log_archive_dest_state_6 string enable
log_archive_dest_state_7 string enable
log_archive_dest_state_8 string enable
log_archive_dest_state_9 string enable
log_archive_duplex_dest string
log_archive_format string %t_%s.dbf
log_archive_max_processes integer 2
log_archive_min_succeed_dest integer 1
log_archive_start boolean TRUE
log_archive_trace integer 0
SQL> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2 = ENABLE;

系统已更改。

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

系统已更改。

--验证一下物理STANDBY是否已经成功建立:
SQL> ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';

会话已更改。

SQL> SELECT SEQUENCE#, DEST_ID, FIRST_TIME, NEXT_TIME
2 FROM V$ARCHIVED_LOG
3 WHERE FIRST_TIME > SYSDATE - 1
4 ORDER BY SEQUENCE#;

未选定行

SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;

系统已更改。

SQL> SELECT SEQUENCE#, DEST_ID, FIRST_TIME, NEXT_TIME
2 FROM V$ARCHIVED_LOG
3 WHERE FIRST_TIME > SYSDATE - 1
4 ORDER BY SEQUENCE#;

SEQUENCE# DEST_ID FIRST_TIME NEXT_TIME
---------- ---------- ------------------- -------------------
29 1 2007-03-20 10:45:11 2007-03-20 10:46:32
29 2 2007-03-20 10:45:11 2007-03-20 10:46:32

SQL> conn sys/dxy@labstd as sysdba
已连接。
SQL> SELECT SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

SEQUENCE# APP
---------- ---
28 YES
29 YES

--大概步骤如此,不过仍有许多步骤.比如recovery standtby数据库.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/167606/viewspace-905971/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 俺的OCP之路
请登录后发表评论 登录
全部评论

注册时间:2009-03-10

  • 博文量
    30
  • 访问量
    775792