简易的 Oracle 日志传送

简易的 Oracle 日志传送

我正在寻找一种不错的方法来保持辅助 Oracle 数据库的更新,而无需每次都导出和导入数据库。实例上有 3 个用户,我本质上想“记录发送”,如果 Oracle 上是这样称呼的话!

有人可以提出什么建议吗?

数据库总量远低于 1 GB,而且我们正在运行 10g express(尽管我曾考虑使用 10g 标准版,因为我们有备用许可证)。

干杯

克里斯

答案1

这是我的做法:

我的主数据库已启用事务日志传送。日志写入 /db/archive。

每小时,cron 作业都会以 oracle 用户身份运行。此 cronjob 执行以下操作:

将 /db/archive/ 的内容移动到 /db_archive/YYYYMMDD/ (使用以下脚本(我没有编写,因此请不要责怪我))

 #!/bin/bash
 # args: <src> <dest> <date>

 datechunk=$3
 echo "Processing $datechunk"

 check=`ls $1 | wc -l`

 if [ $check -le 2 ]; then
     exit 0
 fi

 let check2=check-2
 echo "Processing $check2 files"
 ls -vA $1 | head -n $check2 > $2/dirlist.$datechunk

 for line in `cat $2/dirlist.$datechunk`
 do
    cp $1/$line $2/$datechunk
    if [ -s $2/$datechunk/$line ]; then
        rm $1/$line
    fi
 done

将 /db_archive/YYYYMMDD/ 的内容 rsyncs 到辅助服务器上的 /db_archive/YYYYMMDD。

这负责将文件传送到那里。

在辅助服务器上,/db/archive 是到 /db_archive/YYYYMMDD 的符号链接。“恢复备用数据库”会自动从 /db/archive/ 读取,因此无论您使用什么脚本来恢复数据库,都应该能够处理一天结束时生成的错误,这样它们就可以将符号链接切换到新的一天。

这有帮助吗?或者您需要更多信息吗?

答案2

我不确定 10g 和 10g express 之间有什么区别,但 10g 提供了类似于 LDAP 使用的复制功能,他们称之为“流复制“”。

我还看到了一些方法,在这些方法中,您可以设置远程数据库链接回主数据库,并使用物化视图将数据复制到每个副本上的本地表中。(显然,这有安全隐患,并且只能复制副本事先知道的表)。

答案3

你可以看看 DBVisithttp://www.dbvisit.com/。这是一个自动传输和应用 Oracle 重做日志的系统。它支持 XE 以及更昂贵的标准版和企业版。

我没有使用过该产品,只是发现如果您需要避免企业版的成本并且不愿意使用自己的脚本,它是一个选择。

相关内容