oracle active data guard,Oracle Active DataGuard配置手册(一)

第一章 搭建Active DG

开始配置dg

Primary db:

1、 判断dataguard是否安装

SQL> select * from v$option where parameter = 'Oracle Data Guard';

PARAMETER

----------------------------------------------------------------

VALUE

----------------------------------------------------------------

Oracle Data Guard

TRUE

2、 修改主库处于归档模式

SQL> startup mount

SQL> alter database archivelog;

Database altered.

SQL> archive log list

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     34

Next log sequence to archive   36

Current log sequence           36

3、 将primary 数据库置为FORCE LOGGING 模式。通过下列语句:

SQL> select FORCE_LOGGING  from  v$database;

FOR

---

NO

SQL> alter database force logging;

Database altered.

4、 主库创建密码文件

同一个Dataguard中所有数据库必须拥有独立的密码文件,并且保证sys用户拥有相同密码来保证redo的传输。

$ orapwd file=orapworcl password=welcome entries=3

5、 主库配置standby redo log

SQL> startup mount

Database mounted.

SQL> alter database add standby logfile group 4

2  ('/u4/ora11/app/orcl/oradata/orcl/dg_redo1.log') size 50m;

Database altered.

SQL> alter database add standby logfile group 5

2  ('/u4/ora11/app/orcl/oradata/orcl/dg_redo2.log') size 50m;

Database altered.

6 配置监听

主库:

$ cat listener.ora

ORCL=

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.190)(PORT = 1522))

)

)

ADR_BASE_LISTENER = /u4/ora11/app/orcl

$ cat tnsnames.ora

LISTENER_ORCL =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1522))

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1522))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl.tools.com)

)

)

DG =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1524))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dg.tools.com)

)

)

备库:

$ cat lis*.ora

DG=

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1524))

)

)

ADR_BASE_LISTENER = /u4/dg/app/oradg

$ cat tnsnames.ora

LISTENER_DG =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1524))

DG =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1524))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = dg.tools.com)

)

)

ORCL =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = redhat1.tools.com)(PORT = 1522))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl.tools.com)

)

)

7、修改Primary 数据库客户端初始化参数文件

注:主要此处修改项较多,为了方便,我们首先创建并修改pfile,然后再通过pfile 重建spfile,你当然也可以通过alter system set 命令直接修改spfile 内容。

SQL> create pfile from spfile;

File created.

修改主库初始化参数文件,增加下列内容

*.DB_UNIQUE_NAME=orcl

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,dg)'

*.LOG_ARCHIVE_DEST_1= 'LOCATION=/u4/ora11/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=orcl'

*.LOG_ARCHIVE_DEST_2='SERVICE=dg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=dg'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

#--------配置standby 角色的参数用于角色转换

*.FAL_SERVER=dg

*.FAL_CLIENT=orcl

*.STANDBY_FILE_MANAGEMENT=AUTO

*.DB_FILE_NAME_CONVERT='/u4/dg/app/oradg/oradata/dg','/u4/ora11/app/orcl/oradata/orcl '

*.LOG_FILE_NAME_CONVERT= '/u4/dg/app/oradg/oradata/dg','/u4/ora11/app/orcl/oradata/orcl '

然后将Pfile 拷贝到备库上

$ cp /u4/ora11/app/orcl/product/11.2.0/dbhome_1/dbs/initorcl.ora .

$ pwd

/u4/dg/app/oradg/product/11.2.0/dbhome_1/dbs

$ id

uid=1010(oradg) gid=110(dba) groups=110(dba)

8 在主库上创建备份库需要的控制文件

SQL> startup mount

SQL> ALTER  DATABASE  CREATE  STANDBY  CONTROLFILE  AS  '/tmp/orcl.ctl';

Database altered.

9、用修改后的init.ora启动主库,然后创建主库的spfile

SQL> create spfile from pfile;

File created.

10、复制数据文件到standby 服务器(方式多样,不详述)

注意需要复制所有数据文件,备份的STANDBY控制文件及客户端初始化参数文件(这里最好把密码文件也复制到备库,否则后面有可能会报错,具体错误后面会体现)

在standby库操作:

$ cp -r /u4/ora11/app/orcl/oradata/orcl .

$ pwd

/u4/dg/app/oradg/oradata

$ ls

dg_bak  orcl

$ mv orcl dg

$ cp /tmp/orcl.ctl /u4/dg/app/oradg/oradata/dg

$ cd /u4/dg/app/oradg/oradata/dg

$ ls

control01.ctl  dg_redo2.log  redo01.log  redo03.log    system01.dbf  undotbs01.dbf

dg_redo1.log   orcl.ctl      redo02.log  sysaux01.dbf  temp01.dbf    users01.dbf

复制主库参数文件:

$ cp /u4/ora11/app/orcl/product/11.2.0/dbhome_1/dbs/initorcl.ora .

$ pwd

/u4/dg/app/oradg/product/11.2.0/dbhome_1/dbs

Standby db配置

1、   创建控制文件

$ mv orcl.ctl control01.ctl

$ cp control01.ctl control02.ctl

$ pwd

/u4/dg/app/oradg/oradata/dg

2、配置listener,tnsname

同前面

3、设置备库参数文件

$ cat initdg.ora

dg.__db_cache_size=603979776

dg.__java_pool_size=16777216

dg.__large_pool_size=16777216

dg.__oracle_base='/u4/dg/app/oradg'#ORACLE_BASE set from environment

dg.__pga_aggregate_target=872415232

dg.__sga_target=1308622848

dg.__shared_io_pool_size=0

dg.__shared_pool_size=654311424

dg.__streams_pool_size=0

*.audit_file_dest='/u4/dg/app/oradg/admin/dg/adump'

*.audit_trail='none'

*.compatible='11.2.0.0.0'

*.control_files='/u4/dg/app/oradg/oradata/dg/control01.ctl','/u4/dg/app/oradg/oradata/dg/control02.ctl'

*.db_block_size=8192

*.db_domain='tools.com'

*.db_name='dg'  ---这里其实应该设置为orcl,否则后面会报错,具体看后面文档

*.db_recovery_file_dest='/u4/dg/app/oradg/flash_recovery_area'

*.db_recovery_file_dest_size=4070572032

*.diagnostic_dest='/u4/dg/app/oradg'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=dgXDB)'

*.local_listener='LISTENER_DG'

*.memory_target=2177892352

*.open_cursors=300

*.processes=150

*.remote_login_passwordfile='EXCLUSIVE'

*.undo_tablespace='UNDOTBS1'

*.DB_UNIQUE_NAME=dg

*.LOG_ARCHIVE_CONFIG='DG_CONFIG=(orcl,dg)'

*.LOG_ARCHIVE_DEST_1= 'LOCATION=/u4/dg/arch VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=dg'

*.LOG_ARCHIVE_DEST_2= 'SERVICE=orcl  LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl'

*.LOG_ARCHIVE_DEST_STATE_1=ENABLE

*.LOG_ARCHIVE_DEST_STATE_2=ENABLE

*.LOG_ARCHIVE_FORMAT=%t_%s_%r.arc

#--------配置standby 角色的参数用于角色转换

*.FAL_SERVER=orcl

*.FAL_CLIENT=dg

*.STANDBY_FILE_MANAGEMENT=AUTO

*.DB_FILE_NAME_CONVERT ='/u4/ora11/app/orcl/oradata/orcl','/u4/dg/app/oradg/oradata/dg'

*.LOG_FILE_NAME_CONVERT='/u4/ora11/app/orcl/oradata/orcl','/u4/dg/app/oradg/oradata/dg'

4、创建密码文件:---这里其实最好直接复制主库密码文件,免得出错

$ orapwd file=orapwdg password=welcome entries=3

5、在备库上建立spfile

SQL> startup nomount

SQL> create spfile from pfile;

File created.

6、 尝试启动备库

SQL> startup nomount

SQL>  alter database mount standby database;

alter database mount standby database

*

ERROR at line 1:

ORA-01103: database name 'ORCL' in control file is not 'DG'

故障处理:在standby环境中db_name在主库和从库必须是一样的

SQL> show parameter db_name

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_name                              string      DG

SQL> show parameter db_uni

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_unique_name                       string      dg

SQL> alter system set db_name='orcl' scope=spfile;

System altered.

SQL> shutdown immediate

SQL> startup nomount

SQL> show parameter db_name

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_name                              string      orcl

SQL> alter database mount standby database;

Database altered.

SQL> show parameter db_uni

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_unique_name                       string      dg

SQL>

但是在open的时候报错了

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-10458: standby database requires recovery

ORA-01152: file 1 was not restored from a sufficiently old backup

ORA-01110: data file 1: '/u4/dg/app/oradg/oradata/dg/system01.dbf'

故障处理:

查看备库:

SQL>  SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

TO PRIMARY

查看主库:

SQL>  SELECT SWITCHOVER_STATUS FROM V$DATABASE;

SWITCHOVER_STATUS

--------------------

FAILED DESTINATION

状态怎么是这个呢?

再次查看主库相关参数

SQL> show parameter log_archive_dest_2;

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

log_archive_dest_2                   string         SERVICE=dg  LGWR ASYNC VALID_F

OR=(ONLINE_LOGFILES,PRIMARY_RO

LE) DB_UNIQUE_NAME=dg

没看出有什么问题

察看主库alert.log,发现错误如下

------------------------------------------------------------

Errors in file /u4/ora11/app/orcl/diag/rdbms/orcl/orcl/trace/orcl_arc1_12785.trc:

ORA-16191: Primary log shipping client not logged on standby

PING[ARC1]: Heartbeat failed to connect to standby 'dg'. Error is 16191.

Tue Dec 06 20:43:10 2011

Error 1017 received logging on to the standby

------------------------------------------------------------

Check that the primary and standby are using a password file

and remote_login_passwordfile is set to SHARED or EXCLUSIVE,

and that the SYS password is same in the password files.

returning error ORA-16191

莫非是密码文件的问题?

尝试直接ftp主库的密码文件到备用库

$ mv orapwdg orapwdg.bak

$ cp  /u4/ora11/app/orcl/product/11.2.0/dbhome_1/dbs/orapworcl .

$ mv orapworcl orapwdg

然后重新启动主库和备库,发现备库居然开始应用日志了

SQL> startup nomount

SQL> alter database mount standby database;

Database altered.

SQL> alter database open read only;

Database altered.

SQL> alter database recover managed standby database disconnect from session;

Database altered.

SQL> select OPEN_MODE from v$database;

OPEN_MODE

--------------------

READ ONLY WITH APPLY

看来就是密码文件的问题啊,哈哈

日志是传过去了,但是是否已经apply到备库了呢?

在备库:

SQL> SELECT SEQUENCE#,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;

SEQUENCE# APPLIED

---------- ---------

44 YES

45 YES

46 YES

47 YES

48 YES

49 YES

50 YES

51 YES

52 YES

53 YES

下面检测下在主库建立的表是否应用到了备库

SQL> select * from test;

no rows selected

发现表已经有了

下面尝试插入数据

在主库:

SQL> insert into test values(1);

1 row created.

SQL> commit;

Commit complete.

SQL> alter system switch logfile;

System altered.

SQL> !id

uid=1008(ora11) gid=110(dba) groups=110(dba)

SQL>

到备库查询:

SQL> select * from test;

TEL

----------

1

SQL> !id

uid=1010(oradg) gid=110(dba) groups=110(dba)

SQL>

发现已经有了,做到了read only并且可以应用日志!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux创建文件后会自动删除,linux会自动删除目录和文件的吗

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼建议不要在 /tmp 或 /var/tmp 中存放需由用户掌握的文件unix 系统的习惯做法是将系统运行过程中的产生的临时文件保存在 /tmp 和 /var/tmp 中。这两者的区别在于 /tmp 中保存的临时文件原则上将在系统重新启动后删除,这…

linux关闭gvim命令,Linux 下 8 种退出 vim 编辑器的方法

Vim被称为一个非常强大的文本编辑器,但同样以其陡峭的学习曲线而闻名。 如果您经常使用命令行,那么至少应该学习一些基本功能。 如果你没有花时间去学习它,即使像退出Vim这样简单的事情也很困难。Vim是一套独立的软件,它有自己的一…

du 查看使用 linux命令,如何正确使用Linux命令–du

本文简单介绍了如何使用如何使用Linux命令–du,需要的朋友可以参考一下。du(disk usage)功能说明:显示目录或文件的大小。语  法:du [-abcDhHklmsSx][-L ][-X ][–block-size][–exclude][–max-depth][–help][–version][目录或文件]补充…

编译 linux 3,linux内核的编译(3)

linux内核的编译(3)2008-02-23 07:17:46来源:互联网 阅读 ()无论什麽档名),然後将你做的 zImage 拷贝进去,(例如,如果你用” /vmlinuz ″的话,就像这样″ cp zImage /vmlinuz ”)。接著重新执行 lilo — 在较新的系统上…

linux 端口限速技术,linux下如何实现对每个IP进行限制带宽??

linux下如何实现对每个IP进行限制带宽??(2011-09-01 01:03:54)标签:杂谈linux下如何实现对每个IP进行限制带宽??redhatlinux服务器,最近发现单位的网内BT下载、迅雷下载太多,严重影响正常上网&a…

u盘启动+linux+ks.cfg,通过ks.cfg文件自动安装系统

最近需要制作自动安装系统的iso镜像文件,写个笔记以防忘记第一步、拿到iso原始文件,我用的是rhel7.7的把rhel7.7文件复制出来到一个目录中第二步、编写一个名字叫ks.cfg文件内容如下:#versionDEVELInstall OS instead of upgradeinstallKeybo…

linux下编译安装ntfs,linux下编译安装ntfs

“mount: you must specify the filesystem type” 错误提示是这个mount /dev/hda1 /media/windows/ 在centos下无问题。不知道为什么在Ubuntu下有问题解决办法mount /dev/hda1 /media/windows/ -t ntfs (-t 制定文件系统类型,这里是ntfs) ######自己down源码包…

Linux做施压机的最大线程数,关于性能测试的几个要点

几个定义性能测试(Performance Test)通常收集所有和测试有关的所有性能,通常被不同人在不同场合下进行使用。测试软件在系统中的运行性能,度量系统与预定义目标的差距。关注点:how much和how fast负载测试(Load Test)负载测试是一种性能测试&…

Linux实训vim编辑器的应用,Linux实训例题(vim编辑器)

1、如果用vi编辑器编辑当前目录下的file1文件,则进入编辑的方式是()vi file12、在Vi编辑器中,请将光标定位到屏幕最上方、最中间、最下方,其命令分别是()()()H M L3、在Vi编辑器中,请将光标定位到文件的第10行,其命令是…

linux优化pdf,linux系统安全和优化.pdf

crookoo 于 2012-05-06 03:42:36发表:好东西啊dayed 于 2012-03-25 11:30:45发表:linux系统安全和优化topcloud 于 2012-03-22 12:50:28发表:顶阿顶。。vikenfeng 于 2011-10-27 10:05:32发表:感谢楼主fastknot 于 2011-07-13 18:45:35发表:楼主很强大66781881 于 2011-06-30 2…

鸟哥的linux私房菜有乌班图,折腾Ubuntu的一些summary--初装Ubuntu18和重装Ubuntu18

1. 初次安装Ubuntu18关于linux安装,之前一直遇到的问题都是安装了,并重启之后之后进入到了grub界面,然后我自己对于grub指令不熟悉,加上没有足够的时间来研究,在多次重装之后,仍然没有办法直接进入&#xf…

线性分组码c语言实验报告,C语言线性分组码(附注释).doc

C语言线性分组码(附注释).doc下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。2.下载的文档,不会出现我们的网址水印。3、该文档所得收入(下载内容预览)归上传者、原创作者&a…

bson json c语言,对比平台--JSON和BSON之间的区别

JavaScript Object Notation(JSON)是一种标准文件格式,使用人类可读的文本来传输具有属性值对和数组数据类型的数据。这是最常见的数据格式之一,主要用于异步浏览器-服务器通信。JSON是与语言无关的格式。另一方面,BSON是一种计算机交换格式&…

c语言中buf内容怎么给指针,C语言 指针的使用

C语言 指针当使用变量时出现长度不定,譬如在串口通信中,有些通信协议是不定长的,那么这个就应该使用指针;如果使用数组的话,会有下面这两个小问题,要将数组的大小要定的比较大,已保证能够容纳最…

c语言常考的程序,C语言 一些常考得东西

C语言基础测试1.#include “heima.txt” 表示文件在哪个目录?( D)A、系统根目路径B、编译器路径C、桌面D、与当前文件目录一致.2.C源程序中不能直接打印的进制数是( )A. 二进制 B.十六进制 C.十进制 D.八进制3.十六进制数0x1DA2转换成二进制数是多少(…

杭电2005题c语言答案,杭电2005

题不难,但细节较多,所以。。。不但二月闰年有影响,七八月都是31天,这个也得专门分开讨论,还有就是七八月份开讨论后,加的基数是三到七月的,不能完全复制上面的代码,基数得改~做题还是…

软件设计师c语言算法皇后,软件设计师历年试题-算法.ppt

软件设计师历年试题-算法1996年下午试题三 【E-R图】 1996年下午试题三 【问题】  填充下列 SQL 程序 3.1~3.4 中的 ①~⑦,使它们分别完成相应的功能:程序 3.1:统计参加比赛时运动员人数  SELECT __①__  FROM A…

c语言getch() 头文件,用getch()需要头文件吗?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include #include #include "string.h"#includeusing namespace std;struct student{ int num;char name[10];char banji[10];float score[3];struct student *next;};struct student *creat(){struct student *head,*p…

android 服务自动结束,Android服务自动停止

我正在制作一个带有闹钟功能的应用程序。我正在使用这种服务,不断检查设备的当前时间与我的数据库中的时间。Android服务自动停止我的问题是,如果应用程序从后台删除或设备是rebooted,此service停止。我已经使用START_STICKY来保持它在后台运…

android自定义dialog 全屏,自定义dialog全屏显示

默认的Dialog是不能全屏的。也就是怎么设置Dialog的Layout都没用的。下面给出实现Dialog实现全屏的两种方式:1、代码实现。这中方法相对比较简单首先继承Dialig,然后再构造函数中添加super(context, android.R.style.Theme);setOwnerActivity((Activity)…