测试环境:Windows Server 2003 Enterprise Edition SP2
数据库环境:Oracle 10.2
大家好,好久不见!今天咱们一起来学习Oracle数据库的Data Guard配置,这里测试的数据库实例为软件自带的,不含任何机密数据。
提示:本篇所有的操作均在主库服务器上,文章有点长,描述简单,现丑了。
1、我们先查看当前的数据库是否处于归档模式下:
SQL> archive log list;
SQL> select name,log_mode from v$database;
结果显示,新建的数据库处于非归档模式下,我们需要将其设置为归档模式。
SQL>SELECT LOG_MODE FROM V$DATABASE;
SQL>SHUTDOWN IMMEDIATE;
SQL>STARTUP MOUNT;
SQL>ALTER DATABASE ARCHIVELOG;
查看是否设置成功。
OK,在这里提示一下,数据库保持在MOUNT状态下,切不可打开哦。
好了,我们继续修改归档日志文件的其他参数。
SQL> alter system set log_archive_max_processes=5;
SQL> alter system set log_archive_format='ARC%S_%R.%T' scope=spfile;
SQL>alter system set log_archive_dest_1='location=e:\archive';
设置完后,我们来查看一下各参数数值:
SQL> show parameter log_archive_dest_1;
2、修改主库强制日志模式
SQL> alter database force logging;
检查状态
SQL> select name,force_logging from v$database;
3、修改参数standby_file_management,该参数默认为manual手工方式,需要将其设置成为AUTO。这样在主库上创建数据文件时,从库会自动创建数据文件,否则,会报ORA-01274错误。
查看其状态:SQL>show parameter standby;
修改其值为AUTO
SQL>alter system set standby_file_management='AUTO';
4、在主库创建备用联机日志文件standby log files,从4开始建立4个,大小必须与主库一样,比主库多一个。这4个文件需要拷贝至备库相同目录下。
SQL> alter database add standby logfile group 4 'D:\oracle\product\10.2.0\oradata\orcl\REDO04.log' size 50M;
SQL> alter database add standby logfile group 5 'D:\oracle\product\10.2.0\oradata\orcl\REDO05.log' size 50M;
SQL> alter database add standby logfile group 6 'D:\oracle\product\10.2.0\oradata\orcl\REDO06.log' size 50M;
SQL> alter database add standby logfile group 7 'D:\oracle\product\10.2.0\oradata\orcl\REDO07.log' size 50M;
5、创建密码文件,如果已经有,就不必创建了,但需要拷贝一份至备库里,主库与备库必须使用相同的密码文件。
必须检查REMOTE_LOGIN_PASSWORDFILE的值,如果值不为EXCLUSIVE,需要执行以下语句:
SQL>alter system set remote_login_passwordfile='EXCLUSIVE';
6、设置db_unique_name参数,注意其与db_name的区别。
SQL>alter system set db_unique_name='orcl' scope=spfile;
7、启动闪回功能,并设置闪回空间大小,这需要根据数据库自身的量及服务器的存储空间来规划大小。
SQL>alter database flashback on;
SQL>alter system set db_recovery_file_dest_size=30G;
8、我们接着继续修改归档日志的其他参数
SQL>alter system set log_archive_dest_1='location=e:\archive valid_for=(all_logfiles,all_roles) db_unique_name=orcl' scope=spfile;
SQL>alter system set log_archive_dest_2='SERVICE=orcldg lgwr sync valid_for=(online_logfile,primary_role) db_unique_name=orcldg' scope=spfile;
SQL>alter system set FAL_SERVER='orcldg' scope=spfile;
SQL>alter system set FAL_CLIENT='orcl' scope=spfile;
继续.......
SQL>alter system set log_archive_config='dg_config=(orcl,orcldg)' scope=spfile;
SQL>alter system set db_file_name_convert='D:\oracle\product\10.2.0\oradata\orcl\','D:\oracle\product\10.2.0\oradata\orcl\' scope=spfile;
SQL>alter system set log_file_name_convert='D:\oracle\product\10.2.0\oradata\orcl\','D:\oracle\product\10.2.0\oradata\orcl\' scope=spfile;
SQL>alter system set log_archive_dest_state_1='enable' scope=spfile;
SQL>alter system set log_archive_dest_state_2='enable' scope=spfile;
至此,我们在主库修改初始化参数就完毕了,我们可以打开SPFILE文件看看,千万要注意,永久参数文件SPFILE绝对不能手动修改的,否则数据库启动会报错。下面我们就可以通过SPFILE文件重建PFILE文件了。
SQL>create pfile from spfile;
9、我们需要修改一下监听。
修改listener.ora配置,静态注册SID_LIST_LISTENER。
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)
(SID_NAME = orcl)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.99)(PORT = 1521))
)
)
修改tnsnames配置
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.99)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
ORCLDG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.88)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcldg)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
修改sqlnet.ora配置
在最后增加一行
NAMES.DIRECTORY_PATH = (TNSNAMES,EZCONNECT)
修改完之后重启listener
C:\>lsnrctl stop
C:\>lsnrctl start
10、OK,打开数据库。
SQL>alter database open;
11、我们需要做一个RMAN备份,注意控制文件的备份格式,语句如下:
{
allocate channel c1 type disk;
backup database format 'E:\rmdatabase\db_%d_%u.bak';
sql 'alter system archive log current';
backup current controlfile forstandbyformat 'E:\rmdatabase\controlfile_%U';
release channel c1;
}
备份时,你需要注意SPFILE文件备份在哪个文件里,恢复时需要用到。至此,我们在主库的操作基本完毕。下一篇,我们来学习如何在备库里恢复。敬请期待!
【完毕】
领取专属 10元无门槛券
私享最新 技术干货