DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 949|回复: 0
打印 上一主题 下一主题

[待整理] 用Oracle 10g在Windows/Unix服务器上创建物理后备数据库

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-13 13:52:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Oracle 10g数据卫士是一个强大的确保企业数据高可用、数据保护和灾难恢复的工具,我已经使用网格控制台和SQL命令在数据卫士/后备数据库上工作好几年了,我最近的经历是半年前为一个实验室信息管理系统(LIMS)利用数据卫士手动创建物理后备数据库,我每天都要维护它,它工作得很好,我想在这里与其他DBA分享我的经验。在这个例子中数据库的版本是10.2.0.3,主备数据库位于不同机器上,主数据库叫做PRIM,后备数据库叫做STAN,我使用了闪存恢复区和OMF。
一、在你开始之前:
1、 确保主备数据库的操作系统和平台架构是相同的。
2、 在后备服务器上只安装Oracle数据库软件,不要例子数据库,如果需要补丁请应用,确保主备数据库的版本一致,Oracle home也要相同。
3、 在放入生产环境之前,在测试环境中先测试一下后备数据库的创建。
二、在主数据库上:
1、启用主数据库的强制日志记录:
SQL> ALTER DATABASE FORCE LOGGING;
2、如果没有密码文件,先要创建它:
2.1)检查密码文件是否存在:
SQL> select * from v$pwfile_users;
2.2)如果不存在,就创建一个。
在windwos平台上:
           
  1. $cd %ORACLE_HOME%database$orapwd file=pwdPRIM.ora password=xxxxxxxx force=y
复制代码
           


(注意:用sys用户的密码替换这里的xxxxxxxx)
在Unix平台上:
           
  1. $Cd $ORACLE_HOME/dbs$Orapwd file=pwdPRIM.ora password=xxxxxxxx force=y   
复制代码
           


(注意:用sys用户的密码替换这里的xxxxxxxx)
3、配置备用重做日志
3.1)备用重做日志文件的大小应与当前主数据库在线重做日志文件大小匹配,使用下面的命令找出在线重做日志文件的大小:
           
  1. SQL> select bytes from v$log;BYTES----------524288005242880052428800   
复制代码
           


3.2)使用下面的命令确定你当前的日志文件组:
SQL> select group#, member from v$logfile;
3.3)创建备用重做日志文件组
我的主数据库原来有3个重做日志文件组,使用下面的命令创建3个备用重做日志文件组:
           
  1. SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 4 SIZE 50M;SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 5 SIZE 50M;SQL>ALTER DATABASE ADD STANDBY LOGFILE GROUP 6 SIZE 50M;
复制代码
           


3.4)使用下面的命令检查日志组创建是否成功:
SQL>select * from v$standby_log;
4、 在主数据库上启用归档
如果你的主数据库没有工作在归档日志模式,请开启为归档日志模式:
           
  1. SQL>shutdown immediate;SQL>startup mount;SQL>alter database archivelog;SQL>alter database open;SQL>archive log list;   
复制代码
           

5、 设置主数据库初始化参数
从服务器参数文件(spfile)创建一个文本初始化参数文件(pfile),添加新的主角色参数:
5.1)从spfile创建pfile
           
  1.   在Windows平台上:  SQL>create pfile=’databasepfilePRIM.ora’ from spfile;  (注意:用你的Oracle home路径替换‘’中的内容)  在Unix平台上:  SQL>create pfile=’/dbs/pfilePRIM.ora’ from spfile;  (注意:用你的Oracle home路径替换‘’中的内容)  
复制代码
           

5.2)编辑pfilePRIM.ora文件,添加主备角色参数:(这里的路径来自Windows系统,Unix系统做响应的修改)
           
  1. db_name=PRIMdb_unique_name=PRIMLOG_ARCHIVE_CONFIG='DG_CONFIG=(PRIM,STAN)'LOG_ARCHIVE_DEST_1='LOCATION=F:Oracleflash_recovery_areaPRIMARCHIVELOGVALID_FOR=(ALL_LOGFILES,ALL_ROLES)DB_UNIQUE_NAME=PRIM'LOG_ARCHIVE_DEST_2='SERVICE=STAN LGWR ASYNCVALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE)DB_UNIQUE_NAME=STAN'LOG_ARCHIVE_DEST_STATE_1=ENABLELOG_ARCHIVE_DEST_STATE_2=ENABLELOG_ARCHIVE_FORMAT=%t_%s_%r.arcLOG_ARCHIVE_MAX_PROCESSES=30remote_login_passwordfile='EXCLUSIVE'FAL_SERVER=STANFAL_CLIENT=PRIMSTANDBY_FILE_MANAGEMENT=AUTO# Specify the location of the standby DB datafiles followed by the primary location;DB_FILE_NAME_CONVERT='E:oracleproduct10.2.0oradataSTANDATAFILE','E:oracleproduct10.2.0oradataPRIMDATAFILE'# Specify the location of the standby DB online redo log files followedby the primary location LOG_FLE_NAME_CONVERT=’E:oracleproduct10.2.0oradataSTANONLINELOG’,’E:oracleproduct10.2.0oradataPRIMONLINELOG’,’F:Oracleflash_recovery_areaSTANONLINELOG’,’F:Oracleflash_recovery_areaPRIMONLINELOG’  
复制代码
           


6、 从pfile创建spfile,然后使用新的spfile重启主数据库
数据卫士必须使用spfile,创建spfile然后重启数据库:
在Windows平台上:
           
  1. SQL> shutdown immediate;SQL> startup nomount pfile=’databasepfilePRIM.ora’;SQL>create spfile from pfile=’databasepfilePRIM.ora’;--使用新创建的spfile启动主数据库SQL>shutdown immediate;SQL>Startup;   
复制代码
           

(注意:用你的Oracle home路径替换‘’中的内容)
在Unix平台上:
           
  1. SQL> shutdown immediate;SQL> startup nomount pfile=’/dbs/pfilePRIM.ora’;SQL>create spfile from pfile=’/dbs/pfilePRIM.ora’;--使用新创建的spfile启动主数据库SQL>shutdown immediate;SQL>Startup;   
复制代码
           

(注意:用你的Oracle home路径替换‘’中的内容)



三、在后备数据库上:
1、在后备数据库上创建主数据库数据文件的拷贝
在主数据库上:
SQL>shutdown immediate;
在后备数据库上(此时主数据库已经停掉):
1.1) 创建存放数据文件的目录,例如:在Windows上,E:oracleproduct10.2.0oradataSTANDATAFILE,在Unix上做对应的修改。
1.2) 拷贝数据文件和临时文件。
1.3) 为在线日志创建目录(多个),例如:在Windows上,E:oracleproduct10.2.0oradataSTANONLINELOG和F:Oracleflash_recovery_areaSTANONLINELOG,在Unix上做对应的修改。
1.4) 拷贝在线日志。
2、为后备数据库创建控制文件
在主数据库上为后备数据库创建控制文件:
           
  1. SQL>startup mount;SQL>alter database create standby controlfile as ‘STAN.ctl;SQL>ALTER DATABASE OPEN;   
复制代码
           

3、拷贝主数据库pfile文件到后备服务器,并重命名/编辑它
3.1)从主服务器拷贝pfilePRIM.ora文件到后备服务器,Windows平台就拷贝到Oracle home目录下的database文件夹,Unix平台就拷贝到Oracle home目录下的dbs目录。
3.2)将其重命名为pfileSTAN.ora,并做如下修改:(这里的路径来Windows平台,对于Unix平台请做相应修改)
           
  1. $Cd $ORACLE_HOME/dbs$Orapwd file=pwdPRIM.ora password=xxxxxxxx force=y    0
复制代码
           

(注意:这里并没有列出所有的参数条目)
4、在后备服务器上,为转储和日志归档目的地创建对应的目录:

创建目录adump,bdump,cdump,udump,并为归档日志目的地创建目录。
5、从主服务器拷贝后备控制文件STAN.ctl到后备目的地。
6、拷贝主密码文件到后备服务器,并重命名为pwdSTAN.ora。
在Windows平台上拷贝到database文件夹,在Unix平台上拷贝到/dbs目录,然后重命名这个密码文件。
7、 在Windows上创建一个服务(可选的):
$oradim –NEW –SID STAN –STARTMODE manual
8、 配置主备数据库的监听器
8.1)在主系统上:使用Oracle Net Manager创建监听器PRIM和STAN,然后重启监听
  $lsnrctl stop
$lsnrctl start
8.2)在后备服务器上:使用Net Manager创建监听器PRIM和STAN,然后重启监听
  $lsnrctl stop
$lsnrctl start
9、 创建Oracle网络服务名
9.1)在主系统上:使用Oracle Net Manager创建网络服务名PRIM和STAN,用tnsping检查这两个服务
  $tnsping PRIM
$tnsping STAN
10、 在后备服务器上,设置环境变量ORACLE_HOME和ORACLE_SID。
11、 启动后备数据库到nomount状态,产生一个spfile文件。
           
  1. $Cd $ORACLE_HOME/dbs$Orapwd file=pwdPRIM.ora password=xxxxxxxx force=y    1
复制代码
           

(注意:请用你自己的ORACLE home目录替换‘’中的内容)
12、 开始应用重做日志
12.1在后备数据库上,启动重做日志应用:
SQL>alter database recover managed standby database disconnect from session;
如果你永远都不需要停止日志应用服务:
SQL> alter database recover managed standby database cancel;
13、 校验后备数据库运转是否正常
13.1在后备数据库上执行一个查询:
SQL>select sequence#, first_time, next_time from v$archived_log;
13.2在主数据库上,强制切换日志:
SQL>alter system switch logfile;
13.3在后备数据库上,校验被应用的归档重做日志文件:
SQL>select sequence#, applied from v$archived_log order by sequence#;
14、 如果你不想等待归档当前重做日志文件就应用重做数据,需要启用实时应用:
SQL> alter database recover managed standby database using current logfile disconnect;
15、 要创建多个后备数据库,重复这些步骤即可。
四、维护
1、经常检查主/备数据库的警告日志,监视数据卫士环境中的数据操作。
2、清除主/备数据库上的归档日志。
我每周会对整个主数据库进行热备份,并备份归档日志,然后删除主服务器上的归档日志。
在后备数据库上,我每周运行RMAN执行备份和删除归档日志。
           
  1. $Cd $ORACLE_HOME/dbs$Orapwd file=pwdPRIM.ora password=xxxxxxxx force=y    2
复制代码
           


3、密码管理。
每个系统上的sys用户的密码必须一致,以便参考二.2中步骤2更新或重新创建passwd文件。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-11-17 02:49 , 耗时 0.092106 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表