校长的博客 -- 凡事包容,凡事相信,凡事盼望,凡事忍耐。http://blog.yesky.com/Blog/eric1945/复制地址

安能摧眉折腰事权贵,使我不得开心颜!

控制面板
日历
<2008年10月>
SuMoTuWeThFrSa
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
留言簿(9)
文章分类
文章档案

 

(注意,有些细节与9i下面不同)

 

[主服务器]

一、将主库设为归档模式
1.备份初始化参数文件
sql> create pfile from spfile;

2.配置归档日志的名称格式
sql>alter system set log_archive_format='%S_%T_%R.log'  scope=spfile;

在10G中设置日志格式时,一定要加%R参数,否则一定会出错


3.配置归档位置
sql>alter system set log_archive_dest_1='location=/home1/orcl_arch' scope=spfile
在ORACLE 10G企业版里还可以配置多个归档路径,log_archvile_dest_n(其中n可以为1-10)

4. 置归档模式
将数据库正常关闭
sql>shutdown immediate
启动到MOUNT模式
SQL>startup mount
置为归档模式
SQL>alter database archivelog
打开数据库
SQL>alter database open
查看数据库是否归档
SQL> archive log list;
如果显示为ENABLE则表示已成功归档
或 SQL>select log_mode  from v$database;
如果为ARCHIVELOG则表示已成功归档

 

 

二、检查是否使用spfile,最好使用spfile,可以自动修改参数。
MSPDB >  show parameter spfile
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /home/oracle/product/10.2.0/db
                                                 _1/dbs/spfilemspdb.ora


三、设置主服务器的强行日志处理
SQL> ALTER DATABASE FORCE LOGGING;


四、查询V$dbfile获得数据文件信息
col name for a90;
set linesize 139;
select * from V$dbfile order by name;

     FILE# NAME
---------- ------------------------------------------------------------------------------------------
         7 /home/oracle/mspdb_data/mspdb_catalogspace_01.dbf
         8 /home/oracle/mspdb_data/mspdb_companyspace_01.dbf
         9 /home/oracle/mspdb_data/mspdb_defaultspace_01.dbf
         6 /home/oracle/mspdb_data/mspdb_indexspace_01.dbf
         5 /home/oracle/mspdb_data/mspdb_productspace_01.dbf
        10 /home/oracle/mspdb_data/mspdb_queuespace_01.dbf
         3 /home/oracle/oradata/mspdb/sysaux01.dbf
         1 /home/oracle/oradata/mspdb/system01.dbf
         2 /home/oracle/oradata/mspdb/undotbs01.dbf
         4 /home/oracle/oradata/mspdb/users01.dbf
        11 /home/oracle/product_data/MSPDB_UNDOTBS_A_01.DBF
        12 /home/oracle/product_data/MSPDB_UNDOTBS_B_01.DBF
        13 /home/oracle/product_data/MSPDB_UNDOTBS_B_02.DBF
        14 /home/oracle/product_data/MSPDB_UNDOTBS_B_03.DBF
       

五、 为主数据库添加"备用联机日志文件",这里要保证备日志文件与主库联机日志文件相同大小。

    添加备用日志文件是规则:
        备用日志最少应该比redo log 多一个。推荐的备重做日志数依赖于主数据库上的线程数。
        (每线程日志文件最大数目 + 1 ) * 线程数
 
  --------------
-- 在oracle10g下面,无论何种模式,都需要添加standby logfile(比源DB多一组)
-- 这一步十分重要!!
----------------------------

alter database add standby logfile
 group 7 ('/home2/oracle/oradata/mspdb/std_redo07a.log','/home2/oracle/oradata/mspdb/std_redo07b.log') size 100m REUSE,
 group 8 ('/home2/oracle/oradata/mspdb/std_redo08a.log','/home2/oracle/oradata/mspdb/std_redo08b.log') size 100m REUSE,
 group 9 ('/home2/oracle/oradata/mspdb/std_redo09a.log','/home2/oracle/oradata/mspdb/std_redo09b.log') size 100m REUSE,
 group 10 ('/home2/oracle/oradata/mspdb/std_redo10a.log','/home2/oracle/oradata/mspdb/std_redo10b.dbf') size 100m REUSE,
 group 11 ('/home2/oracle/oradata/mspdb/std_redo11a.log','/home2/oracle/oradata/mspdb/std_redo11b.dbf') size 100m REUSE,
 group 12 ('/home2/oracle/oradata/mspdb/std_redo12a.log','/home2/oracle/oradata/mspdb/std_redo12b.dbf') size 100m REUSE,
 group 13 ('/home2/oracle/oradata/mspdb/std_redo13a.log','/home2/oracle/oradata/mspdb/std_redo13b.dbf') size 100m REUSE;
       
       
[备用服务器]

推荐安装环境与主数据库一样,准备相应目录,
如日志文件路径,归档路径,参数文件路径,数据文件准备存放路径等
$cd $ORACLE_BASE
$mkdir -p admin/mspdb/bdump
$mkdir -p admin/mspdb/cdump
$mkdir -p admin/mspdb/udump


[oracle@Yy224 dbs]$ cat initmspdb.ora
mspdb.__db_cache_size=1644167168
mspdb.__java_pool_size=16777216
mspdb.__large_pool_size=16777216
mspdb.__shared_pool_size=452984832
mspdb.__streams_pool_size=0
*.audit_file_dest='/home2/oracle/admin/mspdb/adump'
*.background_dump_dest='/home2/oracle/admin/mspdb/bdump'
*.compatible='10.2.0.1.0'
*.core_dump_dest='/home2/oracle/admin/mspdb/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='mspdb'
*.db_recovery_file_dest='/home2/oracle/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='mspdb'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=mspdbXDB)'
*.job_queue_processes=10
*.log_archive_dest_1='location=/home2/arch_mspdb'
*.log_archive_format='%S_%T_%R.log'
*.open_cursors=3000
*.pga_aggregate_target=786432000
*.processes=1050
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2147483648
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/home2/oracle/admin/mspdb/udump'
*.log_file_name_convert='/home/oracle/oradata/mspdb','/home2/oracle/oradata/mspdb'
*.db_file_name_convert='/home/oracle/mspdb_data','/home2/oracle/mspdb_data','/home/oracle/oradata/mspdb','/home2/oracle/oradata/mspdb','/home/oracle/product_data','/home2/oracle/product_data'
#if change controlfile then edit this
*.control_files='/home2/oracle/admin/mspdb/mspdb_standby.ctl'
#standby database parameter
*.standby_file_management=AUTO
*.standby_archive_dest='/home2/arch_mspdb'
*.fal_server='MSPDB_PRIMARY'
*.fal_client='MSPDB_STANDBY'

 

[主数据库]

1、做一次完整的RMAN热备份

rman target /

RMAN>configure channel 1 device type disk maxpiecesize 2G;

RMAN> backup database format='/home2/hotbak/db_%U_%s.bak';

RMAN> sql "Alter System Archive Log Current";

RMAN> Backup filesperset 10 ArchiveLog all format='/home2/hotbak/log_%U_%s.bak';

 

-----------------------------------------------------------------------

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at ......
RMAN-06059: expected archived log not found, lost of archived log compromises recoverability
ORA-19625: error identifying file .........
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory

-----------------------------------------------------------------------


方法很简单,在rman下执行下面语句就解决了:

change archivelog all crosscheck ;

*********************************************************************************

 

2、传送相应的备份集到备用服务器

生成密钥,不要输入密码。
ssh-keygen -t rsa

将公用密钥分发到远端服务器上。
scp ~/.ssh/id_rsa.pub username@serveraddr:~/.ssh/authorized_keys
注意:authorized_keys文件确保为644,并且.ssh目录确保为755


3、生成备用服务器口令文件

$rm $ORACLE_HOME/dbs/orapw$ORACLE_SID

$orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=test entries=4

将生成的文件复制到备用库相应的位置

 

[两台服务器]

1、设定 listener.ora 文件,启动监听
[oracle@Yy224 admin]$ cat listener.ora
# Generated by Oracle configuration tools.
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 2.39.8.24)(PORT = 1522))
      )
    )
  )
 
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = mspdb)
      (ORACLE_HOME = /home2/oracle/product/10.2.0/db_1 )
      (SID_NAME = mspdb)
    )
  )

2、修改 tnsnames.ora 文件,确保包含下面的内容 (用于fal_server, fal_client参数)

PPDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MSPDB)
    )
  )
 
MSPDB_PRIMARY =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 2.39.8.21)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MSPDB)
    )
  )
 
MSPDB_STANDBY =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 2.39.8.24)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = MSPDB)
    )
  )


3、在主备节点用tnsping测试网络连通性

$ tnsping MSPDB_PRIMARY
 
$ tnsping MSPDB_STANDBY


在两台服务器上分别测试,确保都能成功!

 


[主数据库]

1、在主数据库创建备用服务器控制文件

SQL> alter database create standby controlfile as  '/home/oracle/admin/mspdb/mspdb_standby.ctl';
 
Database altered.


创建后将控制文件复制到备用数据库所在的控制文件目录下(以前面参数文件中设置的为准)。

 

[备用服务器]

1、启动备用数据库 (注意:用pfile文件启动成mount状态,不要open)

SQL> connect / as sysdba
Connected to an idle instance.

SQL>startup nomount pfile=?/dbs/initmspdb.ora;

SQL>alter database mount standby database;

SQL> select name,open_mode,PROTECTION_MODE,DATABASE_ROLE from v$database;
 
NAME          OPEN_MODE    PROTECTION_MODE                          DATABASE_ROLE
--------- ----------     ------------------------           ----------------
PPDB            MOUNTED        MAXIMUM PERFORMANCE              PHYSICAL STANDBY

 

2、恢复数据库

[oracle@Yy248 ~]$ rman target /
 
Recovery Manager: Release 9.2.0.4.0 - 64bit Production
 
Copyright (c) 1995, 2002, Oracle Corporation.  All rights reserved.
 
connected to target database: PPDB (DBID=708922967)

RMAN> restore database;

Starting restore at 24-SEP-07
 
using target database controlfile instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=13 devtype=DISK
channel ORA_DISK_1: starting datafile backupset restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
restoring datafile 00001 to /home1/oradata/ppdb/system01.dbf
... ...
channel ORA_DISK_1: restored backup piece 1
piece handle=/home1/backup/hotbak/db_01iso2bh_1_1_1.bak tag=TAG20070924T105233 params=NULL
channel ORA_DISK_1: restore complete
Finished restore at 24-SEP-07

RMAN> restore archivelog all;

Starting restore at 24-SEP-07
 
using channel ORA_DISK_1
channel ORA_DISK_1: starting archive log restore to default destination
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=89
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=90
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=91
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=92
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=93
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=94
channel ORA_DISK_1: restoring archive log
archive log thread=1 sequence=95
channel ORA_DISK_1: restored backup piece 1
piece handle=/home1/backup/hotbak/log_02iso2v1_1_1_2.bak tag=TAG20070924T110255 params=NULL
channel ORA_DISK_1: restore complete
Finished restore at 24-SEP-07
 
 
 
(如果出错,则:)
***************************************************************************
RMAN> list backup of archivelog all;
 
 
List of Backup Sets
===================
 
BS Key  Size       Device Type Elapsed Time Completion Time
------- ---------- ----------- ------------ ---------------
21      289M       DISK        00:00:19     07-NOV-07     
        BP Key: 21   Status: AVAILABLE   Tag: TAG20071107T134411
        Piece Name: /home1/hotbak/log_0nj0f19c_1_1_23.bak
 
  List of Archived Logs in backup set 21
  Thrd Seq     Low SCN    Low Time  Next SCN   Next Time
  ---- ------- ---------- --------- ---------- ---------
  1    1877    9479732746 07-NOV-07 9479744854 07-NOV-07
  1    1878    9479744854 07-NOV-07 9479756287 07-NOV-07
  1    1879    9479756287 07-NOV-07 9479968909 07-NOV-07
  1    1880    9479968909 07-NOV-07 9479968917 07-NOV-07
 
 
 
RMAN>  restore archivelog sequence between 1877 and 1880;


 ***************************************************************************
 
 
 


3、直接进入到管理恢复状态
SQL> alter database recover managed standby database disconnect from session;
 Database altered.
 
 进入管理恢复模式的标准语法为
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE [
  [ NO TIMEOUT | TIMEOUT [integer] ]
  [ NODELAY | DELAY [integer] ]
  [ DEFAULT DELAY ]
  [ NO EXPIRE | EXPIRE [integer] ]
  [ NEXT [integer] ]
  [ NOPARALLEL | PARALLEL [integer]]
  [ THROUGH { ALL | NEXT | LAST } SWITCHOVER ]
  [ THROUGH ALL ARCHIVELOG [ THREAD n ] SEQUENCE n ]
  [ FINISH [ SKIP [STANDBY LOGFILE] [NOWAIT | WAIT] ] ]
]


以下语句查看差异
SQL> SELECT THREAD#, LOW_SEQUENCE#, HIGH_SEQUENCE# FROM V$ARCHIVE_GAP;

到此为止,备用数据库的创建全部完成。

 

[主数据库]

[采用Arch 进程传送归档日志的最大性能模式]

在默认情况下,
Data guard就是最大性能模式,所以不需要采用其它额外的配置,只需要修改主数据库的第二个归档路径即可。

SQL>alter system set log_archive_dest_2='SERVICE=MSPDB_STANDBY REOPEN=60' scope=both;
SQL>alter system set log_archive_dest_state_2=enable scope=both;
SQL>alter system archive log current;

其中reopen表示了如果发生归档失败后,第二次重复的时间间隔(秒),这种方式是从8i以来一直采用的一种方式,
因为比较稳定,不影响数据库的性能,如果发生网络失败等原因,主数据库不会因为远程归档不成功而停下来。

 


[验证备用服务器是否工作]

可以通过视图查看日志应用情况
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME, APPLIED
          FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
         
 SEQUENCE# FIRST_TIM NEXT_TIME APP
---------- --------- --------- ---
        89 21-SEP-07 24-SEP-07 NO
        90 24-SEP-07 24-SEP-07 NO
        91 24-SEP-07 24-SEP-07 NO
        92 24-SEP-07 24-SEP-07 YES
        93 24-SEP-07 24-SEP-07 YES
        94 24-SEP-07 24-SEP-07 YES
        95 24-SEP-07 24-SEP-07 YES
        96 24-SEP-07 24-SEP-07 YES
 
 
 
[在备用服务器上添加备用日志文件]

1.
SQL> recover managed standby database cancel;
Media recovery complete.


2.
SQL>
alter database add standby logfile
  group 7 ('/home2/oracle/oradata/mspdb/std_redo07a.log','/home2/oracle/oradata/mspdb/std_redo07b.log')
  size 100m REUSE,
  group 8 ('/home2/oracle/oradata/mspdb/std_redo08a.log','/home2/oracle/oradata/mspdb/std_redo08b.log')
  size 100m REUSE,
  group 9 ('/home2/oracle/oradata/mspdb/std_redo09a.log','/home2/oracle/oradata/mspdb/std_redo09b.log')
  size 100m REUSE,
  group 10 ('/home2/oracle/oradata/mspdb/std_redo10a.log','/home2/oracle/oradata/mspdb/std_redo10b.dbf')
  size 100m REUSE,
  group 11 ('/home2/oracle/oradata/mspdb/std_redo11a.log','/home2/oracle/oradata/mspdb/std_redo11b.dbf')
  size 100m REUSE,
  group 12 ('/home2/oracle/oradata/mspdb/std_redo12a.log','/home2/oracle/oradata/mspdb/std_redo12b.dbf')
  size 100m REUSE,
  group 13 ('/home2/oracle/oradata/mspdb/std_redo13a.log','/home2/oracle/oradata/mspdb/std_redo13b.dbf')
  size 100m REUSE;


3.
SQL> SQL> recover managed standby database disconnect from session;
Media recovery complete.


[设置主服务器日志切换间隔]

MSPDB > show parameter archive_lag_target
 
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0


MSPDB > alter system set archive_lag_target=900 scope=both;
 
System altered.

 


 
 [日常管理]

1、备用服务器的管理模式与只读模式

1.1、启动到管理模式
SQL>shutdown immediate;
SQL>startup nomount pfile=?/dbs/initmspdb.ora;
SQL>alter database mount standby database;
SQL>alter database recover managed standby database disconnect from session;

1.2、启动到只读方式
SQL>shutdown immediate
SQL>startup nomount pfile=?/dbs/initmspdb.ora
SQL>alter database mount standby database
SQL>alter database open read only

1.3、从管理恢复模式转到只读模式
SQL>recover managed standby database cancel;
SQL>alter database open read only;
这个时候,可以给数据库增加数据文件

alter tablespace temp add tempfile '/home2/oracle/oradata/mspdb/temp01.dbf' size 200M;

1.4、从只读方式转到管理恢复方式
SQ>recover managed standby database disconnect from session;

 

(版权所有,转载请注明出处)


作者:校长 阅读() 评论()  编辑 发表于:2008-01-29 16:42
相关内容
文章评论

  • # 为什么: oracle10g配置data guard [step-by-step]
  • 非常支持你的观点,您也可以参考请问我的观点
    请问谁能帮忙翻译点有关JVM方面的东西,感激不尽。http://www.q25.cn/bs/6469272.html/
    翻译下这篇http://www.q25.cn/bs/4271684.html/
    PC Security Guard 3.1 PC安全哨兵有中文的吗http://www.q25.cn/bs/999974.html/
    guard.exe进程无法结束http://www.q25.cn/bs/6024782.html/
    1.10的 MF死灵怎么加点啊http://www.q25.cn/bs/3326711.html/
    谁知道曾单&quot;Van-Guard国际贸易公司&quot;的联...http://www.q25.cn/bs/9081653.html/
    求9i下创建standby database 步骤http://www.q25.cn/bs/6919179.html/
    请用英语写一篇文章http://www.q25.cn/bs/976492.html/
    The Privacy Guard 1.3有没有中文版?http://www.q25.cn/bs/6636202.html/
    1。10西刚套装在那爆啊?http://www.q25.cn/bs/3275928.html/
    为什么请问我 | 2008-03-13 20:20
  • # re: oracle10g配置data guard [step-by-step]
  • 眼都花了





    ----------------------------

    http://www.eeyye.com
    eeyye_com | 2008-04-01 00:38

    发表评论
    标题 *  
    姓名 *  
    内容 *  
       验证码: *       
           
    版权声明:天极是本Blog托管服务提供商。如本文牵涉版权问题,天极不承担相关责任,请版权拥有者直接与文章作者联系解决。
    Powered by:

    Copyright © 校长