{"id":3186,"date":"2013-07-11T00:29:00","date_gmt":"2013-07-10T22:29:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/"},"modified":"2022-12-23T16:58:55","modified_gmt":"2022-12-23T15:58:55","slug":"oracle-database-12c-flashback-data-archive-fda-new-features","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/","title":{"rendered":"Oracle Database 12c: Flashback Data Archive (FDA) &#8211; new features"},"content":{"rendered":"<p><img decoding=\"async\" class=\"blog-image aligncenter\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg\" alt=\"\"><\/p>\n<p>Oracle Database 12c was published in June and among the new features of this release are multiple improvements of the Flashback Data Archive (FDA), an option also known as Oracle Total Recall. In this post, I will present the new features coming with Oracle 12c.<\/p>\n<h3>Overview<\/h3>\n<p>Before speaking about these improvements, let me point out the main concept of Oracle FDA.<\/p>\n<p>Flashback Data Archive appeared with Oracle 11g and improved the flashback technology introduced with earlier releases of Oracle Database:<\/p>\n<ul>\n<li>Flashback technology offers a solution to recover from human errors and logical corruptions based on undo data or flashback logs.<\/li>\n<\/ul>\n<ul>\n<li>FDA adds the ability to store database information for a long time &#8211; for archiving or restoring purposes &#8211; based on a dedicated archive tablespace. Data is still accessed with flashback queries (SELECT &#8230; AS OF SCN &#8230;), but the undo retention is not significant any more, since undo data is immediatly archived in the FDA during the FDA retention period.<\/li>\n<\/ul>\n<p>There are three scenarios where FDA can be useful:<\/p>\n<h4>1) Keeping historical data changes during a predefined retention<\/h4>\n<p>For example, a company that wants to keep important data during ten years for a legal reason can use FDA. Data exceeding the retention period will be automatically purged, without any administrative action<\/p>\n<h4>2) Navigating in time &#8211; like in a &#8220;time machine&#8221;<\/h4>\n<p>With FDA it is possible to go back into the past to get data for comparison purposes. For example, a company that wants to know what its stock was in the beginning of the year can use FDA to compare past data with the current values.<\/p>\n<h4>3) Recovering data after a bad manipulation<\/h4>\n<p>If some records have been removed or updated accidentally, FDA can be used in order to recover the values with a single query. However, reference constraints are not preserved by FDA.<\/p>\n<p>The following picture, extracted from the Oracle documentation, shows how FDA works:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/concept.jpg\" alt=\"concept\" width=\"473\" height=\"462\"><\/p>\n<p>Each information written in the undo tablespace is also written in the FDA by the FBDA background process.<\/p>\n<h3>Setting up your environment<\/h3>\n<p>I enabled FDA on an Oracle 12.1.0.1 database in order to test the new features.<br \/>\nFirst, I created a dedicated tablespace for FDA:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; create tablespace TBS_FDA datafile '\/u01\/oradata\/DB12C\/tbs_fda1.dbf' size 2G;<\/pre>\n<p>Then, I created a user to access the database, with correct roles and permissions to create tables and use the FDA.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; create user msc identified by *** quota unlimited on USERS,TBS_FDA;\nSQL&gt; grant CREATE SESSION, CREATE TABLE to msc;\nSQL&gt; grant FLASHBACK ARCHIVE on FBA1 to msc;\nSQL&gt; grant FLASHBACK ARCHIVE ADMINISTRATOR to msc;<\/pre>\n<p>As &#8220;msc&#8221; user, I created a flashback archive file:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; connect msc\/***\nSQL&gt; create flashback archive default FBA1 tablespace TBS_FDA retention 2 day;<\/pre>\n<p>Finally, I created a table in the msc schema and performed some DML:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; create table tb_products(prod_id number, prod_desc varchar(50)) flashback archive;\nSQL&gt; insert into tb_products values (1,'Oracle 9i');\nSQL&gt; insert into tb_products values (2,'Oracle 10g');\nSQL&gt; insert into tb_products values (3,'Oracle 11g');\nSQL&gt; commit;<\/pre>\n<p>With the table DBA_FLASHBACK_ARCHIVE_TABLES, we can see if FDA is activated in the table tb_products:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select TABLE_NAME, FLASHBACK_ARCHIVE_NAME, ARCHIVE_TABLE_NAME, STATUS\n&nbsp;&nbsp;&nbsp;&nbsp; from DBA_FLASHBACK_ARCHIVE_TABLES;\n&nbsp;\nTABLE_NAME&nbsp;&nbsp;&nbsp;&nbsp; FLASHBACK_ARCHIVE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ARCHIVE_TABLE_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STATUS\n-------------- --------------------------- -------------------------- ----------\nTB_PRODUCTS&nbsp;&nbsp;&nbsp; FBA1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SYS_FBA_HIST_91091&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENABLED<\/pre>\n<h3>Oracle 12c new features<\/h3>\n<p>There are some FDA improvements in Oracle Database 12c:<\/p>\n<h4>1) User context tracking<\/h4>\n<p>This new feature allows tracking the user context and makes it easier to know which user made which changes in a table.<br \/>\nTo track user-contexts, Oracle has created two new subprograms in the DBMS_FLASHBACK_ARCHIVE package as well as a new table.<\/p>\n<ul>\n<li><strong>&#8220;set_sys_context&#8221; procedure<\/strong><\/li>\n<\/ul>\n<p>This procedure allows to set the level of user-context to return. It has only one parameter (LEVEL).<br \/>\nThe possible values for the LEVEL parameter are:<\/p>\n<ul>\n<li>ALL: Obtain all information from sys_context<\/li>\n<li>TYPICAL: Provides the user id, the global user id and the hostname<\/li>\n<li>NONE: Nothing<\/li>\n<\/ul>\n<p>To enable the database to capture user-context, the procedure must be run once with &#8220;ALL&#8221; or &#8220;TYPICAL&#8221; value. Example for ALL:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; exec dbms_flashback_archive.set_context_level(level=&gt; 'ALL');<\/pre>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong>&#8220;get_sys_context&#8221; function<\/strong><\/li>\n<\/ul>\n<p>This function returns the user-context only if the procedure set_sys_context was previously run with a LEVEL different of NONE.<br \/>\nThe function has 3 parameters:<\/p>\n<ul>\n<li>XID: Transaction identifier provided by the archive history table<\/li>\n<li>NAMESPACE: Provided by SYS_FBA_CONTEXT_LIST<\/li>\n<li>PARAMETER: Parameters of namespace<\/li>\n<\/ul>\n<p>As an example, I have performed an update to generate an XID in the archive table SYS_FBA_HIST_91091:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; update tb_products set prod_desc='Oracle 11g R2' where prod_id=3;<\/pre>\n<p>After a few minutes, the background process FBDA recorded undo data in the flashback data archive. The archive table SYS_FBA_HIST_91091 now contains a record for the row, as it was before the update.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select xid, operation, prod_id, prod_desc from SYS_FBA_HIST_91091;\n&nbsp;\nXID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; O PROD_ID&nbsp;&nbsp;&nbsp; PROD_DESC\n---------------- - ---------- --------------------------------------------------\n05001100D6020000 I 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle 11g<\/pre>\n<p>To know who performed the insert of the product &#8220;Oracle 11g&#8221; in the table, I have used the get_sys_context function as follows:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">declare\n&nbsp; v_xid RAW(8);\n&nbsp; output varchar2(32767);\n&nbsp;&nbsp;&nbsp; begin&nbsp;&nbsp; \n&nbsp;&nbsp;&nbsp; --Set the variable v_xid with the XID value\n&nbsp;&nbsp;&nbsp; select xid into v_xid from msc.sys_fba_hist_91091 where xid='05001100D6020000';\n&nbsp;&nbsp; \n&nbsp;&nbsp;&nbsp; --Displays the username\n&nbsp;&nbsp;&nbsp; output:= dbms_flashback_archive.get_sys_context (v_xid, 'USERENV', 'SESSION_USER');\n&nbsp;&nbsp;&nbsp; dbms_output.put_line('User: '|| output);\n&nbsp;&nbsp; \n&nbsp;&nbsp;&nbsp; --Displays the hostname of the terminal from where the user is connected\n&nbsp;&nbsp;&nbsp; output:= dbms_flashback_archive.get_sys_context (v_xid,'USERENV','HOST');\n&nbsp;&nbsp;&nbsp; dbms_output.put_line('Hostname: '||output);\n&nbsp;&nbsp; \n&nbsp;&nbsp;&nbsp; --Displays the module from where the user is connected\n&nbsp;&nbsp;&nbsp; output:= dbms_flashback_archive.get_sys_context (v_xid,'USERENV','MODULE');\n&nbsp;&nbsp;&nbsp; dbms_output.put_line('Module: '||output);\n&nbsp; end;\/\n&nbsp;\nUser: MSC\nHostname: vmtest12c1\nModule: SQL*Plus<\/pre>\n<p>You can consult the Oracle documentation to get the complete overview on available user-context information.<\/p>\n<ul>\n<li><strong>&#8220;sys_fba_context_aud&#8221; table<\/strong><\/li>\n<\/ul>\n<p>Information returned by the get_sys_context function can also be retrieved from the new table sys_fba_context_aud.<br \/>\nThe table contains user-context information for each XID. Joining it to the archive table, we can get the user-context for all DML performed on the table:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select s.authenticated_identity, s.host, s.module, h.operation, h.prod_id, h.prod_desc\n&nbsp;&nbsp;&nbsp;&nbsp; from sys.sys_fba_context_aud s, msc.sys_fba_hist_91091 h\n&nbsp;&nbsp;&nbsp;&nbsp; where h.xid=s.xid;\n&nbsp;\nAUTHENTICATED_IDENTITY&nbsp;&nbsp; HOST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MODULE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; O PROD_ID&nbsp;&nbsp;&nbsp; PROD_DESC\n------------------------ -------------- --------------- - ---------- ---------\nmsc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vmtestora11g&nbsp;&nbsp; SQL*Plus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle 11g<\/pre>\n<p>Note that user-context tracking is a good alternative to the auditing based on database triggers.<\/p>\n<h4>2) Database hardening<\/h4>\n<p>With Oracle 11g, FDA had to be managed at table level. Starting with Oracle 12c, it is possible to create logical groups of tables for an application: Enabling or disabling of FDA is performed at application level and it prevents the listing of all application tables to enable or disable FDA for each one.<\/p>\n<p>To make the best out of this new feature, the first step is to create and enable an application group. In my example, the application is named &#8220;PRODUCTS&#8221;:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; exec dbms_flashback_archive.register_application(application_name=&gt;'PRODUCTS',flashback_archive_name=&gt;'FBA1');<\/pre>\n<p>\u202a\u202aOnce the application group is created, the tables must be linked to the group.<br \/>\nIn my example, FDA has been disabled on the previous table TB_PRODUCTS. I have created a second table TB_PROVIDERS in the schema msc without enabling the flashback archive.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; create table msc.tb_providers (prov_id number, prov_desc varchar2(50));\nSQL&gt; insert into tb_providers values (1,\u2019dbi services\u2019);\nSQL&gt; insert into tb_providers values (2,\u2019Oracle\u2019);\nSQL&gt; commit;<\/pre>\n<p>The table DBA_FLASHBACK_ARCHIVE_TABLES returns no values, meaning that no flashback archive is enabled.<samp><\/samp><\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select table_name, flashback_archive_name, archive_table_name, status\n&nbsp;&nbsp;&nbsp;&nbsp; from DBA_FLASHBACK_ARCHIVE_TABLES;\n&nbsp;\nno rows selected<\/pre>\n<p>Then, I linked both tb_products and tb_providers tables to the group PRODUCTS:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; exec dbms_flashback_archive.add_table_to_application(application_name=&gt;'PRODUCTS',table_name=&gt;'TB_PRODUCTS',schema_name=&gt;'MSC');\n&nbsp;\nSQL&gt; exec dbms_flashback_archive.add_table_to_application(application_name=&gt;'PRODUCTS',table_name=&gt;'TB_PROVIDERS',schema_name=&gt;'MSC');<\/pre>\n<p>Groups and linked tables can be listed with SYS_FBA_APP (list of applications) and SYS_FBA_APP_TABLES (list of linked tables):<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select a.appname, b.object_name, c.obj#\n&nbsp;&nbsp;&nbsp;&nbsp; from SYS_FBA_APP a, DBA_OBJECTS b, SYS_FBA_APP_TABLES c\n&nbsp;&nbsp;&nbsp;&nbsp; where a.app#=c.app# and b.object_id=c.obj#;\n&nbsp;\nAPPNAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJECT_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJ#\n------------------------------ ------------------------------ ----------\nPRODUCTS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TB_PRODUCTS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 91091\nPRODUCTS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TB_PROVIDERS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 91102<\/pre>\n<p>It is now possible to enable or disable the FDA on all tables belonging to this application. This is how you enable the FDA on the application PRODUCTS:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; exec dbms_flashback_archive.enable_application(application_name=&gt;'PRODUCTS');<\/pre>\n<p>After running this procedure, we can see that the FDA has indeed been enabled for the TB_PRODUCTS and TB_PROVIDERS tables:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select table_name, flashback_archive_name, archive_table_name, status\n&nbsp;&nbsp;&nbsp;&nbsp; from DBA_FLASHBACK_ARCHIVE_TABLES;\n&nbsp;\nTABLE_NAME&nbsp;&nbsp;&nbsp; FLASHBACK_ARCHIVE_NAME&nbsp;&nbsp;&nbsp;&nbsp; ARCHIVE_TABLE_NAME&nbsp;&nbsp;&nbsp;&nbsp; STATUS\n------------- -------------------------- ---------------------- ---------\nTB_PRODUCTS&nbsp;&nbsp; FBA1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SYS_FBA_HIST_91091&nbsp;&nbsp;&nbsp;&nbsp; ENABLED\nTB_PROVIDER&nbsp;&nbsp; FBA1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SYS_FBA_HIST_91102&nbsp;&nbsp;&nbsp;&nbsp; ENABLED<\/pre>\n<p>&nbsp;<\/p>\n<h4>3) Import and export of history<\/h4>\n<p>This feature allows to import external history data (e. g. history generated by triggers) into FDA history tables. The external history data must correspond to an FDA enabled table in the database.<\/p>\n<p>The first step is to create a temporary history table which will receive user generated history data. This temporary table can be loaded with datapump or with simple DML. It will later be imported in the FDA enabled table.<\/p>\n<p>In my example, I used the MSC schema with the TB_PRODUCTS table. I chose the DBMS_FLASHBACK_ARCHIVE.CREATE_TEMP_HISTORY_TABLE procedure to create a temporary history table for TB_PRODUCTS:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; exec dbms_flashback_archive.create_temp_history_table('MSC', 'TB_PRODUCTS');<\/pre>\n<p>We can see that a new TEMP_HISTORY table has been created in the schema MSC:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; select table_name from dba_tables where owner='MSC';\n&nbsp;\nTABLE_NAME\n-----------------------------------------------------------------------------\nTB_PRODUCTS\nTB_PROVIDERS\nSYS_FBA_DDL_COLMAP_91091\nSYS_FBA_HIST_91091\nSYS_FBA_TCRV_91091\nTEMP_HISTORY<\/pre>\n<p>This temporary table contains TB_PRODUCTS columns and other metadata columns.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; desc msc.temp_history;\n&nbsp;\nName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Null?&nbsp;&nbsp;&nbsp;&nbsp; Type\n------------------------------ --------- -----------------\nRID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2(4000)\nSTARTSCN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER\nENDSCN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER\nXID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RAW(8)\nOPERATION&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2(1)\nPROD_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER\nPROD_DESC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VARCHAR2(50)<\/pre>\n<p>Then I performed an insert to populate the temporary table with external data.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; insert into MSC.TEMP_HISTORY values ('1111111111', '709494', NULL, '03000200BC020000', 'I', 4, 'Oracle 12c');\nSQL&gt; commit;<\/pre>\n<p>The record is registered into the temporary table:<\/p>\n<pre class=\"brush: actionscript3; gutter: true; first-line: 1\">RID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; STARTSCN&nbsp;&nbsp; ENDSCN&nbsp;&nbsp;&nbsp;&nbsp; XID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; O PROD_ID&nbsp;&nbsp;&nbsp;&nbsp; PROD_DESC\n------------------ ---------- ---------- ---------------- - ----------- -----------\n1111111111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 709494&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 03000200BC020000 I 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle 12c<\/pre>\n<p>Finally, the temporary table can be imported into the FDA table with the procedure DBMS_FLASHBACK_ARCHIVE.IMPORT_HISTORY:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; exec DBMS_FLASHBACK_ARCHIVE.IMPORT_HISTORY('MSC', 'TB_PRODUCTS', 'TEMP_HISTORY');<\/pre>\n<p>The new record has been added to the SYS_FBA_HIST_91091 table, meaning that FDA has now access to new history data:<\/p>\n<p>&nbsp;<\/p>\n<pre>SQL&gt; select xid, operation, prod_id, prod_desc from MSC.SYS_FBA_HIST_91091;<\/pre>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">&nbsp;\nXID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; O PROD_ID&nbsp;&nbsp;&nbsp; PROD_DESC\n---------------- - ---------- --------------------------------------------------\n05001100D6020000 I 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle 11g\n03000200BC020000 I 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle 12c<\/pre>\n<p>Note that the TEMP_HISTORY table has been removed after the import.<\/p>\n<h4>4) Hybrid Columnar Compression (HCC)<\/h4>\n<p>FDA can now be used with HCC compressed tables on Exadata and other Oracle storages. Unfortunately, I was not able to test this technology yet.<\/p>\n<p>Note that if we try to use HCC on a classical storage, the following error occurs:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SQL&gt; ALTER table MSC.TB_PRODUCTS compress for archive high;\nALTER table MSC.TB_PRODUCTS compress for archive high\n*\nERROR at line 1:\nORA-64307:&nbsp; Exadata Hybrid Columnar Compression is not supported for\ntablespaces on this storage type<\/pre>\n<h3>Conclusion<\/h3>\n<p>Oracle Database 12c does not add anything revolutionaryto the Flashback Data Archive. But some small improvements make this tool more complete and easier to manage.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oracle Database 12c was published in June and among the new features of this release are multiple improvements of the Flashback Data Archive (FDA), an option also known as Oracle Total Recall. In this post, I will present the new features coming with Oracle 12c. Overview Before speaking about these improvements, let me point out [&hellip;]<\/p>\n","protected":false},"author":27,"featured_media":2695,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[198],"tags":[387,17,209],"type_dbi":[],"class_list":["post-3186","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-management","tag-flashback-data-archive","tag-oracle-11g","tag-oracle-12c"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Oracle Database 12c: Flashback Data Archive (FDA) - new features - dbi Blog<\/title>\n<meta name=\"description\" content=\"Oracle Database 12c was published in June and among the new features of this release are multiple improvements of the Flashback Data Archive (FDA), an option also known as Oracle Total Recall. In this post, I will present the new features coming with Oracle 12c.\" \/>\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.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Oracle Database 12c: Flashback Data Archive (FDA) - new features\" \/>\n<meta property=\"og:description\" content=\"Oracle Database 12c was published in June and among the new features of this release are multiple improvements of the Flashback Data Archive (FDA), an option also known as Oracle Total Recall. In this post, I will present the new features coming with Oracle 12c.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2013-07-10T22:29:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-23T15:58:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"406\" \/>\n\t<meta property=\"og:image:height\" content=\"100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"headline\":\"Oracle Database 12c: Flashback Data Archive (FDA) &#8211; new features\",\"datePublished\":\"2013-07-10T22:29:00+00:00\",\"dateModified\":\"2022-12-23T15:58:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/\"},\"wordCount\":1282,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg\",\"keywords\":[\"Flashback Data Archive\",\"Oracle 11g\",\"Oracle 12c\"],\"articleSection\":[\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/\",\"name\":\"Oracle Database 12c: Flashback Data Archive (FDA) - new features - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg\",\"datePublished\":\"2013-07-10T22:29:00+00:00\",\"dateModified\":\"2022-12-23T15:58:55+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\"},\"description\":\"Oracle Database 12c was published in June and among the new features of this release are multiple improvements of the Flashback Data Archive (FDA), an option also known as Oracle Total Recall. In this post, I will present the new features coming with Oracle 12c.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg\",\"width\":406,\"height\":100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Oracle Database 12c: Flashback Data Archive (FDA) &#8211; new features\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g\",\"caption\":\"Oracle Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Oracle Database 12c: Flashback Data Archive (FDA) - new features - dbi Blog","description":"Oracle Database 12c was published in June and among the new features of this release are multiple improvements of the Flashback Data Archive (FDA), an option also known as Oracle Total Recall. In this post, I will present the new features coming with Oracle 12c.","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.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/","og_locale":"en_US","og_type":"article","og_title":"Oracle Database 12c: Flashback Data Archive (FDA) - new features","og_description":"Oracle Database 12c was published in June and among the new features of this release are multiple improvements of the Flashback Data Archive (FDA), an option also known as Oracle Total Recall. In this post, I will present the new features coming with Oracle 12c.","og_url":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/","og_site_name":"dbi Blog","article_published_time":"2013-07-10T22:29:00+00:00","article_modified_time":"2022-12-23T15:58:55+00:00","og_image":[{"width":406,"height":100,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg","type":"image\/jpeg"}],"author":"Oracle Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"headline":"Oracle Database 12c: Flashback Data Archive (FDA) &#8211; new features","datePublished":"2013-07-10T22:29:00+00:00","dateModified":"2022-12-23T15:58:55+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/"},"wordCount":1282,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg","keywords":["Flashback Data Archive","Oracle 11g","Oracle 12c"],"articleSection":["Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/","url":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/","name":"Oracle Database 12c: Flashback Data Archive (FDA) - new features - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg","datePublished":"2013-07-10T22:29:00+00:00","dateModified":"2022-12-23T15:58:55+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee"},"description":"Oracle Database 12c was published in June and among the new features of this release are multiple improvements of the Flashback Data Archive (FDA), an option also known as Oracle Total Recall. In this post, I will present the new features coming with Oracle 12c.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/2e1ax_default_entry_Oracle_Database_12c.jpg","width":406,"height":100},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/oracle-database-12c-flashback-data-archive-fda-new-features\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Oracle Database 12c: Flashback Data Archive (FDA) &#8211; new features"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/66ab87129f2d357f09971bc7936a77ee","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f711f7cd2c9b09bf2627133755b569fb5be0694810cfd33033bdd095fedba86d?s=96&d=mm&r=g","caption":"Oracle Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/3186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=3186"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/3186\/revisions"}],"predecessor-version":[{"id":21270,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/3186\/revisions\/21270"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/2695"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=3186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=3186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=3186"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=3186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}