Oracle数据保护DataGuard安装和配置二
续接上一篇。
主库上的操作
强制日志
Alter database force logging;
开启归档,指定归档路径
Shutdown immediate;
Startup mount;
Alter database archivelog;
Alter system set log_archive_dest_1 = ‘’;
Alter database open;
设置相关参数,通过pfile方式设置
create pfile='/home/oracle/pfile.txt' from spfile;
Shutdown immediate;
编辑pfile文件
Vi /home/oracle/pfile.txt
orcl.__large_pool_size=16777216
orcl.__oracle_base='/u01/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=754974720
orcl.__sga_target=2231369728
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=486539264
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/oracle/oradata/orcl/control01.ctl','/u01/oracle/fast_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_unique_name='prim'
*.fal_client='prim'
*.fal_server='pdg'
*.db_file_name_convert='/u01/oracle/oradata/orcl','/u01/oracle/oradata/orcl'
*.log_file_name_convert='/u01/oracle/oradata/orcl','/u01/oracle/oradata/orcl'
*.db_recovery_file_dest='/u01/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4322230272
*.diagnostic_dest='/u01/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_config='DG_CONFIG=(prim,pdg)'
*.log_archive_dest_1='LOCATION=/u01/oracle/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=prim'
log_archive_dest_2 = 'SERVICE=pdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=pdg'
*.log_archive_format='%t_%s_%r.arc'
*.standby_file_management='AUTO'
*.open_cursors=300
*.pga_aggregate_target=739246080
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2217738240
*.undo_tablespace='UNDOTBS1'
编写listener.ora
# Gracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /u01/oracle/product/11.2.0)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = orcl)
(ORACLE_HOME = /u01/oracle/product/11.2.0)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = prim_new.com)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
编写tnsnames.ora
prim =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = prim_new.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = prim)
)
)
pdg =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = pdg_new.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = pdg)
)
)
这里的名字就是对应pfile中参数service后面的服务名。
select name,remote_archive,database_role,guard_status,db_unique_name from v$database;
查看主状态,是否已经就绪:
NAME REMOTE_A DATABASE_ROLE GUARD_S DB_UNIQUE_NAME
--------- -------- ---------------- ------- ------------------------------
ORCL ENABLED PRIMARY NONE prim
备库需要的相关文件
密码文件
在主库上:
生成:
[oracle@prim_new database]$ cd $ORACLE_HOME/dbs
[oracle@prim_new dbs]$ orapwd file=./orapw$ORACLE_SID password=oracle123 force=y
然后scp传输到备库,需要在同一个目录下:
[oracle@prim_new dbs]$ scp ./orapw$ORACLE_SID pdg.up.com:$ORACLE_HOME/dbs/
控制文件
在主库上生成控制文件:
alter database create standby controlfile as '/u01/control01.ctl';
然后传输到与主库同一个目录下。由于备机上时安装了与主机上完全相同目录的数据库,那么只需要将原来的文件删除保留目录就行,先备机上(相应目录上)删除oradata下面的所有文件。
备机上:
Shutdown immediate;
主机上:
scp /u01/control01.ctl pdg_new.com:/u01/oracle/oradata/orcl/control01.ctl
scp /u01/control01.ctl pdg_new.com:/u01/oracle/fast_recovery_area/orcl/control02.ctl
其他核心文件
数据文件,redo,归档文件全部传输到备库上,此时我将主库处于mount状态
主机上:shutdown immediate;
Startup mount;
Redo:
[oracle@prim_new orcl]$ scp *.log pdg_new.com:/u01/oracle/oradata/orcl/
Dbf:
[oracle@prim_new orcl]$ scp *.dbf pdg_new.com:/u01/oracle/oradata/orcl/
Archivelog:
[oracle@prim_new orcl]$ scp /u01/oracle/archivelog/*.arc pdg_new.com:/u01/oracle/archivelog/
Listener,tnsnames.ora
从主库上传输给备机,并且适当修改
[oracle@prim_new orcl]$ cd /u01/oracle/product/11.2.0/network/admin/
[oracle@prim_new admin]$ ll
total 16
-rw-r--r--. 1 oracle oinstall 475 Jan 8 06:58 listener.ora
drwxr-xr-x. 2 oracle oinstall 4096 Jan 8 03:29 samples
-rw-r--r--. 1 oracle oinstall 205 May 11 2011 shrept.lst
-rw-r--r--. 1 oracle oinstall 350 Jan 8 06:52 tnsnames.ora
[oracle@prim_new admin]$ scp *.ora pdg_new:$ORACLE_HOME/network/admin/
Pfile
将主机上的pfile文件传输到备机
[oracle@prim_new admin]$ scp /home/oracle/pfile.txt pdg_new:/home/oracle/pfile.txt
oracle@pdg_new's password:
pfile.txt
修改pfile.txt:
orcl.__large_pool_size=16777216
orcl.__oracle_base='/u01/oracle'#ORACLE_BASE set from environment
orcl.__pga_aggregate_target=754974720
orcl.__sga_target=2231369728
orcl.__shared_io_pool_size=0
orcl.__shared_pool_size=486539264
orcl.__streams_pool_size=0
*.audit_file_dest='/u01/oracle/admin/orcl/adump'
*.audit_trail='db'
*.compatible='11.2.0.0.0'
*.control_files='/u01/oracle/oradata/orcl/control01.ctl','/u01/oracle/fast_recovery_area/orcl/control02.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='orcl'
*.db_unique_name='pdg'
*.fal_client='pdg'
*.fal_server='prim'
*.db_file_name_convert='/u01/oracle/oradata/orcl','/u01/oracle/oradata/orcl'
*.log_file_name_convert='/u01/oracle/oradata/orcl','/u01/oracle/oradata/orcl'
*.db_recovery_file_dest='/u01/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=4322230272
*.diagnostic_dest='/u01/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_config='DG_CONFIG=(prim,pdg)'
*.log_archive_dest_1='LOCATION=/u01/oracle/archivelog VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=pdg'
*.log_archive_dest_2='SERVICE=prim LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=prim'
*.log_archive_format='%t_%s_%r.arc'
*.open_cursors=300
*.pga_aggregate_target=739246080
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=2217738240
*.undo_tablespace='UNDOTBS1'
启动备库到mount
备库:startup pfile=’/home/oracle/pfile.txt’ mount
主机:alter database open;因为刚才是mount状态
alter database set standby database to maximize availability;
完成后,在备库上查看状态:
SQL> select name,remote_archive,database_role,guard_status,db_unique_name from v$database;
NAME REMOTE_A DATABASE_ROLE GUARD_S DB_UNIQUE_NAME
--------- -------- ---------------- ------- ------------------------------
ORCL ENABLED PHYSICAL STANDBY NONE pdg
备库开启日志应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;