一开始只有主库安装了数据库,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;可以看到备库和主库的日志文件地方不一样。