2020-09-23 21:46发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个关于进行完整转储的问题。我们每60分钟运行一次事务性转储,这会写入日志中。
然后,作为第二步,我们在日志中搜索"使用DUMP DATABASE代替"模式。 如果存在,则暗示必须进行完全转储。 我的问题是:这是检测完全转储的首选方法吗?
谢谢
有一个名为tran_dumpable_status(" database_name")的内置函数,用于检查事务日志当前是否可转储,
http://infocenter.sybase.com /help/topic/com.sybase.infocenter.dc36271.1600/doc/html/san1393050504617617.html 。
您的转储过程可以使用类似以下的逻辑,而不是尝试运行转储tran然后检查是否失败,
如果tran_dumpable_status(mydatabase)= 0
然后
将tran mydatabase转储到tranlog_archive_device_name
else 开始将truncate_only的tran tran mydatabase转储到db_archive_device_name end
我们完全按照Bret指出的方式使用tran_dumpable_status。
只需确保您不经意地排除了" tempdb"并喜欢进行完整的数据库转储。
在第二条语句的" else"子句中具有"潜在"值!
在一般情况下,处理临时数据库时应谨慎处理"使用truncate_only进行转储tran"。
HTH
Avinash
嗨,
当您收到"使用DUMP DATABASE代替"消息时,有几种情况:
如果您每小时进行一次tran转储,我们可以排除方案1。这意味着您正在执行与2中所述的最少记录的事务,这将在Backup Server日志中引发错误消息。
如果要编写tran日志转储的脚本,那么最好是测试错误并自动执行转储数据库。
希望这会有所帮助
Mehrab
嗨,尼基,
以下是有关TSQL中IF THEN ELSE语句的常规文档:
http://infocenter.sybase.com /help/topic/com.sybase.infocenter.dc32300.1600/doc/html/san1390612383583.html
我的示例只是一般的概述/伪代码。 这是一个可行的实现:
如果(select tran_dumpable_status(" test"))= 0 打印" tran日志可转储" else 打印" tran日志不可转储" go
干杯, -bret
Hello Bret,谢谢您的回答,但是如何在isql语句中使用if语句?还是您要记录日志? 结果出来,然后在每个数据库的bash脚本中分别编写if?
我尝试了一下,例如。 我知道了
------------ 32 (受影响的1行)
根据您的链接,它说明
32 –仅截断的转储tran中断了转储设备的所有连贯转储序列。
我该怎么解释?
让我确认我了解您的情况是否正确:
您每小时对ASE数据库执行一次DUMP TRAN。 由于上述错误消息而导致DUMP TRAN失败时,将执行完整的数据库转储。
这正确吗?
您的问题是,这是否是检测是否有必要进行完整转储的首选方法。 实际上,我会定期执行FULL DB DUMP,以解决您的需求,有时需要上线以备不时之需。
此外,每次由于某种原因导致事务日志序列中断时,您都必须获得完整的数据库转储-在保存方面,必须在应用程序脱机时使用(否则,冒着丢失事务数据的风险) 它是在完全转储成功完成之前生成的)。 因此,对于生产数据库,建议确保TX日志序列在在线时间内不会中断。
为了防止任何最少记录的语句复查数据库选项:
强制执行转储序列#确保没有人可以意外地运行破坏TX日志序列的内容
设置该值后,您可能需要安排一些活动,这些活动的确会中断日志顺序,直到申请终止,然后可以直接获取完整的数据库。此外,请查看这些数据库选项可能有多大帮助:
所有记录的完整记录变更表的完整记录 reorg重建的完整记录选择进入的完整记录
请注意," ...的所有这些完整日志"选项将增加写入TX日志的日志数量。
蒂尔曼
最多设置5个标签!
有一个名为tran_dumpable_status(" database_name")的内置函数,用于检查事务日志当前是否可转储,
http://infocenter.sybase.com /help/topic/com.sybase.infocenter.dc36271.1600/doc/html/san1393050504617617.html 。
您的转储过程可以使用类似以下的逻辑,而不是尝试运行转储tran然后检查是否失败,
如果tran_dumpable_status(mydatabase)= 0
然后
将tran mydatabase转储到tranlog_archive_device_name
else
开始
将truncate_only的tran tran mydatabase转储到db_archive_device_name
end
我们完全按照Bret指出的方式使用tran_dumpable_status。
只需确保您不经意地排除了" tempdb"并喜欢进行完整的数据库转储。
在第二条语句的" else"子句中具有"潜在"值!
在一般情况下,处理临时数据库时应谨慎处理"使用truncate_only进行转储tran"。
HTH
Avinash
嗨,
当您收到"使用DUMP DATABASE代替"消息时,有几种情况:
如果您每小时进行一次tran转储,我们可以排除方案1。这意味着您正在执行与2中所述的最少记录的事务,这将在Backup Server日志中引发错误消息。
如果要编写tran日志转储的脚本,那么最好是测试错误并自动执行转储数据库。
希望这会有所帮助
Mehrab
嗨,尼基,
以下是有关TSQL中IF THEN ELSE语句的常规文档:
http://infocenter.sybase.com /help/topic/com.sybase.infocenter.dc32300.1600/doc/html/san1390612383583.html
我的示例只是一般的概述/伪代码。 这是一个可行的实现:
如果(select tran_dumpable_status(" test"))= 0
打印" tran日志可转储"
else
打印" tran日志不可转储"
go
干杯,
-bret
Hello Bret,谢谢您的回答,但是如何在isql语句中使用if语句?
还是您要记录日志? 结果出来,然后在每个数据库的bash脚本中分别编写if?
我尝试了一下,例如。 我知道了
------------
32
(受影响的1行)
根据您的链接,它说明
32 –仅截断的转储tran中断了转储设备的所有连贯转储序列。
我该怎么解释?
让我确认我了解您的情况是否正确:
您每小时对ASE数据库执行一次DUMP TRAN。
由于上述错误消息而导致DUMP TRAN失败时,将执行完整的数据库转储。
这正确吗?
您的问题是,这是否是检测是否有必要进行完整转储的首选方法。
实际上,我会定期执行FULL DB DUMP,以解决您的需求,有时需要上线以备不时之需。
此外,每次由于某种原因导致事务日志序列中断时,您都必须获得完整的数据库转储-在保存方面,必须在应用程序脱机时使用(否则,冒着丢失事务数据的风险) 它是在完全转储成功完成之前生成的)。 因此,对于生产数据库,建议确保TX日志序列在在线时间内不会中断。
为了防止任何最少记录的语句复查数据库选项:
强制执行转储序列#确保没有人可以意外地运行破坏TX日志序列的内容
设置该值后,您可能需要安排一些活动,这些活动的确会中断日志顺序,直到申请终止,然后可以直接获取完整的数据库。
此外,请查看这些数据库选项可能有多大帮助:
所有记录的完整记录
变更表的完整记录
reorg重建的完整记录
选择进入的完整记录
请注意," ...的所有这些完整日志"选项将增加写入TX日志的日志数量。
HTH
蒂尔曼
一周热门 更多>