oracle10g+Dataguard配置.docx

上传人:b****5 文档编号:6410007 上传时间:2023-01-06 格式:DOCX 页数:19 大小:37.66KB
下载 相关 举报
oracle10g+Dataguard配置.docx_第1页
第1页 / 共19页
oracle10g+Dataguard配置.docx_第2页
第2页 / 共19页
oracle10g+Dataguard配置.docx_第3页
第3页 / 共19页
oracle10g+Dataguard配置.docx_第4页
第4页 / 共19页
oracle10g+Dataguard配置.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

oracle10g+Dataguard配置.docx

《oracle10g+Dataguard配置.docx》由会员分享,可在线阅读,更多相关《oracle10g+Dataguard配置.docx(19页珍藏版)》请在冰豆网上搜索。

oracle10g+Dataguard配置.docx

oracle10g+Dataguard配置

Linux上实现oracle双机实时备份DataGuard

更改机器名

Hostname机器名(自己启,两台机器不能一样,建议用dataguard1和dataguard2)

vi/etc/sysconfig/network文件里面的hostname

然后vi/etc/hosts添加本地hosts

安装数据库

在RHEL5下安装oracle10g

1、添加组和用户

#/usr/sbin/groupaddoinstall

#/usr/sbin/groupadddba

#/usr/sbin/useradd-goinstall-Gdbaoracle

#passwdoracle

2、添加以下内容到/etc/sysctl.conf

kernel.shmall=2097152

kernel.shmmax=2147483648

kernel.shmmni=4096

kernel.sem=25032000100128

fs.file-max=65536

net.ipv4.ip_local_port_range=102465000

net.core.rmem_default=1048576

net.core.rmem_max=1048576

net.core.wmem_default=262144

net.core.wmem_max=262144

3、添加以下内容到/etc/security/limits.conf

oraclesoftnproc2047

oraclehardnproc16384

oraclesoftnofile1024

oraclehardnofile65536

4、添加以下内容到/etc/pam.d/login

sessionrequired/lib/security/pam_limits.so

sessionrequiredpam_limits.so

5、添加以下内容到/etc/profile

if[$USER="oracle"];then

if[$SHELL="/bin/ksh"];then

ulimit-p16384

ulimit-n65536

else

ulimit-u16384-n65536

fi

fi

6、创建安装目录

#mkdir-p/u01/app/oracle

#chown-Roracle:

oinstall/u01/app/oracle

#chmod-R775/u01/app/oracle

7、修改oracle环境变量,首先进入oracle用户模式,vi~/.bash_profile,在里面加入以下内容

exportORACLE_BASE=/u01/app/oracle

exportORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

exportORACLE_SID=DB99

exportPATH=$ORACLE_HOME/bin:

$PATH

exportLD_LIBRARY_PATH=$ORACLE_HOME/lib:

/usr/lib

exportLC_CTYPE=en_US.UTF-8

exportNLS_LANG=AMERICAN_AMERICA.ZHS16GBK

exportLANG=AMERICAN_AMERICA.ZHS16GBK

exportLC_ALL=C

8、安装数据库

#gunzip10201_database_linux_x86_64.cpio.gz(64位)

#cpio-idmv<10201_database_linux_x86_64.cpio

#vidatabase/install/oraparam.ini

[CertifiedVersions]

Linux=redhat-3,SuSE-9,redhat-4,redhat-5,UnitedLinux-1.0,asianux-1,asianux-2]

再添加:

[Linux-redhat-5.0-optional]

TEMP_SPACE=80

SWAP_SPACE=150

MIN_DISPLAY_COLORS=256

vi/etc/sysconfig/vncservers

添加

VNCSERVERS="1:

oracle"

VNCSERVERARGS[1]="-geometry800x600-nolistentcp-nohttpd-localhost"

使用oracle用户(su–oracle)启动vnc服务(vncserver)

将.vnc/.xstart中的twm&改成gnome-session&

然后用vncviewer连接服务器运行database目录下的runinstaller

第一个界面选择AdvancedInstallation

第三个界面需要在语言选项中添加中文支持

在提示是否创建新库时,选择installdatabasesoftwareonly

安装结束时注意安装程序会提示用root用户执行下面两条命令:

/u01/app/oracle/oraInventory/orainstRoot.sh

/u01/app/oracle/product/10.2.0/db_1/root.sh

主数据库(简称dbtest1)备用数据库(简称dbtest2)

在dbtest1上安装数据库环境并创建数据库(数据库sid为DB99,安装目录为/u01/app/)

在dbtest2上只安装数据库环境,不创建数据库

下面是dbtest1上的配置

首先用sqlplus/assysdba进入sql查询模式

主库启用FORCELOGGING

SQL>ALTERDATABASEFORCELOGGING;

SQL>selectFORCE_LOGGINGfromv$database;

主库检查密码文件

这个默认安装完之后都有,文件在/u01/app/oracle/product/10.2.0/db_1/dbs/orapwDB99

文件名格式为orapw${sid}

主库添加standbyredolog

SQL>alterdatabaseaddstandbylogfilegroup4('/u01/app/oracle/oradata/DB99/redo04.log')size50m;

SQL>alterdatabaseaddstandbylogfilegroup5('/u01/app/oracle/oradata/DB99/redo05.log')size50m;

SQL>alterdatabaseaddstandbylogfilegroup6('/u01/app/oracle/oradata/DB99/redo06.log')size50m;

SQL>alterdatabaseaddstandbylogfilegroup7('/u01/app/oracle/oradata/DB99/redo07.log')size50m;

查看日志情况

sql>select*fromv$logfile;

执行后应该能看到你新加的这四个日志相关信息

修改主数据库初始化参数

先执行SQL>createpfilefromspfile;

这样就会有/u01/app/oracle/product/10.2.0/db_1/dbs/initDB99.ora文件

直接编辑这个文件

加入以下参数

*.db_unique_name=dbtest1

*.fal_server='dbtest1'

*.fal_client='dbtest2'

*.standby_file_management=auto

*.db_file_name_convert='/u01/app/oracle/oradata/DB99/','/u01/app/oracle/oradata/DB99/'

*.log_file_name_convert='/u01/app/oracle/oradata/DB99/','/u01/app/oracle/oradata/DB99/'

*.log_archive_config='dg_config=(dbtest1,dbtest2)'

*.log_archive_dest_2='service=dbtest2LGWRSYNCAFFIRMvalid_for=(online_logfiles,primary_role)db_unique_name=dbtest2'

*.log_archive_dest_state_2='ENABLE'

这样初始化参数改好了

使用命令

Sql>shutdownimmediate

Sql>createspfilefrompfile;

修改/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora下的监听文件

listener.ora文件如下

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)

(PROGRAM=extproc)

(SID_DESC=

(SID_NAME=DB99)

(ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC2))

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.21)(PORT=1521))

修改/u01/app/oracle/product/10.2.0/db_1/network/admin/tnsnames.ora文件如下

DB99=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.21)(PORT=1521))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=DB99)

#LISTENER_DB99=

#(ADDRESS=(PROTOCOL=TCP)(HOST=localhoenorthdb1)(PORT=1521))

DBTEST2=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.24)(PORT=1521))

(CONNECT_DATA=

(SERVICE_NAME=DB99)

DBTEST1=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.21)(PORT=1521))

(CONNECT_DATA=

(SERVICE_NAME=DB99)

EXTPROC_CONNECTION_DATA=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC2))

(CONNECT_DATA=

(SID=PLSExtProc)

(PRESENTATION=RO)

这样参数文件就改完了

主库启用归档日志

SQL>STARTUPMOUNT;

SQL>ALTERDATABASEARCHIVELOG;

SQL>ALTERDATABASEOPEN;

SQL>Alterdatabasesetstandbydatabasetomaximizeavailability;

注意执行过alterdatabasearchivelog;后以后就不用再执行这个命令了,以后直接用startup启动数据库就可以了

用rman备份主库数据文件、归档日志、控制文件

在oracle用户环境下,执行

rmantarget/

然后执行

rman>backupdatabaseplusarchivelog;

rman>backupcurrentcontrolfileforstandby;

这样就会在/u01/app/oracle/flash_recovery_area/DB99下生成备份,包括数据文件,控制文件和归档日志

下面对备库进行操作

由于备库没有创建实例,所以缺少几个文件目录

用oracle用户添加

对应主库的目录结构添加

/u01/app/oracle/admin/DB99下的adump,bdump,cdump,udump

/u01/app/oracle/flash_recovery_area/

/u01/app/oracle/oradata/DB99

从主库dbtest1复制文件到备用库dbtest2上

需要复制/u01/app/oracle/flash_recovery_area/下的所有东西

还有/u01/app/oracle/product/10.2.0/db_1/dbs/下的所有东西

主库上的/u01/app/oracle/product/10.2.0/db_1/network/admin目录下的listener.ora和tnsnames.ora

备库修改如/u01/app/oracle/product/10.2.0/db_1/network/admin/listener.ora下

SID_LIST_LISTENER=

(SID_LIST=

(SID_DESC=

(SID_NAME=PLSExtProc)

(ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)

(PROGRAM=extproc)

(SID_DESC=

(SID_NAME=DB99)

(ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)

LISTENER=

(DESCRIPTION_LIST=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC2))

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.24)(PORT=1521))

注:

和主库相同只有ip不同

tnsnames.ora如下

DB99=

(DESCRIPTION=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.24)(PORT=1521))

(CONNECT_DATA=

(SERVER=DEDICATED)

(SERVICE_NAME=DB99)

#LISTENER_DB99=

#(ADDRESS=(PROTOCOL=TCP)(HOST=localhoenorthdb1)(PORT=1521))

DBTEST2=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.24)(PORT=1521))

(CONNECT_DATA=

(SERVICE_NAME=DB99)

DBTEST1=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.21)(PORT=1521))

(CONNECT_DATA=

(SERVICE_NAME=DB99)

EXTPROC_CONNECTION_DATA=

(DESCRIPTION=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC2))

(CONNECT_DATA=

(SID=PLSExtProc)

(PRESENTATION=RO)

注:

和主库一样,只有ip不同

恢复备用库

在恢复备份库的时候先把主库和备库的监听程序重启一下

方法,在oracle用户模式下lsnrctlstop,然后lsnrctlstart

然后再回到备库

启动数据库到nomount阶段

sqlplus/assysdba

sql>startupnomount

再回到oracle用户模式

从rman恢复

rmantargetsys/userjishubu@dbtest1auxiliary/

rman>duplicatetargetdatabaseforstandbynofilenamecheck;

开始进行恢复数据库

修改备库的参数文件

直接编辑这个文件/u01/app/oracle/product/10.2.0/db_1/dbs/initDB99.ora

修改以下参数

*.db_unique_name=dbtest2

然后执行

sql>shutdownimmediate;

sql>createspfilefrompfile;

启动备用库

sqlplus/assysdba

sql>shutdownimmediate;

sql>startupnomount;

sql>alterdatabasemountstandbydatabase;

sql>ALTERDATABASEADDSTANDBYLOGFILE;

sql>ALTERDATABASEADDSTANDBYLOGFILE;

sql>ALTERDATABASEADDSTANDBYLOGFILE;

sql>ALTERDATABASEADDSTANDBYLOGFILE;

sql>alterdatabaserecovermanagedstandbydatabaseusingcurrentlogfiledisconnectfromsession;

这样Dataguard的最大可用模式实时备份就完成了

下面进行一下测试

在两边都执行

Sql>Archiveloglist

看看返回的结果

我的结果是

主库

SQL>archiveloglist

DatabaselogmodeArchiveMode

AutomaticarchivalEnabled

ArchivedestinationUSE_DB_RECOVERY_FILE_DEST

Oldestonlinelogsequence17

Nextlogsequencetoarchive19

Currentlogsequence19

备库

SQL>archiveloglist

DatabaselogmodeArchiveMode

AutomaticarchivalEnabled

ArchivedestinationUSE_DB_RECOVERY_FILE_DEST

Oldestonlinelogsequence18

Nextlogsequencetoarchive0

Currentlogsequence19

如果没出现数字,在oracle用户模式下lsnrctlstop,然后lsnrctlstart

看我所标示的地方是否数字一致,说明已经同步了

然后看主库执行

Sql>select protection_level,protection_mode from v$database;

结果为

SQL>selectprotection_level,protection_modefromv$database;

PROTECTION_LEVELPROTECTION_MODE

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

MAXIMUMAVAILABILITYMAXIMUMAVAILABILITY

如果是这样的结果.两个显示都是高可用模式,那么说明应该配置正确了

再做测试,再主库上插入用户并添加表

然后在备库上执行

Sql>alterdatabaserecovermanagedstandbydatabasecancel;

Sql>alterdatabaseopenreadonly;

连接备库看看有没有你新加的用户名和表,如果都同步过来了,说明配置正确,一切正常了

ALTERDATABASECOMMITTOSWITCHOVERTOPRIMARY;

select*fromv$archive_gap;

selectSEQUENCE#fromV$ARCHIVED_LOG;

补充知识,关于大于2TB的硬盘如何分区,fdisk已经不能用了,方法如下

假设要用parted对Linux下的/dev/sdb(大小为3000G)进行分区操作:

    1、进入系统,在#提示符下执行:

parted/dev/sdb

      2、建立磁盘label:

mklabelGPT

      3、按p键,查看磁盘可用空间,显示单位为M。

3000G应该显示大致为:

/dev/sdb的磁盘几何结构:

0.000-3000000.000兆字节

 

    4、创建分区:

在(parted)后输入:

mkpart并按照提示操作:

分区类型?

primary/主分区/extended/扩展分区?

p(如果要创建扩展分区此处输入e)。

文件系统类型?

[ext2]?

(这里直接回车,千万不要改成ext3,分区创建完毕后通过mkfs.ext3/dev/sdb*建立文件系统)

起始点?

0.000(加入要建立一个10G的分区)

结束点?

10240.000

      5、按p键查看刚创建的分区是否已经成功。

    6、如果成功,键入quit退出parted。

    7、使用mkfs.ext3/dev/hdb*来创建文件系统

    8、挂载并

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1