暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

实战 - Oracle Data Guard详细配置【上】

敏而好好学 2018-07-02
522


测试环境: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、创建密码文件,如果已经有,就不必创建了,但需要拷贝一份至备库里,主库与备库必须使用相同的密码文件。

C:>\orapwd file=D:\oracle\product\10.2.0\db_1\dbs\pwdorcl.ora password=12345678;

必须检查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备份,注意控制文件的备份格式,语句如下:

RMAN>run

{

allocate channel c1 type disk;

backup database format 'E:\rmdatabase\db_%d_%u.bak';

sql 'alter system archive log current';

backup current controlfile for standby format 'E:\rmdatabase\controlfile_%U';

release channel c1;

}

备份时,你需要注意SPFILE文件备份在哪个文件里,恢复时需要用到。至此,我们在主库的操作基本完毕。下一篇,我们来学习如何在备库里恢复。敬请期待!


【完毕】




文章转载自敏而好好学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论