在linux AS4 单机上配oracle10g dataguard

在linux AS4  单机上配dataguard

在两台机器以前在一个项目配过9i 的dataguard,感觉比较简单,这两天抽空在一台linux AS4机上配了一个10g dataguard. 开始有些参数一直没有配对,出现日志不能传到standby的库,日志不能应用,还有一个不能以readonly方式打开,还好都解决了下面为大致的步骤:

一,  库的配置:
     主库:maindb
     standby 库: standb

二, 建立的过程:

1.dbca库建好后.

alter database force logging;

alter system set  log_archive_dest_1='LOCATION=/primary_arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=maindb';

shutdown immediate;

startup mount;

alter database archivelog;

alter database open;

create pfile from spfile; ----用于参数修改

--建立standby库的controlfile:

!mkdir /dgdata/standb
alter database create standby controlfile as '/dgdata/standb/standbcontrol01.ctl'

shutdown immediate;

2. copy  maindb 的数据文件到 standby 库standb的目录:

cp /primarydata/maindata/* /dgdata/standb/
rm /dgdata/standb/control01.ctl  /dgdata/standb/control02.ctl  /dgdata/standb/control03.ctl
cp /dgdata/standb/standbcontrol01.ctl    /dgdata/standb/standbcontrol02.ctl 
cp /dgdata/standb/standbcontrol01.ctl    /dgdata/standb/standbcontrol03.ctl 

3.配listener.ora 和tnsnames.ora

listener.ora:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /app/oracle/product/10.2.0/db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = maindb)
      (ORACLE_HOME = /app/oracle/product/10.2.0/db_1)
    )
    (SID_DESC =
      (SID_NAME = standb)
      (ORACLE_HOME = /app/oracle/product/10.2.0/db_1)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

tnsnames.ora 为:
MAINDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = maindb)
    )
  )

STANDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = standb)
    )
  )

lsnrctl start

tnsping maindb   --保证连通
tnsping standb  --保证连通

4.配主库maindb的参数文件:

   1.cp initmaindb.ora intstandb.ora     ---standb使用

   2. maindb 的参数文件initmaindb.ora增加以下部分:
##maindb 处于primary生效部分:
*.log_archive_dest_1='LOCATION=/primary_arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=maindb'
*.log_archive_dest_2='SERVICE=standb LGWR ASYNC VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standb'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_config='DG_CONFIG=(maindb,standb)'
*.remote_login_passwordfile=exclusive
*.log_archive_format='maindb%t_%s_%r.arc'
*.log_archive_max_processes=5
*.db_unique_name=maindb
*.db_file_name_convert='/primarydata/maindb','/dgdata/standb'
*.log_file_name_convert='/primarydata/maindb','dgdata/standb'

### maindb 切换到standby role时生效的部分
*.standby_archive_dest='/primary_arch/standby_arch'
*.standby_file_management=AUTO
*.FAL_CLIENT=maindb
*.FAL_SERVER=standb

    3.  standb 参数的创始过程:

修改 intstandb.ora中的
*.audit_file_dest='/app/oracle/admin/standb/adump'
*.background_dump_dest='/app/oracle/admin/standb/bdump'
*.control_files='/dgdata/standb/standbcontrol01.ctl','/dgdata/standb/standbcontrol02.ctl','/dgdata/standb/standbcontrol03.ctl'
*.core_dump_dest='/app/oracle/admin/standb/cdump'
*.db_recovery_file_dest='/dg_flashback'
*.user_dump_dest='/app/oracle/admin/standb/udump'

standb 的参数文件 intstandb.ora增加以下部分:

###standb 处于standby  role 时生效
*.log_archive_dest_1='LOCATION=/standby_arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=standb'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.log_archive_config='DG_CONFIG=(maindb,standb)'
*.remote_login_passwordfile=exclusive
*.log_archive_format='standb%t_%s_%r.arc'
*.log_archive_max_processes=5
*.db_unique_name=standb
*.lock_name_space=standb
*.FAL_SERVER=maindb
*.FAL_client=standb
*.standby_archive_dest='/standby_arch/standby_arch'
*.standby_file_management=AUTO
*.db_file_name_convert='/primarydata/maindb','/dgdata/standb'
*.log_file_name_convert='/primarydata/maindb','/dgdata/standb'

##standb 变为primary  role进生效:
*.log_archive_dest_2='SERVICE=maindb LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=maindb'

5. 启动maindb和standb

    1.maindb正常启动:
        

          create spfile from pfile;
          startup

    2.standb 库的启动:

           create spfile from pfile;
           startup nomount
           alter database mount standby database ;
           alter database recover managed standby database disconnect from session;---- 让stnadb 库处于日志恢复状态

         切换到readonly:

         alter database  recover managed standby database cancel;
         alter database open read only;

到这就配好了,可以通过主maindb:
       alter system switch logfile;
       select * from v$log;---查看 SEQUENCE#
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------
         1          1         25   52428800          1 YES INACTIVE                158773 22-SEP-08
         2          1         26   52428800          1 NO  CURRENT                 159328 22-SEP-08
         3          1         24   52428800          1 YES INACTIVE                158644 22-SEP-08

####在standb 上也查:  可以看到两个库的SEQUENCE#是一样的,当然也可以在主库建一张表,切换日志后到从库来查这张表是否已经过来.
SQL> set linesize 181
SQL> select * from v$log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------
         1          1         25   52428800          1 YES CLEARING                158773 22-SEP-08
         2          1         26   52428800          1 YES CLEARING_CURRENT        159328 22-SEP-08
         3          1         24   52428800          1 YES CLEARING                158644 22-SEP-08

 

---附建立时遇到的的ERROR:

1.主库在从库未配好时产生了一个archivelog 导致lag, standb 数据打开到readonly时一直报:后将miandb的那个archivelog cp到这个库的下面, 注册并recover 后解决:

SQL>alter database open read only;
ERROR at line 1:
ORA-16004: backup database requires recovery
ORA-01195: online backup of file 1 needs more recovery to be consistent
ORA-01110: data file 1: '/dgdata/standb/system01.dbf'

解决方法:
SQL>alter system register logfile '/standby_arch/standby_arch/maindb1_9_666068154.arc';
SQL>alter system recover standby database disconnect from session;

 

2. stand 的密码文件orapwd建成的时候有问题: 重建后解决
Errors in file /app/oracle/admin/maindb/bdump/maindb_arc0_5346.trc:
ORA-12154: TNS: 无法解析指定的连接标识符
FAL[server, ARC0]: Error 12154 creating remote archivelog file 'standb'
FAL[server, ARC0]: FAL archive failed, see trace file.
Mon Sep 22 04:07:08 2008
Errors in file /app/oracle/admin/maindb/bdump/maindb_arc0_5346.trc:
ORA-16055: 已拒绝 FAL 请求
ARCH: FAL archive failed. Archiver continuing
Mon Sep 22 04:07:08 2008
ORACLE Instance maindb - Archival Error. Archiver continuing.
Mon Sep 22 04:13:28 2008
Error 12154 received logging on to the standby
Mon Sep 22 04:13:28 2008

在trace  中:/app/oracle/admin/maindb/bdump/maindb_arc0_5346.trc
.. Detailed OCI error val is 1031 and errmsg is 'ORA-01031: 权限不足
'
*** 2008-09-22 04:18:29.500 61283 kcrr.c
Error 1031 received logging on to the standby
Error 1031 connecting to destination LOG_ARCHIVE_DEST_2 standby host 'standb'
Error 1031 attaching to destination LOG_ARCHIVE_DEST_2 standby host 'standb'
ORA-01031: 权限不足
*** 2008-09-22 04:18:29.501 61283 kcrr.c
PING[ARC0]: Heartbeat failed to connect to standby 'standb'. Error is 1031.
*** 2008-09-22 04:18:29.501 59526 kcrr.c
kcrrfail: dest:2 err:1031 force:0 blast:1
*** 2008-09-22 04:23:29.595
Redo shipping client performing standby login
OCIServerAttach failed -1

3.  参数写成:*.log_file_name_convert='/primarydata/maindb','dgdata/standb' 改成:*.log_file_name_convert='/primarydata/maindb','dgdata/standb' 后问题解决:
Media Recovery add redo thread 1
*** 2008-09-22 04:18:50.390 1102 krsm.c
Managed Recovery: Active posted.
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'dgdata/standb/redo01.log'
ORA-27037: 无法获得文件状态
Linux Error: 2: No such file or directory
Additional information: 3
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'dgdata/standb/redo01.log'
ORA-27037: 无法获得文件状态
Linux Error: 2: No such file or directory
Additional information: 3
*** 2008-09-22 04:18:50.395 61283 kcrr.c
Clearing online redo logfile 1 dgdata/standb/redo01.log
ORA-00313: 无法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1: 'dgdata/standb/redo01.log'
ORA-27037: 无法获得文件状态
Linux Error: 2: No such file or directory
Additional information: 3
ORA-00344: 无法重新创建联机日志 'dgdata/standb/redo01.log'
ORA-27040: 文件创建错误, 无法创建文件


 

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

转载于:http://blog.itpub.net/10834762/viewspace-462509/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值