)
最后启动监听器:lsnrctl start 测试一下:
[oracle@primary ~]$ tnsping orcl9
TNS Ping Utility for Linux: Version 10.2.0.4.0 - Production on 17-AUG-2011 09:04:22 Copyright (c) 1997, 2007, Oracle. All rights reserved. Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.9)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl1))) OK (10 msec)
[oracle@primary ~]$ tnsping orcl10
TNS Ping Utility for Linux: Version 10.2.0.4.0 - Production on 17-AUG-2011 09:04:29 Copyright (c) 1997, 2007, Oracle. All rights reserved. Used parameter files:
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.10.10)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl2))) OK (170 msec)
只要能看见OK就是通过了!
由于Standby数据库还没有建立起来,这里还要测试一下从primary主机连Primary数据库: sqlplus sys/oracle@orcl9 as sysdba
3.2.2 启动归档模式
首先查看是否启用了归档模式: SQL> archive log list
Database log mode No Archive Mode Automatic archival Disabled
Archive destination /u01/app/oracle/product/10.2.0/db_1/dbs/arch Oldest online log sequence 1 Current log sequence
中间我就不再详述了,只列出必要的命令:
SQL> alter system set log_archive_dest_1='location=/u01/app/oracle/archivelog/orcl1'; SQL> shutdown immediate Database closed.
Database dismounted.
ORACLE instance shut down. SQL> startup mount
ORACLE instance started.
Total System Global Area 167772160 bytes Fixed Size 1266392 bytes Variable Size 62917928 bytes
Database Buffers 100663296 bytes Redo Buffers 2924544 bytes Database mounted.
SQL> alter database archivelog; Database altered.
SQL> alter database open; Database altered. SQL> archive log list
Database log mode Archive Mode Automatic archival Enabled
Archive destination /u01/app/oracle/archivelog/orcl1 Oldest online log sequence 1 Next log sequence to archive 2 Current log sequence 2 从最后可以看见归档模式已经启用了。
3.2.3 启动强制归档
SQL> select force_logging from v$database; FOR --- NO
SQL> alter database force logging; Database altered.
SQL> select force_logging from v$database; FOR --- YES
3.2.4 修改初始化参数文件
这里要修改的参数项比较多,当前使用的是spfile,所以我采用pfile来修改: SQL> create pfile from spfile; File created.
我修改后的pfile:
orcl1.__db_cache_size=100663296 orcl1.__java_pool_size=4194304 orcl1.__large_pool_size=4194304 orcl1.__shared_pool_size=54525952 orcl1.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/orcl1/adump'
*.background_dump_dest='/u01/app/oracle/admin/orcl1/bdump' *.compatible='10.2.0.3.0'
*.control_files='/u01/app/oracle/oradata/orcl1/control01.ctl','/u01/app/oracle/oradata/orcl1/control02.ctl','/u01/app/oracle/oradata/orcl1/control03.ctl' *.core_dump_dest='/u01/app/oracle/admin/orcl1/cdump' *.db_block_size=8192 *.db_domain=''
*.db_file_multiblock_read_count=16 *.db_name='orcl1'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orcl1XDB)' *.job_queue_processes=10
*.log_archive_dest_1='location=/u01/app/oracle/archivelog/orcl1' *.open_cursors=300
*.pga_aggregate_target=16777216 *.processes=150
*.remote_login_passwordfile='EXCLUSIVE' *.sga_target=167772160 *.undo_management='AUTO' *.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/oracle/admin/orcl1/udump' *.db_unique_name='orcl1'
*.log_archive_config='dg_config=(orcl1,orcl2)' *.log_archive_dest_2='service=orcl10 arch valid_for=(online_logfiles,primary_role) db_unique_name=orcl2'
*.log_archive_dest_state_2='enable' *.fal_server=orcl10 *.fal_client=orcl9
*.db_file_name_convert='/u01/app/oracle/oradata/orcl2','/u01/app/oracle/oradata/orcl1' *.log_file_name_convert='/u01/app/oracle/oradata/orcl2','/u01/app/oracle/oradata/orcl1' *.standby_file_management='auto' 通过pfile重建spfile: SQL> shutdown immediate Database closed.
Database dismounted.
ORACLE instance shut down. SQL> create spfile from pfile; File created. SQL> startup
ORACLE instance started.
Total System Global Area 167772160 bytes Fixed Size 1266392 bytes Variable Size 62917928 bytes Database Buffers 100663296 bytes Redo Buffers 2924544 bytes Database mounted. Database opened.
3.2.5 创建Standby数据库控制文件
注意:只要是给Standby数据库准备的文件我都是放在/u01/standby目录。 SQL> alter database create standby controlfile as '/u01/standby/control01.ctl'; Database altered.
控制文件要3份,可以重复执行上面的命令3次,这里直接复制control01.ctl到3个: [oracle@primary standby]$ cp control01.ctl control02.ctl [oracle@primary standby]$ cp control01.ctl control03.ctl
3.2.6 创建Standby数据库密码文件
因为在Data Guard中要求Primary数据库和Standby数据库的sys管理员用户的密码一样,这里我就复制Primary数据库的密码文件给Standby数据库: [oracle@primary standby]
$ cp /u01/app/oracle/product/10.2.0/db_1/dbs/orapworcl1 ./orapworcl2 也可以使用如下命令创建:
[oracle@linux ~]$ orapwd file='/u01/standby/orapworcl2' password=oracle entries=10
3.2.7 复制数据文件
需要复制的文件包括:
密码文件:前面为Standby数据库准备的密码文件。 控制文件:就是前面给Standby数据库创建的控制文件,而不是Primary数据库的控制文件。 联机重做日志和归档重做日志:可以不复制,因为Primary数据库会自动发送到Standby数据库。
数据库文件:所以数据文件都要复制到Standby数据库
临时表空间:临时表空间可以不复制,因为数据库会自动创建。
这里我就把所以的都复制到Standby数据库,因为Primary数据库和Standby数据库都是采用的文件系统,我使用最简单的冷被份来复制所以的文件。
密码文件放到Standby数据库目录:/u01/app/oracle/product/10.2.0/db_1/dbs 归档日志文件放到Standby数据库目录:/u01/app/oracle/archivelog/orcl2
数据库文件、控制文件、联机重做日志文件、临时表空间放到Standby数据库目录: /u01/app/oracle/oradata/orcl2 没有的目录就手动创建,注意权限!
注意:冷备份的优点是简单,缺点就是必须shutdown数据库或数据库处于mount状态。
相关推荐: