{"id":1027,"date":"2024-06-24T17:54:07","date_gmt":"2024-06-24T20:54:07","guid":{"rendered":"https:\/\/www.fernandosimon.com\/blog\/?p=1027"},"modified":"2024-06-24T17:57:08","modified_gmt":"2024-06-24T20:57:08","slug":"23ai-new-flashback-logs-parameters","status":"publish","type":"post","link":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/","title":{"rendered":"23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST"},"content":{"rendered":"<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">Oracle database has the <\/span><a class=\"editor-rtfLink\" href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/adfns\/flashback.html?source=%3Aso%3Atw%3Aor%3Aawr%3Aore%3A%3A%3Aautonmousblog&amp;source=%3Aso%3Atw%3Aor%3Aawr%3Aore%3A%3A%3Aautonmousblog#GUID-03D1CAAE-D940-444A-8771-B1BC636D105D\" target=\"_blank\" rel=\"noopener\"><span data-preserver-spaces=\"true\">Oracle Flashback Technology<\/span><\/a><span data-preserver-spaces=\"true\"> that allows you to view old images of your data without the need to restore your database. You can use restore points, restore tables, and<\/span> <span data-preserver-spaces=\"true\">rows, and do a lot of things. To use it (in a simple way), you need to enable the archivelog and flashback mode for your database and Oracle will create additional logs while you change the data. <\/span><\/p>\n<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">Unfortunately, it is exactly these logs that create some issues. <\/span><a class=\"editor-rtfLink\" href=\"https:\/\/jonathanlewis.wordpress.com\/2015\/03\/09\/flashback-logging\/\" target=\"_blank\" rel=\"noopener\"><span data-preserver-spaces=\"true\">Jonathan Lewis already described this issue<\/span><\/a><span data-preserver-spaces=\"true\">, and in <\/span><span data-preserver-spaces=\"true\">resume<\/span><span data-preserver-spaces=\"true\">, while changing the data you need to write more because you will use UNDO + Flashback logs. In essence, you write more every time.&nbsp; <\/span><\/p>\n<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">Until Oracle 23ai, it was not possible to change the place where you write these logs, (more or less) it will always be where you write your <\/span><span data-preserver-spaces=\"true\">archivelogs<\/span><span data-preserver-spaces=\"true\"> (when using the fast recovery area). So, <\/span><span data-preserver-spaces=\"true\">archivelogs<\/span><span data-preserver-spaces=\"true\"> and flashback logs are tight where they reside. Luckily this changed, and the <\/span><a class=\"editor-rtfLink\" href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/nfcoa\/oltp_availability.html#GUID-oltp_availability32\" target=\"_blank\" rel=\"noopener\"><span data-preserver-spaces=\"true\">new features of 23ai<\/span><\/a><span data-preserver-spaces=\"true\"> explain:<\/span><\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1028 size-large\" src=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs-1024x346.png\" alt=\"\" width=\"625\" height=\"211\" srcset=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs-1024x346.png 1024w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs-300x101.png 300w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs-768x259.png 768w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs-624x211.png 624w, https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs.png 1214w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">The idea is to put the flashback logs in a dedicated (and fast) disk to reduce the impact of writing them.<\/span><\/p>\n<p style=\"text-align: justify;\"><!--more Click here to read more...--><\/p>\n<h1 style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">How it works?<\/span><\/h1>\n<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">Now with 23ai, <\/span><a class=\"editor-rtfLink\" href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/bradv\/configuring-rman-client-basic.html#GUID-233338E2-3EE6-4248-A2B6-16A7899DB14F\" target=\"_blank\" rel=\"noopener\"><span data-preserver-spaces=\"true\">we have two new parameters<\/span><\/a><span data-preserver-spaces=\"true\"> that can be used:<\/span><\/p>\n<ul style=\"text-align: justify;\">\n<li><a class=\"editor-rtfLink\" href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/refrn\/DB_FLASHBACK_LOG_DEST.html#GUID-DF58CD9C-4B45-4C69-82F2-7E29B90ED7C9\" target=\"_blank\" rel=\"noopener\"><span data-preserver-spaces=\"true\">DB_FLASHBACK_LOG_DEST<\/span><\/a><span data-preserver-spaces=\"true\">: This is the path where you want to write the flashback logs.<\/span><\/li>\n<li><a class=\"editor-rtfLink\" href=\"https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/23\/refrn\/DB_FLASHBACK_LOG_DEST_SIZE.html#GUID-817A1C0E-686C-4AF2-8B8C-75045E80F6A9\" target=\"_blank\" rel=\"noopener\"><span data-preserver-spaces=\"true\">DB_FLASHBACK_LOG_DEST_SIZE<\/span><\/a><span data-preserver-spaces=\"true\">: This is the size (like the DB_RECOVERY_FILE_DEST_SIZE) that can be used for the flashback log. If you reach the limit, the oldest one will be rewritten.<\/span><\/li>\n<\/ul>\n<h1 style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">How to use it?<\/span><\/h1>\n<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">First I need to describe my test environment, I have the patch below where I can simulate writing in different disk scenarios:<\/span><\/p>\n<ul style=\"text-align: justify;\">\n<li><span data-preserver-spaces=\"true\">\/opt\/oracle\/<\/span><span data-preserver-spaces=\"true\">oradata<\/span><span data-preserver-spaces=\"true\">\/FREE\/recovery\/:&nbsp; Where it is the fast recovery area<\/span><span data-preserver-spaces=\"true\">. It points to a disk at NAS (7.200 rpm disk, and 1Gbps network).<\/span><\/li>\n<li><span data-preserver-spaces=\"true\">\/opt\/oracle\/<\/span><span data-preserver-spaces=\"true\">oradata<\/span><span data-preserver-spaces=\"true\">\/REMOTESSD\/: Where the tablespace is. It points to an NVME disk running in my NAS (1Gbps network).<\/span><\/li>\n<li><span data-preserver-spaces=\"true\">\/opt\/oracle\/<\/span><span data-preserver-spaces=\"true\">oradata<\/span><span data-preserver-spaces=\"true\">\/LOCALSSD\/: It points to a local NVME disk in my machine. <\/span><\/li>\n<\/ul>\n<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">And for the test, I will use the same example provided by <\/span><a class=\"editor-rtfLink\" href=\"https:\/\/jonathanlewis.wordpress.com\/2015\/03\/09\/flashback-logging\/\" target=\"_blank\" rel=\"noopener\"><span data-preserver-spaces=\"true\">Jonathan Lewis<\/span><\/a><span data-preserver-spaces=\"true\">. I will create one tablespace (<\/span><span data-preserver-spaces=\"true\">tbsload<\/span><span data-preserver-spaces=\"true\">), and<\/span> <span data-preserver-spaces=\"true\">one table with the active index:<\/span><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">[oracle@o23fdc11 ~]$ sqlplus \/ as sysdba\r\n\r\nSQL*Plus: Release 23.0.0.0.0 - Production on Mon Jun 17 22:30:31 2024\r\nVersion 23.4.0.24.05\r\n\r\nCopyright (c) 1982, 2024, Oracle.  All rights reserved.\r\n\r\n\r\nConnected to:\r\nOracle Database 23ai Free Release 23.0.0.0.0 - Develop, Learn, and Run for Free\r\nVersion 23.4.0.24.05\r\n\r\nSQL&gt; archive log list;\r\nDatabase log mode              Archive Mode\r\nAutomatic archival             Enabled\r\nArchive destination            USE_DB_RECOVERY_FILE_DEST\r\nOldest online log sequence     1\r\nNext log sequence to archive   1\r\nCurrent log sequence           1\r\nSQL&gt; show pdbs\r\n\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n         3 FREEPDB1                       READ WRITE NO\r\n         4 PDBDC1                         MOUNTED\r\nSQL&gt; alter pluggable database PDBDC1 open;\r\n\r\nPluggable database altered.\r\n\r\nSQL&gt; alter session set container = PDBDC1;\r\n\r\nSession altered.\r\n\r\nSQL&gt; create bigfile tablespace  tbsload datafile '\/opt\/oracle\/oradata\/REMOTESSD\/tbsload.dbf' size 5G autoextend on next 1G maxsize unlimited;\r\n\r\nTablespace created.\r\n\r\nSQL&gt; set timing on\r\nSQL&gt; create table t1 segment creation immediate tablespace tbsload\r\n  2  as\r\n  3  select * from all_objects\r\n  4  where   rownum &lt; 1\r\n  5  ;\r\n\r\nTable created.\r\n\r\nSQL&gt; create index t1_i1 on t1(object_name, object_id) tablespace tbsload;\r\n\r\nIndex created.\r\n\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">With that, I can insert several times to check the impact of the flashback logs. <strong>My focus here is just to check the impact of having the flashbacks and using the new parameters<\/strong>. I will do some tests using: just archivelogs, the traditional case with flashback logs in the same place as archivelogs, and the last one using the new parameters. &nbsp;I will collect the inserts several times to check the time (with simple <em>set timing on<\/em>) and share the results.<\/p>\n<h1 style=\"text-align: justify;\">Just archivelogs<\/h1>\n<p style=\"text-align: justify;\">Below you can see that I just used the arhivelogs. The database is not in running with flashback enabled:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">SQL&gt; select LOG_MODE, FLASHBACK_ON from v$database;\r\n\r\nLOG_MODE     FLASHBACK_ON\r\n------------ ------------------\r\nARCHIVELOG   NO\r\n\r\nSQL&gt; alter session set container = PDBDC1;\r\n\r\nSession altered.\r\n\r\nSQL&gt; set timing on\r\nSQL&gt; select count(*) from t1;\r\n\r\n  COUNT(*)\r\n----------\r\n         0\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt;\r\nSQL&gt; insert \/*+ append *\/ into t1\r\n  2  with object_data as (\r\n  3          select --+ materialize\r\n  4                  *\r\n  5          from\r\n  6                  all_objects\r\n  7          where\r\n  8                  rownum &lt;= 50000\r\n  9  ),\r\n 10  counter as (\r\n 11          select  --+ materialize\r\n 12                  rownum id\r\n 13          from dual\r\n 14          connect by\r\n 15                  level &lt;= 32\r\n 16  )\r\n 17  select\r\n 18         \/*+ leading (ctr obj) use_nl(obj) *\/\r\n 19          obj.*\r\n 20  from\r\n 21          counter         ctr,\r\n 22          object_data     obj\r\n 23  ;\r\n\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:10.19\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:01.00\r\nSQL&gt; \r\n...\r\n...\r\n\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:10.34\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt; \r\n...\r\n...\r\n\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:10.23\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.22\r\nSQL&gt; \r\n...\r\n...\r\n\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:10.29\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.21\r\nSQL&gt; \r\n...\r\n...\r\n\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:10.33\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">So, for these 5 executions, we got an <strong>average time of 10.276 seconds<\/strong> (10.19, 10.34, 10.23, 10.29, 10.33). You see above that between every execution I called the rollback. If you are interested, if I commit (between every execution), the average time was 14.558 seconds (10.29, 13.97, 16.06, 18.22, 14.25).<\/p>\n<h1 style=\"text-align: justify;\">Archivelogs and Flashback logs at Fast Recovery Area<\/h1>\n<p style=\"text-align: justify;\">The next step was simple, I enabled the flashback mode and tried again. Just to remember, in this case, both the archivelogs and flashback logs are in the Fast Recovery Area and it reside on my NAS drive (path \/opt\/oracle\/oradata\/FREE\/recovery\/):<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">SQL&gt; alter session set container = cdb$root;\r\n\r\nSession altered.\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt; alter database flashback on;\r\n\r\nDatabase altered.\r\n\r\nElapsed: 00:00:02.17\r\nSQL&gt; alter session set container = PDBDC1;\r\n\r\nSession altered.\r\n\r\nElapsed: 00:00:00.02\r\nSQL&gt;\r\n\r\nSQL&gt; select count(*) from t1;\r\n\r\n  COUNT(*)\r\n----------\r\n         0\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt;\r\n...\r\n...\r\n\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:14.47\r\nSQL&gt; rollback;\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt; \r\n...\r\n...\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:14.77\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.70\r\nSQL&gt; \r\n...\r\n...\r\n\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:15.94\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.01\r\nSQL&gt;\r\n...\r\n...\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:15.20\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt; \r\n...\r\n...\r\n\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:13.87\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.01\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">So, <strong>doing the rollback<\/strong> between every execution <\/span><span data-preserver-spaces=\"true\">the<\/span><span data-preserver-spaces=\"true\"> average time was 14,85 seconds (14.47, 14.77, 15.94, 15.2, 13.87).<\/span><strong><span data-preserver-spaces=\"true\"> So, the execution was 44,51% slower compared with using only archivelogs<\/span><\/strong><span data-preserver-spaces=\"true\">. <\/span><\/p>\n<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\"><strong>For the commit<\/strong>, the average was 18.162 seconds (13.89, 18.44, 19.57, 19.06, 19.85). <\/span><strong><span data-preserver-spaces=\"true\">Representing<\/span><span data-preserver-spaces=\"true\"> one execution 24.75% slower<\/span><\/strong><strong style=\"font-size: 1rem;\">.<\/strong><\/p>\n<h1 style=\"text-align: justify;\">Setting the DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST<\/h1>\n<p style=\"text-align: justify;\">As discussed above (and in the docs) the idea to set these two parameters is to reduce the impact of enabling the flashback logs. So, in this example, I set the flashback logs to my local SSD:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">SQL&gt; alter session set container = cdb$root;\r\n\r\nSession altered.\r\n\r\nElapsed: 00:00:00.08\r\nSQL&gt;\r\nSQL&gt; alter database flashback off;\r\n\r\nDatabase altered.\r\n\r\nElapsed: 00:00:00.21\r\nSQL&gt;\r\nSQL&gt; show parameter flashback;\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\ndb_flashback_log_dest                string\r\ndb_flashback_log_dest_size           big integer 0\r\ndb_flashback_retention_target        integer     1440\r\nSQL&gt; alter system set db_flashback_log_dest_size = 10G scope = both;\r\n\r\nSystem altered.\r\n\r\nElapsed: 00:00:00.03\r\nSQL&gt; alter system set db_flashback_log_dest='\/opt\/oracle\/oradata\/LOCALSSD' scope = both;\r\n\r\nSystem altered.\r\n\r\nElapsed: 00:00:00.03\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">As you see I disabled the flashback log before setting the new parameters. I recommend doing this (if you can) to have a clean start. You can see that after enabling the flashback logs they are in the desired place:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">SQL&gt; set linesize 255\r\nSQL&gt; col NAMEFL format a70\r\nSQL&gt; alter database flashback on;\r\n\r\nDatabase altered.\r\n\r\nElapsed: 00:00:00.43\r\nSQL&gt; SELECT sequence# as seq, name as namefl, bytes\/1024\/1024 as size_mb, to_char(first_time, 'DD\/MM\/RRRR HH24:MI') as firsttime  from v$flashback_database_logfile order by first_time;\r\n\r\n       SEQ NAMEFL                                                                    SIZE_MB FIRSTTIME\r\n---------- ---------------------------------------------------------------------- ---------- ----------------\r\n         1 \/opt\/oracle\/oradata\/LOCALSSD\/FREE\/flashback\/o1_mf_m719cdk2_.flb               200 17\/06\/2024 23:06\r\n         1 \/opt\/oracle\/oradata\/LOCALSSD\/FREE\/flashback\/o1_mf_m719ch5x_.flb               200\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\">And doing the same example I got these results:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\">SQL&gt; alter session set container = PDBDC1;\r\n\r\nSession altered.\r\n\r\nElapsed: 00:00:00.01\r\nSQL&gt; select count(*) from t1;\r\n\r\n  COUNT(*)\r\n----------\r\n         0\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt;\r\n...\r\n...\r\n\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:11.63\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt; \r\n...\r\n...\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:11.57\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.01\r\nSQL&gt; \r\n...\r\n...\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:11.63\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.00\r\nSQL&gt; \r\n...\r\n...\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:11.69\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.01\r\nSQL&gt; \r\n...\r\n...\r\n1600000 rows created.\r\n\r\nElapsed: 00:00:11.78\r\nSQL&gt; rollback;\r\n\r\nRollback complete.\r\n\r\nElapsed: 00:00:00.01\r\nSQL&gt;<\/pre>\n<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">So, the numbers don\u2019t lie, and setting just the flashback logs to the fast location (remember I am still running in <\/span><span data-preserver-spaces=\"true\">archivelog<\/span><span data-preserver-spaces=\"true\"> mode and have them at<\/span><span data-preserver-spaces=\"true\">&nbsp;the fast recovery area) the average was 11.66 seconds (11.63, 11.57, 11.63, 11.69, 11.78). <\/span><strong><span data-preserver-spaces=\"true\">This is only 13.46% slower compared with using just <\/span><span data-preserver-spaces=\"true\">archivelogs<\/span><span data-preserver-spaces=\"true\">. And it was 21.48% faster than running with <\/span><span data-preserver-spaces=\"true\">archivelogs<\/span><span data-preserver-spaces=\"true\"> and flashback logs writing at the same slow path<\/span><\/strong><span data-preserver-spaces=\"true\">.<\/span><\/p>\n<p style=\"text-align: justify;\"><span data-preserver-spaces=\"true\">Interestingly, the numbers don\u2019t lie, and doing the commit in the middle of every execution I got the average of 13.626 seconds (13.77, 15.41, 13.7, 12.96, 12.29). <\/span><strong><span data-preserver-spaces=\"true\">And surprisingly this was 6.4% faster than our baseline (using just <\/span><span data-preserver-spaces=\"true\">archivelog<\/span><span data-preserver-spaces=\"true\">)<\/span><\/strong><span data-preserver-spaces=\"true\">. <\/span><strong><span data-preserver-spaces=\"true\">And it was 24% faster than running with <\/span><span data-preserver-spaces=\"true\">archivelogs<\/span><span data-preserver-spaces=\"true\"> and flashback logs writing at the the fast recovery area.<\/span><\/strong><\/p>\n<h1 style=\"text-align: justify;\">Summary<\/h1>\n<p style=\"text-align: justify;\">The resume was clear, running the database in archivelog mode with flashback log on as faster disks, is a clear advantage. These new parameters for 23ai help when you can put your flashback logs in other (fast) locations.&nbsp;<\/p>\n<p style=\"text-align: justify;\">In one additional post, I cover special cases when setting these parameters. Some interesting details.<\/p>\n<p style=\"text-align: justify;\">&nbsp;<\/p>\n<p style=\"text-align: justify;\"><strong>Disclaimer<\/strong>: \u201c<em>The postings on this site are my own and don\u2019t necessarily represent my actual employer positions, strategies, or opinions. The information here was edited to be useful for general purposes, specific data and identifications were removed to allow reach the generic audience and to be useful for the community. Post protected by copyright<\/em>\u201d&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oracle database has the Oracle Flashback Technology that allows you to view old images of your data without the need to restore your database. You can use restore points, restore tables, and rows, and do a lot of things. To use it (in a simple way), you need to enable the archivelog and flashback mode [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[179,29,5],"tags":[180,66,182,65],"class_list":["post-1027","post","type-post","status-publish","format-standard","hentry","category-23ai","category-database","category-oracle","tag-23ai","tag-database","tag-flashback-logs","tag-oracle"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST - Fernando Simon<\/title>\n<meta name=\"description\" content=\"How to use 23ai and the new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST to have a faster database.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST - Fernando Simon\" \/>\n<meta property=\"og:description\" content=\"How to use 23ai and the new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST to have a faster database.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/\" \/>\n<meta property=\"og:site_name\" content=\"Fernando Simon\" \/>\n<meta property=\"article:published_time\" content=\"2024-06-24T20:54:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-06-24T20:57:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs-1024x346.png\" \/>\n<meta name=\"author\" content=\"Simon\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Simon\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/\"},\"author\":{\"name\":\"Simon\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#\\\/schema\\\/person\\\/386da956604bca0d5be5dd52210c1dd9\"},\"headline\":\"23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST\",\"datePublished\":\"2024-06-24T20:54:07+00:00\",\"dateModified\":\"2024-06-24T20:57:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/\"},\"wordCount\":927,\"commentCount\":2,\"image\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/23ai-Flashback-Logs-1024x346.png\",\"keywords\":[\"23ai\",\"Database\",\"flashback logs\",\"Oracle\"],\"articleSection\":[\"23ai\",\"Database\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/\",\"url\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/\",\"name\":\"23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST - Fernando Simon\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/23ai-Flashback-Logs-1024x346.png\",\"datePublished\":\"2024-06-24T20:54:07+00:00\",\"dateModified\":\"2024-06-24T20:57:08+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#\\\/schema\\\/person\\\/386da956604bca0d5be5dd52210c1dd9\"},\"description\":\"How to use 23ai and the new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST to have a faster database.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/23ai-Flashback-Logs.png\",\"contentUrl\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/23ai-Flashback-Logs.png\",\"width\":1214,\"height\":410},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/23ai-new-flashback-logs-parameters\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/\",\"name\":\"Fernando Simon\",\"description\":\"Have you hugged your backup today?\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/#\\\/schema\\\/person\\\/386da956604bca0d5be5dd52210c1dd9\",\"name\":\"Simon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g\",\"caption\":\"Simon\"},\"sameAs\":[\"http:\\\/\\\/www.fernandosimon.com\"],\"url\":\"https:\\\/\\\/www.fernandosimon.com\\\/blog\\\/author\\\/simon\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST - Fernando Simon","description":"How to use 23ai and the new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST to have a faster database.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/","og_locale":"en_US","og_type":"article","og_title":"23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST - Fernando Simon","og_description":"How to use 23ai and the new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST to have a faster database.","og_url":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/","og_site_name":"Fernando Simon","article_published_time":"2024-06-24T20:54:07+00:00","article_modified_time":"2024-06-24T20:57:08+00:00","og_image":[{"url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs-1024x346.png","type":"","width":"","height":""}],"author":"Simon","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Simon","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/#article","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/"},"author":{"name":"Simon","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"headline":"23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST","datePublished":"2024-06-24T20:54:07+00:00","dateModified":"2024-06-24T20:57:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/"},"wordCount":927,"commentCount":2,"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs-1024x346.png","keywords":["23ai","Database","flashback logs","Oracle"],"articleSection":["23ai","Database","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/","url":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/","name":"23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST - Fernando Simon","isPartOf":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/#primaryimage"},"image":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/#primaryimage"},"thumbnailUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs-1024x346.png","datePublished":"2024-06-24T20:54:07+00:00","dateModified":"2024-06-24T20:57:08+00:00","author":{"@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9"},"description":"How to use 23ai and the new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST to have a faster database.","breadcrumb":{"@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/#primaryimage","url":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs.png","contentUrl":"https:\/\/www.fernandosimon.com\/blog\/wp-content\/uploads\/2024\/06\/23ai-Flashback-Logs.png","width":1214,"height":410},{"@type":"BreadcrumbList","@id":"https:\/\/www.fernandosimon.com\/blog\/23ai-new-flashback-logs-parameters\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.fernandosimon.com\/blog\/"},{"@type":"ListItem","position":2,"name":"23ai, new parameters DB_FLASHBACK_LOG_DEST_SIZE and DB_FLASHBACK_LOG_DEST"}]},{"@type":"WebSite","@id":"https:\/\/www.fernandosimon.com\/blog\/#website","url":"https:\/\/www.fernandosimon.com\/blog\/","name":"Fernando Simon","description":"Have you hugged your backup today?","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fernandosimon.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.fernandosimon.com\/blog\/#\/schema\/person\/386da956604bca0d5be5dd52210c1dd9","name":"Simon","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a3dbc48de62fffb1829befb4a588d789ec6dc5e05977afabb3407a5f37a16482?s=96&d=mm&r=g","caption":"Simon"},"sameAs":["http:\/\/www.fernandosimon.com"],"url":"https:\/\/www.fernandosimon.com\/blog\/author\/simon\/"}]}},"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5ofTp-gz","jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/1027","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/comments?post=1027"}],"version-history":[{"count":0,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/posts\/1027\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/media?parent=1027"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/categories?post=1027"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fernandosimon.com\/blog\/wp-json\/wp\/v2\/tags?post=1027"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}