{"id":73081,"date":"2017-01-25T15:52:44","date_gmt":"2017-01-25T15:52:44","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/uncategorized\/duplicate-point-in-time-recovered-pdb-using-backup\/"},"modified":"2021-07-14T13:06:57","modified_gmt":"2021-07-14T13:06:57","slug":"duplicate-point-in-time-recovered-pdb-using-backup","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/databases\/oracle-databases\/duplicate-point-in-time-recovered-pdb-using-backup\/","title":{"rendered":"Duplicate Point-In-Time Recovered PDB Using Backup"},"content":{"rendered":"<p>At times, we might need to duplicate a production pluggable database\u00a0to a Past Point in Time without disturbing the production database itself, in order to:<\/p>\n<ul>\n<li>View the data in the Production Database (PDB) as it appeared then<\/li>\n<li>Perform testing<\/li>\n<li>Generate reports, etc.<\/li>\n<\/ul>\n<p>Duplication of a PDB slightly differs from that of a non-CDB. In order to duplicate the PDB, an auxiliary instance has to be created as a Container Database (CDB) on the same or different host.\u00a0The PDB can be restored \/ recovered point-in-time using older backups of production database (CDB) and required archive logs so as not to affect the production database. On duplication of PDB(s), RMAN duplicates the root (CDB$ROOT) and the seed database (PDB$SEED) as well. The resulting duplicate database is a fully-functional CDB that contains the root, the seed database, and the duplicated PDBs. Subsequently, the PDB may be plugged into another CDB.<\/p>\n<p>In this article, I will demonstrate the entire procedure for plugging a point-in-time recovered PDB into a CDB on a different host.<\/p>\n<h2>Current scenario:<\/h2>\n<h3>Source:<\/h3>\n<ul style=\"list-style-type: none;\">\n<li>Host:\u00a0<strong>host01<\/strong><\/li>\n<li>Container Database 12.1.0.2c:\u00a0<strong>cdb1<\/strong>\u00a0running in\u00a0ARCHIVELOG\u00a0mode.<\/li>\n<li>Pluggable databases:\u00a0<strong>PDB$SEED, pdb1<\/strong><\/li>\n<\/ul>\n<h3>Destination:<\/h3>\n<ul style=\"list-style-type: none;\">\n<li>Host:\u00a0<strong>host02<\/strong><\/li>\n<li>Container Database 12.1.0.2c:\u00a0<strong>destcdb<\/strong><\/li>\n<li>Pluggable database:\u00a0<strong>PDB$SEED<\/strong><\/li>\n<\/ul>\n<h3>Objective:<\/h3>\n<p>We need to perform Point-In-Time Restoration (PITR) on <strong>pdb1<\/strong> and then plug it as <strong>pdb1_pitr<\/strong> into test CDB <strong>destcdb<\/strong> on <strong>host02<\/strong> using backups and archive logs available on <strong>host01.<\/strong><\/p>\n<h3>Overview:<\/h3>\n<ul>\n<li>Setup on Source PDB<strong> pdb1@cdb1 <\/strong>on<strong> host01<\/strong>\n<ul>\n<li>Create test table <strong>hr.emp<\/strong> with 14 records.<\/li>\n<li>Note down current SCN# (SCN1) and timestamp.<\/li>\n<li>Using RMAN, take a backup of CDB <strong>cdb1<\/strong> and archive logs<\/li>\n<li>Delete 7 records from <strong>hr.emp<\/strong> so that <strong>hr.emp<\/strong> now has 7 records<\/li>\n<li>Note down current SCN# (SCN2) and timestamp. This will be the target System Change Number (SCN) \/ timestamp of PITR for PDB <strong>pdb1<\/strong><\/li>\n<li>Archive current online redo log<\/li>\n<\/ul>\n<\/li>\n<li>Duplicate point in time recovered pdb1 on<strong> host02<\/strong>\n<ul>\n<li>Move backup of CDB <strong>cdb1<\/strong> and archive logs necessary for duplication until desired SCN to destination host <strong>host02<\/strong><\/li>\n<li>Start the auxiliary instance of CDB <strong>tempcdb<\/strong> in\u00a0NOMOUNT\u00a0mode using Pfile<\/li>\n<li>Start the RMAN client and connect to the auxiliary instance as\u00a0AUXILIARY.<\/li>\n<li>Duplicate the source database\u00a0<strong>cdb1<\/strong>\u00a0to the time corresponding to SCN2<\/li>\n<li>Open the duplicate database with the\u00a0RESETLOGS\u00a0option<\/li>\n<li>Verify that the database has been duplicated to desired point in time<\/li>\n<\/ul>\n<\/li>\n<li>Plug in PDB <strong>pdb1<\/strong> as <strong>pdb1_pitr<\/strong> into test CDB <strong>destcdb<\/strong> on <strong>host02<\/strong>\n<ul>\n<li>Unplug and drop PDB <strong>pdb1<\/strong> from CDB <strong>tempcdb<\/strong> while retaining its data files<\/li>\n<li>Plug PDB <strong>pdb1<\/strong> as <strong>pdb_pitr<\/strong> into test CDB <strong>destcdb<\/strong> using existing data files<\/li>\n<li>Check that <strong>pdb1_pitr <\/strong>has been successfully plugged in.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h2>Implementation<\/h2>\n<ul>\n<li>Set up on Source PDB<strong> pdb1@cdb1 <\/strong>on<strong> host01:<\/strong><\/li>\n<\/ul>\n<pre>CDB1&gt;sho 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 PDB1                           READ WRITE NO\r\n\r\nCDB1&gt;archive log list;\r\n\r\nDatabase log mode              <span style=\"color: red;\">Archive Mode<\/span>\r\nAutomatic archival             Enabled\r\nArchive destination            USE_DB_RECOVERY_FILE_DEST\r\nOldest online log sequence     36\r\nNext log sequence to archive   38\r\nCurrent log sequence           38<\/pre>\n<ul>\n<li>Create test table <strong>hr.emp<\/strong> with 14 records:<\/li>\n<\/ul>\n<pre>CDB1&gt;alter session set container=pdb1;\r\n\r\nSession altered.\r\n\r\nCDB1&gt;sho con_name\r\n\r\nCON_NAME\r\n------------------------------\r\n<span style=\"color: red;\">PDB1<\/span>\r\n\r\nCDB1&gt;create table hr.emp as select * from scott.emp;\r\n\r\nTable created.\r\n\r\nCDB1&gt;select count(*) from hr.emp;\r\n\r\n  COUNT(*)\r\n----------\r\n        <span style=\"color: red;\">14<\/span><\/pre>\n<ul>\n<li>Note down the current SCN# (SCN1):<\/li>\n<\/ul>\n<pre>CDB1&gt;select current_scn from v$database;\r\n\r\n\r\nCURRENT_SCN\r\n-----------\r\n    2263170<\/pre>\n<ul>\n<li>Using RMAN, take a backup of CDB <strong>cdb1<\/strong> and archive logs:<\/li>\n<\/ul>\n<pre>[oracle@host01 root]$ export ORACLE_SID=cdb1\r\n[oracle@host01 root]$ rman target \/\r\n\r\nRMAN&gt; configure controlfile autobackup on;\r\nRMAN&gt; backup database plus archivelog;\r\n\r\nRMAN&gt; list backup of database;\r\n\r\nList of Backup Sets\r\n===================\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ ---------------\r\n51      Full    713.45M    DISK        00:01:44     07-JAN-17      \r\n        BP Key: 51   Status: AVAILABLE  Compressed: NO  Tag: TAG20170107T103735\r\n        Piece Name: <span style=\"color: red;\">\/u01\/app\/oracle\/fast_recovery_area\/CDB1\/3665F91A4F8724AEE053B7C909C001BB\/backupset\/2017_01_07\/o1_mf_nnndf_TAG20170107T103735_d70xwqz0_.bkp<\/span>\r\n  List of Datafiles in backup set 51\r\n  Container ID: 3, PDB Name: PDB1\r\n  File LV Type Ckp SCN    Ckp Time  Name\r\n  ---- -- ---- ---------- --------- ----\r\n  8       Full 2263733    07-JAN-17 \/u01\/app\/oracle\/oradata\/cdb1\/pdb1\/system01.dbf\r\n  9       Full 2263733    07-JAN-17 \/u01\/app\/oracle\/oradata\/cdb1\/pdb1\/sysaux01.dbf\r\n  10      Full 2263733    07-JAN-17 \/u01\/app\/oracle\/oradata\/cdb1\/pdb1\/SAMPLE_SCHEMA_users01.dbf\r\n  11      Full 2263733    07-JAN-17 \/u01\/app\/oracle\/oradata\/cdb1\/pdb1\/example01.dbf\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ ---------------\r\n52      Full    1.17G      DISK        00:03:18     07-JAN-17      \r\n        BP Key: 52   Status: AVAILABLE  Compressed: NO  Tag: TAG20170107T103735\r\n        Piece Name: <span style=\"color: red;\">\/u01\/app\/oracle\/fast_recovery_area\/CDB1\/backupset\/2017_01_07\/o1_mf_nnndf_TAG20170107T103735_d70y1z3q_.bkp<\/span>\r\n  List of Datafiles in backup set 52\r\n  File LV Type Ckp SCN    Ckp Time  Name\r\n  ---- -- ---- ---------- --------- ----\r\n  1       Full 2264336    07-JAN-17 \/u01\/app\/oracle\/oradata\/cdb1\/system01.dbf\r\n  3       Full 2264336    07-JAN-17 \/u01\/app\/oracle\/oradata\/cdb1\/sysaux01.dbf\r\n  4       Full 2264336    07-JAN-17 \/u01\/app\/oracle\/oradata\/cdb1\/undotbs01.dbf\r\n  6       Full 2264336    07-JAN-17 \/u01\/app\/oracle\/oradata\/cdb1\/users01.dbf\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ ---------------\r\n53      Full    594.33M    DISK        00:00:56     07-JAN-17      \r\n        BP Key: 53   Status: AVAILABLE  Compressed: NO  Tag: TAG20170107T103735\r\n        Piece Name: <span style=\"color: red;\">\/u01\/app\/oracle\/fast_recovery_area\/CDB1\/3665DFDEE5151F39E053B7C909C03076\/backupset\/2017_01_07\/o1_mf_nnndf_TAG20170107T103735_d70ydkyx_.bkp<\/span>\r\n  List of Datafiles in backup set 53\r\n  Container ID: 2, PDB Name: PDB$SEED\r\n  File LV Type Ckp SCN    Ckp Time  Name\r\n  ---- -- ---- ---------- --------- ----\r\n  5       Full 1610184    29-JUN-16 \/u01\/app\/oracle\/oradata\/cdb1\/pdbseed\/system01.dbf\r\n  7       Full 1610184    29-JUN-16 \/u01\/app\/oracle\/oradata\/cdb1\/pdbseed\/sysaux01.dbf\r\n\r\nRMAN&gt; list backup of controlfile;\r\n\r\n\r\nList of Backup Sets\r\n===================\r\n\r\n\r\nBS Key  Type LV Size       Device Type Elapsed Time Completion Time\r\n------- ---- -- ---------- ----------- ------------ ---------------\r\n55      Full    17.20M     DISK        00:00:03     07-JAN-17      \r\n        BP Key: 55   Status: AVAILABLE  Compressed: NO  Tag: TAG20170107T104822\r\n        Piece Name: <span style=\"color: red;\">\/u01\/app\/oracle\/fast_recovery_area\/CDB1\/autobackup\/2017_01_07\/o1_mf_s_932640502_d70yk12j_.bkp<\/span>\r\n  Control File Included: Ckp SCN: 2264535      Ckp time: 07-JAN-17<\/pre>\n<ul>\n<li>Delete 7 records from <strong>hr.emp<\/strong> so that <strong>hr.emp<\/strong> now has 7 records:<\/li>\n<\/ul>\n<pre>CDB1&gt;sho con_name\r\n\r\nCON_NAME\r\n------------------------------\r\nPDB1\r\n\r\nCDB1&gt;delete from hr.emp where rownum &lt; 8;\r\n\r\n7 rows deleted.\r\n\r\nCDB1&gt;commit;\r\n\r\nCommit complete.\r\n\r\nCDB1&gt;select count(*) from hr.emp;\r\n\r\n  COUNT(*)\r\n----------\r\n         <span style=\"color: red;\"><strong>7<\/strong><\/span><\/pre>\n<ul>\n<li>Note down current SCN# (SCN2) and timestamp. This will be the target SCN \/ timestamp of the PITR for PDB <strong>pdb1:<\/strong><\/li>\n<\/ul>\n<pre>CDB1&gt;select current_scn from v$database;\r\n\r\nCURRENT_SCN\r\n-----------\r\n    <span style=\"color: red;\">2265169<\/span>\r\n\r\nCDB1&gt;select current_timestamp from dual;\r\n\r\nCURRENT_TIMESTAMP\r\n----------------------------------------------------------------------\r\n<span style=\"color: red;\">07-JAN-17 10.54.01.000000 AM +05:30<\/span><\/pre>\n<ul>\n<li>Archive the current online redo log:<\/li>\n<\/ul>\n<pre>CDB1&gt;select max(sequence#) from v$archived_log;\r\n\r\nMAX(SEQUENCE#)\r\n--------------\r\n            39\r\n\r\nCDB1&gt;alter system archive log current;\r\n\r\nSystem altered.\r\n\r\nCDB1&gt;select max(sequence#) from v$archived_log;\r\n\r\n\r\nMAX(SEQUENCE#)\r\n--------------\r\n            40<\/pre>\n<h3>Duplicate point in time recovered PDB <strong>pdb1 <\/strong>on<strong> host02<\/strong><\/h3>\n<ul>\n<li>Move the backup of CDB <strong>cdb1<\/strong> and archive logs necessary for duplication until desired SCN to destination host <strong>host02:<\/strong><\/li>\n<\/ul>\n<pre>[oracle@<strong>host02<\/strong> fast_recovery_area]$ mkdir -p \/u01\/app\/oracle\/fast_recovery_area\/CDB1\r\n[oracle@host01 fast_recovery_area]$ scp -r \/u01\/app\/oracle\/fast_recovery_area\/CDB1 host02:\/u01\/app\/oracle\/fast_recovery_area\/<\/pre>\n<ul>\n<li>Start the auxiliary instance of CDB <strong>tempcdb<\/strong> in\u00a0NOMOUNT\u00a0mode using a Pfile that includes the declaration\u00a0enable_pluggable_database=TRUE:<\/li>\n<\/ul>\n<pre>[oracle@host02 CDB1]$ cat <span style=\"color: red;\"><strong>\/u01\/app\/oracle\/inittempcdb.ora<\/strong><\/span>\r\n*.compatible='12.1.0.2.0'\r\n*.control_files='\/u01\/app\/oracle\/oradata\/tempcdb\/control01.ctl'\r\n*.db_name='tempcdb'\r\n*.db_block_size=8192\r\n*.dispatchers='(PROTOCOL=TCP) (SERVICE=tempcdbXDB)'\r\n*.<span style=\"color: red;\"><strong>enable_pluggable_database=true<\/strong><\/span>\r\n*.open_cursors=300\r\n*.processes=300\r\n*.remote_login_passwordfile='EXCLUSIVE'\r\n*.db_create_file_dest='\/u01\/app\/oracle\/oradata'\r\n*.diagnostic_dest='\/u01\/app\/oracle'\r\n\r\n[oracle@host02 CDB1]$ mkdir -p \/u01\/app\/oracle\/oradata\/tempcdb\r\n\r\n[oracle@host01 datafile]$ export $ORACLE_HOME=\/u01\/app\/oracle\/product\/12.1.0.2\/db_1\r\n\r\n[oracle@host02 trace]$ export ORACLE_SID=tempcdb\r\n\r\n[oracle@host02 trace]$ sqlplus \/ as sysdba\r\n\r\nTEMPCDB&gt; <span style=\"color: red;\"><strong>startup nomount pfile='\/u01\/app\/oracle\/inittempcdb.ora';<\/strong><\/span>\r\nORACLE instance started.\r\n\r\nTotal System Global Area  301989888 bytes\r\nFixed Size                  2923680 bytes\r\nVariable Size             243270496 bytes\r\nDatabase Buffers           50331648 bytes\r\nRedo Buffers                5464064 bytes<\/pre>\n<ul>\n<li>Start the RMAN client and connect to the auxiliary instance as\u00a0AUXILIARY:<\/li>\n<\/ul>\n<pre>[oracle@host02 CDB1]$ export ORACLE_SID=tempcdb\r\n\r\n[oracle@host02 CDB1]$ rman auxiliary sys\/oracle\r\n\r\nRMAN&gt;<\/pre>\n<ul>\n<li>Duplicate the source database\u00a0<strong>cdb1<\/strong>\u00a0to the time corresponding to SCN2:<\/li>\n<\/ul>\n<pre>RMAN&gt;Duplicate database to 'tempcdb' UNTIL TIME\r\n\"TO_DATE ('07-JAN-17 10:54:01', 'DD-MON-YY hh:mi:ss')\" noopen backup location '\/u01\/app\/oracle\/fast_recovery_area\/CDB1';<\/pre>\n<ul>\n<li>Open the duplicate database with the\u00a0RESETLOGS\u00a0option:<\/li>\n<\/ul>\n<pre>TEMPCDB&gt;select status from v$instance\r\n\r\nSTATUS\r\n------------\r\nMOUNTED\r\n\r\nTEMPCDB&gt;alter database open resetlogs;\r\n\r\nTEMPCDB&gt; sho pdbs\r\n\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n         <span style=\"color: red;\"><strong>3 PDB1                           MOUNTED<\/strong><\/span><\/pre>\n<ul>\n<li>Verify that the database has been duplicated to the desired time:<\/li>\n<\/ul>\n<pre>TEMPCDB&gt;alter pluggable database pdb1 open;\r\n\r\nPluggable database altered.\r\n\r\nTEMPCDB&gt;alter session set container=pdb1;\r\n\r\nSession altered.\r\n\r\nTEMPCDB&gt;sho con_name\r\n\r\nCON_NAME\r\n------------------------------\r\nPDB1\r\n\r\nTEMPCDB&gt;select count(*) from hr.emp;\r\n\r\n  COUNT(*)\r\n----------\r\n         <span style=\"color: red;\"><strong>7<\/strong><\/span><\/pre>\n<h3>Plug in PDB <strong>pdb1<\/strong> as <strong>pdb1_pitr<\/strong> into test CDB <strong>destcdb<\/strong> on <strong>host02<\/strong><\/h3>\n<ul>\n<li>Unplug and drop PDB <strong>pdb1<\/strong> from CDB <strong>tempcdb<\/strong> while retaining its data files:<\/li>\n<\/ul>\n<pre>TEMPCDB&gt;ALTER PLUGGABLE DATABASE pdb1 CLOSE;\r\nTEMPCDB&gt;ALTER PLUGGABLE DATABASE pdb1 UNPLUG INTO '\/u01\/app\/oracle\/oradata\/CDB1\/pdb1.xml';\r\nTEMPCDB&gt;DROP PLUGGABLE DATABASE pdb1 KEEP DATAFILES;<\/pre>\n<ul>\n<li>Plug PDB <strong>pdb1<\/strong> as <strong>pdb_pitr<\/strong> into the test CDB <strong>destcdb<\/strong> using existing data files:<\/li>\n<\/ul>\n<pre>DESTCDB&gt;sho pdbs\r\n\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n\r\nDESTCDB&gt;CREATE PLUGGABLE DATABASE pdb1_pitr USING '\/u01\/app\/oracle\/oradata\/CDB1\/pdb1.xml'\r\n  NOCOPY TEMPFILE REUSE;   \r\n\r\nPluggable database created.\r\n\r\nDESTCDB&gt;sho 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 <span style=\"color: red;\"><strong>PDB1_PITR                      MOUNTED<\/strong><\/span><\/pre>\n<ul>\n<li>Check that <strong>pdb1_pitr <\/strong>has been successfully plugged in:<\/li>\n<\/ul>\n<pre>DESTCDB&gt;alter pluggable database pdb1_pitr open;\r\n\r\nPluggable database altered.\r\n\r\nDESTCDB&gt;alter session set container = pdb1_pitr;\r\n\r\nSession altered.\r\n\r\nDESTCDB&gt;sho con_name\r\n\r\nCON_NAME\r\n------------------------------\r\nPDB1_PITR\r\n\r\nDESTCDB&gt;select count(*) from hr.emp;\r\n\r\n  COUNT(*)\r\n----------\r\n         <span style=\"color: red;\"><strong>7<\/strong><\/span><\/pre>\n<h2>Summary:<\/h2>\n<ul>\n<li>In order to duplicate a PDB, an auxiliary instance has to be created as a CDB on the same or different host.\u00a0<\/li>\n<li>The PDB can be restored \/ recovered point-in-time using older backups of a production database and the required archive logs so as not to affect the production database.<\/li>\n<li>On duplication of PDB(s), RMAN duplicates the root (CDB$ROOT) and the seed database (PDB$SEED) as well.<\/li>\n<li>The resulting duplicate database is a fully-functional CDB that contains the root, the seed database, and the duplicated PDBs.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>At times, we might need to duplicate a production pluggable database\u00a0to a Past Point in Time without disturbing the production database itself, in order to: View the data in the Production Database (PDB) as it appeared then Perform testing Generate reports, etc. Duplication of a PDB slightly differs from that of a non-CDB. In order to duplicate the PDB, an&hellip;<\/p>\n","protected":false},"author":316217,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[143533],"tags":[4558,124952],"coauthors":[48555],"class_list":["post-73081","post","type-post","status-publish","format-standard","hentry","category-oracle-databases","tag-point-in-time-recovery","tag-redgate-deploy"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/73081","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/316217"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=73081"}],"version-history":[{"count":1,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/73081\/revisions"}],"predecessor-version":[{"id":88954,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/73081\/revisions\/88954"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=73081"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=73081"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=73081"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=73081"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}