Oracle安装(3)快速搭建DataGurad之物理standby(二)

2014-11-24 11:24:23 · 作者: · 浏览: 1
em set log_archive_dest_state_2='enable'; alter system set standby_file_management='AUTO'; alter system set fal_server='xcldbdg'; alter system set db_file_name_convert='/xcldb/','/xcldbdg/' scope=spfile; alter system set log_file_name_convert='/xcldb/','/xcldbdg/' scope=spfile; ---------------------------- show parameter log_archive_config; show parameter db_file_name_convert; show parameter log_file_name_convert; --------------------------- 要注意fal_client参数,11g已经废了它,11g之前的版本还是需要这个参数
--alter system set fal_client='xcldb';

b.运行参数更改sql
@/home/oracle/dgsetprimary.sql

c.重新启动数据库,使参数生效。以防止一些不能动态更改的参数不起作用。
shutdown immediate;
startup

7.主备库配置Oracle Net
listener.ora 设置要特别注意,一定要设置静态监听。
且Global_dbname和sid_name在主备库各自指向各自的的数据库
主库listener.ora:
 SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = xcldb)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
      (SID_NAME = xcldb)
    )
  )


LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.2.32)(PORT = 1521))
  )


ADR_BASE_LISTENER = /u01/app/oracle

tnsnames.ora两边一样就行了
 [oracle@xcldg1] :cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.


XCLDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.2.32)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = xcldb)
    )
  )


XCLDBDG =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.2.34)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = xcldbdg)
    )
  )

详细说明:
静态监听,就是要设global_dbname和sid_name。
原因:
如果配置的动态监听,只要有实例没有启动到open状态,就无法通过
网络将服务注册到数据库,而只有静态监听可以.
可以通过lsnrctl start时可以看到.在静态监听开启的情况下,实例状态
显示为"UNKNOWN",而动态监听为"READY"
如数据库启动到mount状态下,不能通过网络方式注册到数据库sqlplus sys@xcldb as sysdba
出现 ORA-01031:insufficient privileges
是密码文件的问题,可用select * from v$pwfile_users;查看
用orapwd 建一个就可以了.密码文件名要注意命名规则orapw

8. 在主备库重启监听
lsnrctl stop
lsnrctl start

9. 如果是Windows的,创建好数据库服务,如不是则略过这步。
oradim -NEW -SID xcldb -STARTMODE manual

10。在主库服务器创建standby备库的密码文件,注意,sys密码要一样.并复制到备库服务器。
orapwd file=$ORACLE_HOME/dbs/orapwxcldbdg password=111111 force=y;
scp /home/oracle/initxcldb_bak.ora 172.18.2.34:/home/oracle/

11.在备库服务器创建standby的初始化参数文件
cd $ORACLE_HOME/dbs
echo DB_NAME=xcldbdg>initxcldbdg.ora
cat initxcldbdg.ora
--DB_NAME=xcldbdg --就只有这一条记录
--之所以要建这个文件是因为startup nomout要,用duplicate后会
--创建spfile,这个就没用了.

12.启动standby数据库,记得要带设好的standby的init.ora文件启动
export ORACLE_SID=xcldbdg
echo $ORACLE_SID
sqlplus / as sysdba
startup nomount pfile=$ORACLE_HOME/dbs/initxcldbdg.ora

13.创建standby库
a.创建duplicate备库的脚本文件 。
vi /home/oracle/dgdup2standby.rman
run{
   allocate channel prmy1 type disk;
   allocate channel prmy2 type disk;
   allocate auxiliary channel stby type disk;
   duplicate target database for standby from active database nofilenamecheck spfile parameter_value_convert 'xcldb','xcldbdg'
   set db_unique_name='xcldbdg'
   set log_archive_config='dg_config=(xcldb,xcldbdg)'
   set log_archive_dest_1='LOCATION=/u01/app/oracle/archivelog/xcldbdg VALID_FOR=(all_logfiles,all_roles) db_unique_name=xcldbdg'
   set log_archive_dest_2='service=xcldbdg LGWR ASYNC NOAFFIRM valid_for=(ONLINE_LOGFILES,PRIMAR