dataguard搭建实验

一开始只有主库安装了数据库,sid dgtest 数据库名 dgtest

dg1 180.200.2.55  dgtest1
dg2 180.200.2.56  dgtest2

dg1
alter database force logging;


cd $ORACLE_HOME/dbs/ 
orapwdfile=orapwdb1 password=123456 force=y


alter database add standby logfile group 4 ('/oracle/app/oradata/dgtest/redo04.log') size 50m; 
alter database add standby logfile group 5 ('/oracle/app/oradata/dgtest/redo05.log') size 50m; 
alter database add standby logfile group 6 ('/oracle/app/oradata/dgtest/redo06.log') size 50m;
alter database add standby logfile group 7 ('/oracle/app/oradata/dgtest/redo07.log') size 50m;



create pfile from spfile;
shutdown immediate;

cd $ORACLE_HOME/dbs/
cp initdgtest.ora initdgtest.ora.bk
vi $ORACLE_HOME/dbs/initdgtest.ora
在最后添加如下内容:

*.log_archive_config='dg_config=(dgtest1,dgtest2)'
*.db_unique_name=dgtest1
*.fal_server='dgtest1'
*.fal_client='dgtest2'
*.standby_file_management=auto
*.db_file_name_convert='/oracle/app/oradata/dgtest/','/oracle/app/oradata/dgtest/'
*.log_file_name_convert='/oracle/app/oradata/dgtest/','/oracle/app/oradata/dgtest/'
*.log_archive_dest_2='service=dgtest2 LGWR SYNC AFFIRM valid_for=(online_logfiles,primary_role) db_unique_name=dgtest2'
*.log_archive_dest_state_2='ENABLE'


startup pfile='/oracle/app/product/11g/dbs/initdgtest.ora';
create spfile from pfile;


cd /oracle/app/product/11g/network/admin
cp tnsnames.ora tnsnames.ora.bk
vi tnsnames.ora

改成这样
# tnsnames.ora Network Configuration File: /oracle/app/product/11g/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

DGTEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.55)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest1)
    )
  )


DGTEST1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.55)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest1)
    )
  )

DGTEST2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.56)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest2)
    )
  )


EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )








shutdown immdiate
lsnrctl stop
lsnrctl start

startup mount
alter database archivelog;
alter database open;

rman target /
backup database plus archivelog;
backup current controlfile for standby;
exit


备库

建立相应的文件目录
包括dump文件目录,闪回区,数据文件目录,可以通过 show parameter dest命令查看
mkdir -p /oracle/app/admin/dgtest/adump
mkdir -p /oracle/app/admin/dgtest/bdump
mkdir -p /oracle/app/admin/dgtest/cdump
mkdir -p /oracle/app/admin/dgtest/udump
mkdir -p /oracle/app/admin/dgtest/dpdump
mkdir -p /oracle/app/flash_recovery_area
mkdir -p /oracle/app/oradata/dgtest

注意:下面命令在主数据库上执行
cd /oracle/app/flash_recovery_area
scp -r ./* 180.200.2.56:/oracle/app/flash_recovery_area/
cd $ORACLE_HOME/dbs
scp ./* 180.200.2.56:/oracle/app/product/11g/dbs/
cd ../network/admin/
scp *.ora 180.200.2.56:/oracle/app/product/11g/network/admin/

又到了备机



cd /oracle/app/product/11g/network/admin
cp tnsnames.ora tnsnames.ora.bk
vi tnsnames.ora
改成这样子
# tnsnames.ora Network Configuration File: /oracle/app/product/11g/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

DGTEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.56)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest2)
    )
  )


DGTEST1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.55)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest1)
    )
  )

DGTEST2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.56)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest2)
    )
  )


EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

配好以后
tnsping dgtest1 显示ok





rman nocatalog target sys/121212@dgtest1 auxiliary /
duplicate target database for standby nofilenamecheck;
发现有错

RMAN> duplicate target database for standby nofilenamecheck;

Starting Duplicate Db at 18-JUL-13
using target database control file instead of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 07/18/2013 16:44:38
RMAN-06403: could not obtain a fully authorized session
RMAN-04006: error from auxiliary database: ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory







2机的listener.ora 
1机的也要改,具体怎么改之后再贴上


已经把监听文件和tns文件都改乱了好像。。最后发现原来是要把备机启动到nomount


[oracle@dg2 admin]$ sqlplus / as sysdba

SQL> shutdown immediate;
vi $ORACLE_HOME/dbs/initdgtest.ora

修改如下内容
*.db_unique_name=dgtest2



create spfile from pfile;--这句就算数据库没启动也可以
startup nomount;
alter database mount standby database;
alter database add standby logfile;
alter database add standby logfile;
alter database add standby logfile;
alter database add standby logfile;
alter database recover managed standby database disconnect from session;



发现app根本没有应用,失败。

修改tns文件还是不行,打算重做,发现duplicate target database for standby nofilenamecheck;一直报错,nomount的时候又说一定要mount,mount的时候又说不可以mount。。崩溃。。

关机重启两台机子,重新alter database recover managed standby database disconnect from session;
查看select sequence#,applied from v$archived_log; 居然应用了
alter system switch logfile 发现也可以成功应用。
不知道为啥




最后相关监听文件如下:

1机
# listener.ora Network Configuration File: /oracle/app/product/11g/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/app/product/11g)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dgtest)
      (ORACLE_HOME = /oracle/app/product/11g)
      (SID_NAME = dgtest)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.55)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )









# tnsnames.ora Network Configuration File: /oracle/app/product/11g/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

DGTEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.55)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest)
    )
  )


DGTEST1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.55)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest)
    )
  )

DGTEST2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.56)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest)
    )
  )


EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )





2机




# listener.ora Network Configuration File: /oracle/app/product/11g/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /oracle/app/product/11g)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = dgtest)
      (ORACLE_HOME = /oracle/app/product/11g)
      (SID_NAME = dgtest)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.56)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )







# tnsnames.ora Network Configuration File: /oracle/app/product/11g/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

DGTEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.56)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest)
    )
  )


DGTEST1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.55)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest)
    )
  )

DGTEST2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 180.200.2.56)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dgtest)
    )
  )


EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )






参数文件:
1机
[oracle@dg1 dbs]$ cat initdgtest.ora
dgtest.__db_cache_size=96468992
dgtest.__java_pool_size=4194304
dgtest.__large_pool_size=4194304
dgtest.__shared_pool_size=58720256
dgtest.__streams_pool_size=0
*.audit_file_dest='/oracle/app/admin/dgtest/adump'
*.background_dump_dest='/oracle/app/admin/dgtest/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/oracle/app/oradata/dgtest/control01.ctl','/oracle/app/oradata/dgtest/control02.ctl','/oracle/app/oradata/dgtest/control03.ctl'
*.core_dump_dest='/oracle/app/admin/dgtest/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_file_name_convert='/oracle/app/oradata/dgtest/','/oracle/app/oradata/dgtest/'
*.db_name='dgtest'
*.db_recovery_file_dest='/oracle/app/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='dgtest1'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgtestXDB)'
*.fal_client='dgtest2'
*.fal_server='dgtest1'
*.job_queue_processes=10
*.log_archive_config='dg_config=(dgtest1,dgtest2)'
*.log_archive_dest_2='service=dgtest2 LGWR SYNC AFFIRM valid_for=(online_logfiles,primary_role) db_unique_name=dgtest2'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='/oracle/app/oradata/dgtest/','/oracle/app/oradata/dgtest/'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.standby_file_management='auto'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/oracle/app/admin/dgtest/udump'







2机
[root@dg2 dbs]# cat initdgtest.ora
dgtest.__db_cache_size=96468992
dgtest.__java_pool_size=4194304
dgtest.__large_pool_size=4194304
dgtest.__shared_pool_size=58720256
dgtest.__streams_pool_size=0
*.audit_file_dest='/oracle/app/admin/dgtest/adump'
*.background_dump_dest='/oracle/app/admin/dgtest/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/oracle/app/oradata/dgtest/control01.ctl','/oracle/app/oradata/dgtest/control02.ctl','/oracle/app/oradata/dgtest/control03.ctl'
*.core_dump_dest='/oracle/app/admin/dgtest/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_file_name_convert='/oracle/app/oradata/dgtest/','/oracle/app/oradata/dgtest/'
*.db_name='dgtest'
*.db_recovery_file_dest='/oracle/app/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.db_unique_name='dgtest2'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgtestXDB)'
*.fal_client='dgtest2'
*.fal_server='dgtest1'
*.job_queue_processes=10
*.log_archive_config='dg_config=(dgtest1,dgtest2)'
*.log_archive_dest_2='service=dgtest2 LGWR SYNC AFFIRM valid_for=(online_logfiles,primary_role) db_unique_name=dgtest2'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='/oracle/app/oradata/dgtest/','/oracle/app/oradata/dgtest/'
*.open_cursors=300
*.pga_aggregate_target=16777216
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=167772160
*.standby_file_management='auto'
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/oracle/app/admin/dgtest/udump'






另外通过select * from v$logfile;可以看到备库和主库的日志文件地方不一样。

你可能感兴趣的:(数据库,dataguard)