Chinaunix首页 | 论坛 | 博客
  • 博客访问: 142815
  • 博文数量: 46
  • 博客积分: 3033
  • 博客等级: 中校
  • 技术积分: 550
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-05 16:13
文章分类

全部博文(46)

文章存档

2011年(1)

2010年(8)

2009年(22)

2008年(15)

我的朋友

分类: Oracle

2008-11-08 10:23:04

==============================Dataguard配置与应用==================================
 
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命令复制数据库
 
ps -ef | more查看配置是否成功也可以在netca界面上看结果
ps -ef |grep oracle 查看进程
-----------------------------------
1.在node2上配置listener,tnsname
2.配置完后 测试两个node的网络互通.---------sqlplus
               sqlplus
 
---------------------------------------
开始配置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
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

  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
4.为从库创建控制文件备份---------在做这一步之前 最好去删除之前的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
 
--------------下面是默认的   
rman>backup current controlfile for standby;
5.对源数据库和归档日志做全备份
rman>backup database plus archivelog;----------在默认路径  有可能不匹配
scp *.bkp
---------------
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
 
 
 
 
 
 
 
 
 

 
阅读(790) | 评论(0) | 转发(0) |
0

上一篇:Vncview的应用

下一篇:NFS配置和使用

给主人留下些什么吧!~~