我正在寻找一种不错的方法来保持辅助 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 以及更昂贵的标准版和企业版。
我没有使用过该产品,只是发现如果您需要避免企业版的成本并且不愿意使用自己的脚本,它是一个选择。