如何实现Oracle数据的异地自动备份,即备份到网络中的另一台机器上,防止灾难发生

william100 2002-06-19 05:58:17
敬请高手指点:
  如何实现Oracle数据的异地自动备份,即备份到网络中的另一台机器上,防止灾难发生。
            不胜感激。
...全文
222 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
william100 2002-06-20
  • 打赏
  • 举报
回复
太好了,我试试
biti_rainy 2002-06-20
  • 打赏
  • 举报
回复
你的需求,就是 standby db!!!

其实具体实现并不是很复杂:

下面是itpub上 lunar2000的原文,有些原版配置文件我无法传上来
另外有snowihte2000在itpub上详细的论述
欢迎去 www.itpub.net oracle管理版参考

另:你自己仔细阅读standby的文档也是很有必要的


在两台机器上建立standby database 的经历

环境:
硬件: 两台compaq 的ES40
OS: Digital UNIX V4.0F (Rev. 1229);
ORACLE: ORACLE 816 EE FOR TRU64

PRIMARY
HOST NAME: FEPONE
IP : 192.168.2.207
ORACLE_HOME : ORACLE_HOME=/usr/oracle/app/oracle/product/8.1.6
ARCHIVE LOG位置 : /usr/oracle/arc_dest
ORACLE用户 : ORACLE
数据文件的位置 : /usr/oracle/data
ORACLE_SID=o816

STANDBY
HOST NAME : FEPTWO
IP : 192.168.2.208
ORACLE_HOME : ORACLE_HOME=/usr/oracle/app/oracle/product/8.1.6
standby_archive_dest = "/usr/oracle/arc_dest"
ORACLE用户 : ORACLE
数据文件的位置 : /usr/oracle/data
ORACLE_SID=o816sdb



建立步骤:
1. 分别在两台机器上建立dba组和oracle用户,并修改其.profile,其中,ORACLE_SID分别设置为不同的值,
此处为primary:o816; standby :o816sdb,并分别安装oracle(建议在目录结构相同,尽管不同也没关系,
但考虑到standby 是primary的完全备份,所以最好能一致的完全一致)。
然后,在primary上创建数据库,如果已经有了,则这步可以省略;

2. 确保primary 为archive log 模式:
用archive log list查看,若不是的,则进行如下修改:
shutdown----startup mount------alter database archivelog------alter database open;

3. 创建standby DB的控制文件
$SQLPLUS "/ AS SYSDBA"
SQL>alter database create standby controlfile as '/usr/oracle/data_bak/control01.ctl';

4. 将所有primary DB中所有的datafile做一个备份,以便以后传输到standby database中:
SQL>conn / as sysdba
SQL>select name from v$datafile;
SQL>shutdown immediate
$rcp /usr/oracle/data/*.dbf feptwo:/usr/oracle/data


5. 配置listener.ora:和一般的监听器没什么区别,可以把primary的listener.ora 复制到standby中相应的位置,然后稍加修改(就修改oracle_sid)
primary DB监听器listener:
# LISTENER.ORA Configuration File:/usr/oracle/app/oracle/product/8.1.6/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.207)(PORT = 1521))
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = o816)
(ORACLE_HOME = /usr/oracle/app/oracle/product/8.1.6)
(SID_NAME=o816)
)
)

standby DB监听器listener:
# LISTENER.ORA Configuration File:/usr/oracle/app/oracle/product/8.1.6/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.208)(PORT = 1521))
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = o816sdb)
(ORACLE_HOME = /usr/oracle/app/oracle/product/8.1.6)
(SID_NAME=o816sdb)
)
)
***注意,修改了listener.ora后,要想让它生效需要重新启动监听,或者用reload命令



6. 配置tnsnames.ora(一样的,直接cp就可以)
primary DB监听:
# TNSNAMES.ORA Configuration File:/usr/oracle/app/oracle/product/8.1.6/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
o816 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.207)(PORT = 1521))
)
(CONNECT_DATA =
(SID = o816)
(SRVR = DEDICATED)
)
)

o816sdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.208)(PORT = 1521))
)
(CONNECT_DATA =
(SID = o816sdb)
(SRVR = DEDICATED)
)
)


standby DB监听:
# TNSNAMES.ORA Configuration File:/usr/oracle/app/oracle/product/8.1.6/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
o816sdb =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.208)(PORT = 1521))
)
(CONNECT_DATA =
(SID = o816sdb)
(SERVER = DEDICATED)
)
)

o816 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.207)(PORT = 1521))
)
(CONNECT_DATA =
(SID = o816)
(SERVER = DEDICATED)
)
)

7. 分别在两台机器上,测试监听配置的是否正确


8. 修改primary DB的参数文件
修改时注意这些就好了:
log_archive_start = true
log_archive_dest_1 = "location=/usr/oracle/arc_dest MANDATORY REOPEN=60"********归档到本地的目的地
log_archive_dest_state_1 = ENABLE******显示说明(确定)可以归档到这个路径
LOG_ARCHIVE_DEST_2 = 'SERVICE=o816sdb optional REOPEN=60'*********standby db 的service name(archive log从primary传送到standby的哪个位置)
LOG_ARCHIVE_DEST_STATE_2 = ENABLE
log_archive_format = arch_%t_%s.arc
**注意log_archive_dest_n和location、SERVICE关键字一同使用

9. 将primary DB的参数文件copy到standby,并修改它
(可以自行设置copy到哪里,如果copy到$ORACLE_HOME/dbs中或在这个位置建立一个该文件的link,每次启动时就不用pfile参数)
修改时注意这些就好了:
db_name = "o816"***************必须与primary DB一致
instance_name = o816sdb************listener.ora文件的SID_NAME将与之一致
service_names = o816sdb************tnsnames.ora文件的GLOBAL_NAME将与之一致

control_files = ("/usr/oracle/data/control01.ctl")********注意修改standby DB的control file的位置

log_archive_start = true
log_archive_dest_1 = "location=/usr/oracle/arc_dest"****************因为缺省时,standby db在LOG_ARCH_DEST_1 目录中查找归档重做日志,所以应该设置LOG_ARCH_DEST_1 与STANDBY_ARCH_DEST 的值相同。
standby_archive_dest = "/usr/oracle/arc_dest"**********来自primary db的archive log file将传送并写入到这个位置。
log_archive_dest_state_1 = ENABLE
log_archive_format = arch_%t_%s.arc
db_file_name_convert = ("/usr/oracle/data","/usr/oracle/data")*********将primary db 的datafile的位置重命名到standby db的datafile的位置,oracle document说如果这个不成功,应当手工重命名standby db 的datafile的文字,不过我没试过,呵呵
log_file_name_convert = ("/usr/oracle/app/oracle/product/8.1.6/data/oradata/o816","/usr/oracle/app/oracle/product/8.1.6/data/oradata/o816")*********将primary db 的redo log file的位置重命名到standby db的redo log file的位置,oracle document说如果这个不成功,应当手工重命名standby db 的redo log file的文字,不过我没试过,呵呵

lock_name_space=stdby ***指定DLM的名字空间(命名空间)为stdby。

compatible = "8.1.0"***************必须与primary DB的一致




10. Start the Standby Database:
conn / as sysdba;
SQL>STARTUP NOMOUNT PFILE=init.ora;
(如果在$ORACLE_HOME/dbs目录中做设置了相应link,则只需startup nomount)
然后:SQL> ALTER DATABASE MOUNT STANDBY DATABASE;

11. 在primary上启动数据库,并归档
ALTER SYSTEM ARCHIVE LOG CURRENT;
经归档的文件传送到standby的相应位置 :/usr/oracle/arc_dest

12. 准备启动standby db管理回复
使用AUTOMATIC选项回复数据库
SQL>RECOVER AUTOMATIC STANDBY DATABASE;
见到形如Specify log: {<RET>=suggested | filename | AUTO | CANCEL}的提示,只管会车就好了

13. 完成上面的操作后,standby就可以进入managed recovery mode
SQL>recovery managed standby database;

注意:
可以使用recover managed standby database timeout 5
在随后的5分钟里等待primary db传送过来的archive log file;
发出这个命令后,可以转到tty1,做一次 alter system archive log current,
然后看看改archive log file是否自动传送到了/usr/oracle/arc_dest中了:)
5分钟后,系统回到11的状态,这是可以尝试一下read open standby db。

15. read open standby db
SQL> ALTER DATABASE OPEN READ ONLY;
现在就可以做进一步更多的测试了,比如在primary db建个用户,建个表等等,
然后把它给归档了,在standby db看看效果,呵呵




bzszp 2002-06-20
  • 打赏
  • 举报
回复
设置自动归档大体步骤:(具体情况请查查资料)
在命令提示符下
svrmgrl
connect internal/oracle
archive log list//察看归档模式
如为no archive mode
设置init.ora中的log_archive_dest参数//归档日志保存位置
svrmgrl
connect internal/oracle
shutdown immediate
startup mount
alter database archielog;
alter database oopen;
penitent 2002-06-19
  • 打赏
  • 举报
回复
可以采用备用服务器,主服务器把归档日志传过去,然后在备用服务器上用归档日志来保持同步
---------------
其具体配置比较多,建议参考
oracle 8i backup and recovery

2,598

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧