热点推荐
ZOL首页 > 服务器 > 知识学堂 > Oracle > Linux下Oracle10_Dataguard配置与应用

Linux下Oracle10_Dataguard配置与应用


中国it实验室 【转载】 2009年03月25日 18:18

    DataGuard 双节点 node1 node2

    1.在node2上配置网络 包括 网卡mac地址,ip,dns名 并测试网络

    2.在node1上 运行终端terminal命令——env |grep PATH

    3.在node1上创建数据库 选择 特殊数据库 类型

    4.在node1上 运行终端terminal命令——env |grep ORA全局数据库名要和配置文件里的oracle_sid设置的同名。

    5.在node1上不设置默认归档日志, alter system set db_recovery_file_dest='' scope=spfile;同时需要启用arch日志进程  并手工创建归档日志目录及路径(mkdir -p /u01/app/arch  在DBCA上添加相关归档路径/u01/app/arch)

    注意事项:  在更换默认归档路径后,不会立即生效,应重新生成spfile文件

    create spfile='' from pfile;

    创建数据库开始——结束完成后

    1.在node1上  运行终端命令——ps -ef 查看进程,出现oracle相关服务进程注意:/etc/hosts 查看id,IP     在/etc/hosts下node1和node2都需配置为主机设置快捷方式

    2.netca(dbca) ——netmgr & 也可以主数据库

    创建listener

    查看listener——在/oracle下执行cd network/admin/

    里面有个 listener.ora文件编辑文件

    命令 vi listener.ora

    3.netca配置tnsname.ora node1和node2都需配置(连接后台服务的)

    注意:在从库上面也要在建立一个一模一样的库  采取方法: 从主库复制一份过去详见: 最下面 使用RMAN duplicate命令复制数据库

    注意:在从库上面也要在建立一个一模一样的库  采取方法: 从主库复制一份过去

    详见: 最下面 使用RMAN duplicate命令复制数据库

    ps -ef | more查看配置是否成功也可以在netca界面上看结果

    ps -ef |grep oracle 查看进程

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

    1.在node2上配置listener,tnsname

    2.配置完后 测试两个node的网络互通。——sqlplus scott/tiger@test2

    sqlplus scott/tiger@test1

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

    开始配置DataGuard

    3.1 配置主库(Primary Database)相关工作:

    1.enable forced logging——alter database force logging;

    2.create a password file ——配置dbca时 oracle 自动创建

    ——database不处于open状态时使用,处于open状态是 使用 user\$表

    3.setting 主库 初始化 参数 ——主要工作


++++++++++++++++
db_unique_name=uqn_node1 --- 自定义命名
log_archive_config='dg_config=(uqn_node1, uqn_node2)'
log_archive_dest_2='SERVICE=lsnode2 ---tnsname
valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)
db_unique_name=uqn_node2'
LOG_ARCHIVE_DEST_STATE_1=ENABLE
LOG_ARCHIVE_DEST_STATE_2=ENABLE
fal_server=lsnode2
fal_client=lsnode1
STANDBY_FILE_MANAGEMENT=AUTO
*.db_file_name_convert='/u02/oradata/test1','/oradata/test1' *.log_file_name_convert='/u02/oradata/test1','/oradata/test1'
4.enable archiving shutdown immediate;
startup mount;
alter database archivelog;
alter database open;

    3.2 创建主库-备库(Primary-Standby)

    1.备份主库数据文件——rman备份  backup database

    2.创建控制文件 for the Standby Database

startup mount;
alter database create standby controlfile as '/u01/oradata/test1/standby.ctl';
alter database open;

    配置初始化参数 for the Standby Database

    4.从主库拷贝文件到备库

    包括datafiles,standby control file,initial file Ps:create pfile from spfile;前面在创建oracle初始化参数文件时是使用initdgdemo.ora文件,而之前的spfiledgdemo.ora文件应该删除掉。

    删除命令:rm -f spfiledgdemo.ora

cp initdgdemo.ora /u02/oradata
cp orapwdgdemo /u02/oradata
检查一下/u01/oradata目录下的文件
包括arch,dgdemo,initdgdemo.ora,orapwdgdemo,boston.ctl
有两种方式: 1.打包用ftp工具传过去
在/u01目录下  2.scp -r admin oradata root@IP:/u01

    5.为备库配置环境

    修改配置文件之前先执行一下操作:

  先把/oradata/下的控制文件用boston.ctl替换掉,
  在dgdemo下
  rm -f control0*
  mv ../boston.ctl ./control01.ctl
  cp control01.ctl control02.ctl
  cp control01.ctl control03.ctl  将初始化参数文件拷到/oracle/dbs 下
  mv \$ORACLE_HOME/dbs/inittest1.ora .
  mv \$ORACLE_HOME/dbs/orapwtest1 .

    setting 备库 初始化 参数

*.db_unique_name=uqn_node2 --- 自定义命名
*.log_archive_config='dg_config=(uqn_node1, uqn_node2)'
*.log_archive_dest_1='location=/u01/app/arch'
*.log_archive_dest_2='SERVICE=lsnode1 ---tnsname  
valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)  
db_unique_name=uqn_node1'
*.LOG_ARCHIVE_DEST_STATE_1=ENABLE
*.LOG_ARCHIVE_DEST_STATE_2=ENABLE
*.fal_server=lsnode1
*.fal_client=lsnode2
*.STANDBY_FILE_MANAGEMENT=AUTO
*.db_file_name_convert='/u01/app/oradata','/u01/app/oradata'
*.log_file_name_convert='/u01/app/oradata','/u01/app/oradata'

    实例

test1.__db_cache_size=427819008
test1.__java_pool_size=4194304
test1.__large_pool_size=4194304
test1.__shared_pool_size=167772160
test1.__streams_pool_size=0
*.audit_file_dest='/u01/app/admin/test1/adump'
*.background_dump_dest='/u01/app/admin/test1/bdump'
*.compatible='10.2.0.1.0'
*.control_files='/u01/app/oradata/control01.ctl','/u01/app/oradata/control02.ctl','/u01/app/oradata/control03.ctl'
*.core_dump_dest='/u01/app/admin/test1/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='test1'
*.db_recovery_file_dest_size=2147483648
*.db_recovery_file_dest=''
*.dispatchers='(PROTOCOL=TCP) (SERVICE=test1XDB)'
*.job_queue_processes=10
*.log_archive_start=TRUE
*.open_cursors=300
*.pga_aggregate_target=201326592
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=605028352
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='/u01/app/admin/test1/udump'*.db_unique_name=test1
*.log_archive_config='dg_config=(test1, dubdg)'
*.log_archive_dest_1='location=/u01/app/oradata'
*.log_archive_dest_2='service=dubdg2 valid_for=(online_logfiles,primary_role) db_unique_name=dubdg'
*.log_archive_dest_state_1=enable
*.log_archive_dest_state_2=enable
*.fal_server=dubdg2
*.fal_client=dubdg1
*.standby_file_management=auto
*.db_file_name_convert='/u01/app/oradata','/u01/app/oradata'
*.log_file_name_convert='/u01/app/oradata','/u01/app/oradata'

    详见: 最下面 使用RMAN duplicate命令复制数据库

    6.启动物理备库(补充:startup open read only 默认备库就是只读启动)

ps -ef 进程查看
  lsnrctl start---主备库--------------------注意监听:  startup---主库
  测试lsnode2 访问 1 ---sqlplus system/oracle@lsnode1

  startup---备库
  startup mount;
--------------------
Start Redo Apply:
alter database recover managed standby database disconnect from session;
到这一步,DataGuard 已经配置好了.--------------------测试:在主库上执行   创建一个表scott_dept_test  alter system switch logfile;
  或者alter system archive log current;
看备库那边有没有接收主库的redo log信息;

    7.验证物理备库是否运行正常

    接收主库多少redo log 信息

select sequence#,first_time,next_time from v\$archived_log order by  sequence#;select sequence#,applied from v\$archived_log order by sequence#;

    8.管理备库:

  当备库处在 read-only状态时,
  备库仍然可以接收主库的archivelog信息,也可以redo apply
  但是在备库查询时 不能redo apply.
------------------------
  取消redo apply or real-time apply;
  alter database recover managed standby database cancel;
  (open read-only access;  alter database open;  可以查询主库的表了...)-------------------------------又要切换回到执行状态呵 apply:alter database recover managed standby database disconnect from session;
alter database recover managed standby database using current logfile;
-----启动real-time apply

主备库切换:防止主库损坏时,备库可以及时运行
select name,database_role from v\$database; 主库切换:
alter database commit to switchover to physical
standby with session shutdown;
startup nomount;
alter database mount standby database;
recover managed standby database disconnect;
备库执行:
alter database commit to switchover to primary;
 切换问题:
--------------------------------------------
select sequence#,applied from v\$archived_log order by sequence#;
查了 redo apply 是 no坏坏公主 21:56:05
SELECT SWITCHOVER_STATUS FROM
V\$DATABASE;
为何显示的是RECVOERY NEEDED
坏坏公主 21:59:07
是怎么回事呢

相关回答:原来遇到过,好像是切换前要确认你的的从库是否正常应用了所有的日志,如果从库和主库不同步是切不过去的。有空帮你再测试模拟一下。
从库在redo apply  yes 时,  主库才能被切换
---------------------------------------------------------------
 快速创建DataGuard --------------需要注意: 前面的配置步骤还是要的 总之 一个原则  保证主从库的一致性使用RMAN duplicate命令复制数据库9月 21, 2007 at 10:17 上午 · Filed under 安装配置 去年刚开始学习RMAN的时候就知道有这个功能,但是由于考试不考这个,书上也没有关于这条命令的详细解释,
1.为新数据库创建服务、初始化参数文件、密码文件、监听,在源数据库配置本地服务名指向新数据库,
注意初始化参数文件中记得指定db_file_name_convert和log_file_name_convert参数,以便后面rman复制数据库的时候知道该把数据文件和日志文件放到哪里去,db_file_name_convert和
log_file_name_convert参数的格式如下:(’源数据库数据文件目录’,'新数据库数据文件目录’)
2.在sqlplus中用startup nomount将新数据库启动,然后退出sqlplus,这里一定要退出,
                                                              (rman也一样quit)
否则会导致后面复制数据库时挂在那里,因为复制数据库过程中有一个步骤是shutdown,而shutdown会等待用户会话结束,所以这里不退出,后面会一直等待,我在这里浪费了不少时间,后来才恍然大悟明白原因
3.在源数据库启动rman,连接到target和auxiliary,这里假设新数据库的sid是aux,
创建的本地服务名为dg2,用如下命令启动rman
rman target / auxiliary sys/sys@aux4.为从库创建控制文件备份---------在做这一步之前 最好去删除之前的backup,copy                         crosscheck backup; -- delete noprompt backup;--crosscheck copy; delete copy
 
backup format '/u01/app/backup/%U.bkp' database plus archivelog; 数据文件 日志文件
backup format '/u01/app/backup/%U.bkp' current controlfile for standby; 控制文件scp *.bkp root@dg1:/u01/app/backup
 
--------------下面是默认的   
rman>backup current controlfile for standby;5.对源数据库和归档日志做全备份rman>backup database plus archivelog;----------在默认路径  有可能不匹配scp *.bkp root@dg1:/u01/app/backup ---------------6.将备份从源数据库复制到新数据库同样的目录位置rman>duplicate target database for standby nofilenamecheck;注意to auxdb,这里要指定新数据库的sid,duplicate命令完成后,新数据库就可以使用了
----------------------------------------------

select spid from v\$process where addr=(select paddr from v\$session where sid=(select sid from v\$mystat where rownum<=1));
 set pagesize 100
set linesize 200
SQL> show parameter log_archive

给文章打分 5分为满分(共0人参与) 查看排行>>
频道热词:LED照明  工作站  云计算  
视觉焦点
服务器知识学堂热点
排行 文章标题
TOP10周热门服务器排行榜
  • 热门
  • 新品
  • 系列
查看完整榜单>>