暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ORA-38706 无法开启FLASHBACK DATABASE

原创 Xiaofei Huangfu 2024-08-27
275

适用范围
Oracle Database 19.15+

问题概述
无法开启FLASHBACK DATABASE模式时,报ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-04031: unable to allocate 31874944 bytes of shared memory (“shared
pool”,“unknown object”,“sga heap(2,0)”,“flashback generation buffer”)

问题原因
Oracle数据库Share pool中的flashback generation buffer不足

解决方案
设置如下参数,并重启数据库使参数生效:

alter system set “_allocate_flashback_buffer”=TRUE scope=spfile sid=’*’;

操作过程

1、开启FLASHBACK DATABASE模式
SQL> alter database flashback on;
alter database flashback on
*
ERROR at line 1:
ORA-38706: Cannot turn on FLASHBACK DATABASE logging.
ORA-04031: unable to allocate 31874944 bytes of shared memory (“shared
pool”,“unknown object”,“sga heap(2,0)”,“flashback generation buffer”)
2、调整_allocate_flashback_buffer参数

alter system set “_allocate_flashback_buffer”=TRUE scope=spfile sid=’*’;
3、重启数据库

host01# srvctl status db -d DB
Instance DB1 is running on node host01
Instance DB2 is running on node host02
host01# srvctl stop db -d DB
host01# srvctl status db -d DB
Instance DB1 is not running on node host01
Instance DB2 is not running on node host01
host01# srvctl start db -d DB

参数生效后数据库启动期间预分配闪回缓冲区,即使我们以后不打算创建还原点,也会分配内存。
4、开启FLASHBACK DATABASE模式

SQL> alter database flashback on;
5、创建restore point

SQL> CREATE RESTORE POINT BEFORE_CHANGE GUARANTEE FLASHBACK DATABASE;
Restore point created.

SQL> select NAME,SCN,GUARANTEE_FLASHBACK_DATABASE,DATABASE_INCARNATION# from v$restore_point;
NAME SCN GUA DATABASE_INCARNATION#
----------------------—--------------------------
BEFORE_CHANGE 6877750 YES 2
现在可以正常创建restore point

-the end-

最后修改时间:2024-08-28 10:26:50
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论