{"id":73167,"date":"2015-04-22T18:33:57","date_gmt":"2015-04-22T18:33:57","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/uncategorized\/oracle-multitenant-convert-single-instance-pdb-to-rac-by-plugging-it-into-a-rac-cdb\/"},"modified":"2021-07-14T13:07:25","modified_gmt":"2021-07-14T13:07:25","slug":"oracle-multitenant-convert-single-instance-pdb-to-rac-by-plugging-it-into-a-rac-cdb","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/databases\/oracle-databases\/oracle-multitenant-convert-single-instance-pdb-to-rac-by-plugging-it-into-a-rac-cdb\/","title":{"rendered":"Oracle Multitenant: Convert single instance PDB to RAC by plugging it into a RAC CDB"},"content":{"rendered":"<p>Prior to oracle database 12c, the procedures for converting from single-instance databases to Real Application Clusters involved following steps:<\/p>\n<ol>\n<li>Configure the control file attributes and move control file to shared storage<\/li>\n<li>Make the initialization parameter file entries for cluster-enabled environments and move SPfile to shared storage<\/li>\n<li>Create an undo tablespace for each additional instance<\/li>\n<li>Create redo threads for each additional instance.<\/li>\n<li>Create the Oracle password file on the additional nodes on which the cluster database will have an instance.<\/li>\n<li>Configure the net services for the database and instances<\/li>\n<li>Create the dictionary views needed for Oracle RAC databases<\/li>\n<li>Add the configuration for the Oracle RAC database and its instance-to-node mapping using SRVCTL<\/li>\n<li>Move online redo logs to shared storage<\/li>\n<li>Move data files to shared storage<\/li>\n<\/ol>\n<p>With the introduction of multitenant architecture in Oracle database 12c, applications can be represented by pluggable databases within a container database (CDB). The number of active\/configured instances of the PDB are decided at the CDB level. A PDB which is part of a single instance CDB will have only one instance whereas a PDB within a RAC CDB will have multiple instances. Hence, a single instance PDB can be quickly converted to RAC by unplugging it from single instance CDB and plugging it into a RAC multitenant container database (CDB). The control file, Undo tablespace, Redo logs, password file and SPfile of the destination RAC CDB would already be on shared storage. Hence, while plugging in the PDB, only following two activities need to be done:<\/p>\n<p>&#8211; Create metadata describing the plugged-in PDB in the destination CDB<br \/>\n&#8211; Move the datafiles of the PDB to the shared storage (if they are not there already)<\/p>\n<p>This procedure simplifies and speeds the process of converting a single instance database to RAC considerably.<\/p>\n<p>To be able to employ this method, the source and target CDB platforms must meet the following requirements:<\/p>\n<ul>\n<li>They must have the same endianness<\/li>\n<li>They must have the same set of database options installed<\/li>\n<li>The CDB that contained the unplugged PDB and the target CDB must have compatible character sets and national character sets<\/li>\n<\/ul>\n<p>Now I will demonstrate the above procedure. Currently, I have one single instance CDB called <strong>cdbs<\/strong> having a PDB called <strong>pdbs<\/strong>. Also, in my 3 node oracle database 12c cluster , there is a 3-instance policy managed RAC CDB called <strong>cdb1<\/strong> assigned to server pool ora.cdb1pool. Let\u2019s say that I want to have my application which is represented by single instance PDB (<strong>pdbs<\/strong>) to run on 3 servers to facilitate high availability and load balancing.\u00a0In order to meet my objective, I will unplug PDB <strong>pdbs<\/strong> from single instance CDB (<strong>cdbs<\/strong>) and plug it in 3-instance RAC CDB (<strong>cdb1<\/strong>) with name <strong>pdbrac<\/strong> so that the plugged-in PDB <strong>pdb<\/strong><strong>rac<\/strong> will also have 3 instances. Also, since datafiles of PDB <strong>pdbs<\/strong> are currently on non-shared filesystem, I will move them to shared storage on ASM while plugging in.<\/p>\n<p>Here is the demonstration:<\/p>\n<p><strong>Current scenario:<\/strong><\/p>\n<p>Nodes in cluster : 3<br \/>\nNames of nodes : host01, host02, host03<br \/>\n<strong>Source database:<\/strong><br \/>\nSource single instance CDB : <strong>cdbs<\/strong><strong> <\/strong><br \/>\nSingle instance PDB in <strong>cdbs<\/strong> : <strong>pdbs<\/strong><\/p>\n<p><strong>Destination <\/strong><strong>database:<\/strong><br \/>\nDestination policy managed RAC CDB : <strong>cdb1<\/strong><br \/>\nAssigned to serverpool : ora.cdb1pool<br \/>\nACTIVE_SERVERS=host02 host03<\/p>\n<h2>Overview:<\/h2>\n<ol>\n<li>Verify that source single instance CDB (<strong>cdbs<\/strong>) is Currently running on host01<\/li>\n<li>Verify that source single instance CDB (<strong>cdbs<\/strong>) has one PDB (<strong>pdbs<\/strong>) having non-ASM datafiles<\/li>\n<li>Verify that destination policy managed RAC CDB (<strong>cdb1<\/strong>)\n<ol>\n<li>Has 3 instances configured on host01, host02 and host03<\/li>\n<li>Has been assigned to serverpool ora.cdb1pool and<\/li>\n<li>Is currently running on host02 and host03<\/li>\n<\/ol>\n<\/li>\n<li>Verify that destination RAC CDB (<strong>cdb1<\/strong>) has currently only one PDB (<strong>pdb1<\/strong>)<\/li>\n<li>Unplug pluggable database <strong>pdbs<\/strong> from single instance CDB (<strong>cdbs<\/strong>)<\/li>\n<li>Plug pluggable database <strong>pdbs<\/strong> into RAC CDB <strong>cdb1<\/strong><\/li>\n<li>Verify that multiple instances of Plugged-in PDB can be accessed<\/li>\n<\/ol>\n<h2>Implementation:<\/h2>\n<h3>Verify that source single instance CDB (cdbs) is currently running on host01<\/h3>\n<pre>[grid@host03 ~]$ srvctl status database -d cdbs\r\nInstance cdbs is running on node <strong>host01<\/strong>\r\nCDBS&gt; sho parameter db_name\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\ndb_name                              string      <strong>cdbs<\/strong>\r\n\r\nCDBS&gt; sho parameter cluster_database\r\n\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\ncluster_database                     boolean     <strong>FALSE<\/strong>\r\ncluster_database_instances           integer     <strong>1<\/strong><\/pre>\n<p><strong>Verify that services of single instance PDB pdbs and CDB cdbs are registered with the listener on host01<\/strong><\/p>\n<pre>[oracle@host01 ~]$ lsnrctl stat\r\n\r\n...\r\n\r\n  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.9.201.246)(PORT=1521)))\r\nServices Summary...\r\nService \"+ASM\" has 1 instance(s).\r\n  Instance \"+ASM1\", status READY, has 2 handler(s) for this service...\r\nService \"<strong>cdbs<\/strong>\" has 1 instance(s).\r\n  Instance \"cdbs\", status READY, has 1 handler(s) for this service...\r\nService \"cdbsXDB\" has 1 instance(s).\r\n  Instance \"cdbs\", status READY, has 1 handler(s) for this service...\r\nService \"<strong>pdbs<\/strong>\" has 1 instance(s).\r\n  Instance \"cdbs\", status READY, has 1 handler(s) for this service...\r\nThe command completed successfully<\/pre>\n<h3>Verify that source single instance CDB (cdbs) has one PDB (pdbs) having non-ASM datafiles<\/h3>\n<pre>CDBS&gt; sho pdbs\r\n   CON_ID  CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n        2  PDB$SEED                       READ ONLY  NO\r\n        3  <strong>PDBS  <\/strong>                         READ WRITE YES\r\n\r\nCDBS&gt; alter session set container=pdbs;\r\n\r\nSession altered.\r\nCDBS&gt; select name from v$datafile;\r\n\r\nNAME\r\n  --------------------------------------------------------------------------------\r\n<span style=\"font-weight: bold; color: red;\">\/u01\/app\/oracle\/oradata\/cdbs\/undotbs01.dbf<\/span>\r\n<span style=\"font-weight: bold; color: red;\">\/u01\/app\/oracle\/oradata\/cdbs\/pdbs\/system01.dbf<\/span>\r\n<span style=\"font-weight: bold; color: red;\">\/u01\/app\/oracle\/oradata\/cdbs\/pdbs\/sysaux01.dbf<\/span>\r\n<span style=\"font-weight: bold; color: red;\">\/u01\/app\/oracle\/oradata\/cdbs\/pdbs\/pdbs_users01.dbf<\/span><\/pre>\n<h3>Verify that destination policy managed RAC CDB (cdb1)<\/h3>\n<ul>\n<li>Has 3 instances configured on host01, host02, and host03,<\/li>\n<li>Has been assigned to serverpool ora.cdb1pool, and<\/li>\n<li>Is currently running on host02 and host03<\/li>\n<\/ul>\n<pre>[grid@host03 ~]$ srvctl status database -d cdb1\r\nInstance cdb1_1 is running on node <span style=\"font-weight: bold; color: red;\">host02<\/span>\r\nInstance cdb1_2 is running on node <span style=\"font-weight: bold; color: red;\">host03<\/span>\r\nDatabase cdb1 is not running on node <span style=\"font-weight: bold; color: red;\">host01<\/span>\r\n\r\n[grid@host03 ~]$ crsctl status serverpool\r\nNAME=Free\r\nACTIVE_SERVERS=\r\n\r\nNAME=Generic\r\nACTIVE_SERVERS=host01\r\n\r\nNAME=<span style=\"font-weight: bold; color: red;\">ora.cdb1pool<\/span>\r\nACTIVE_SERVERS=<span style=\"font-weight: bold; color: red;\">host02 host03<\/span>\r\n\r\nNAME=ora.cdbs\r\nACTIVE_SERVERS=host01<\/pre>\n<p><strong>Verify that services of<strong> <\/strong><strong>RAC <\/strong> PDB pdb1 and CDB cdb1 are registered with the listener on host02 and instance cdb1_1 is running on host02<\/strong><\/p>\n<pre>[oracle@<span style=\"font-weight: bold; color: red;\">host02<\/span> ~]$ lsnrctl stat\r\n...\r\nServices Summary...\r\nService \"+ASM\" has 1 instance(s).\r\n Instance \"+ASM3\", status READY, has 2 handler(s) for this service...\r\nService \"<span style=\"font-weight: bold; color: red;\">cdb1<\/span>\" has 1 instance(s).\r\n Instance \"<span style=\"font-weight: bold; color: red;\">cdb1_1<\/span>\", status READY, has 1 handler(s) for this service...\r\nService \"cdb1XDB\" has 1 instance(s).\r\n Instance \"cdb1_1\", status READY, has 1 handler(s) for this service...\r\nService \"<span style=\"font-weight: bold; color: red;\">pdb1<\/span>\" has 1 instance(s).\r\n Instance \"<span style=\"font-weight: bold; color: red;\">cdb1_1<\/span>\", status READY, has 1 handler(s) for this service...\r\nThe command completed successfully<\/pre>\n<p><strong>Verify that services of PDB pdb1 and CDB cdb1 are registered with the listener on host03 and instance cdb1_2 is running on host03<\/strong><\/p>\n<pre>[oracle@<span style=\"font-weight: bold; color: red;\">host03<\/span> ~]$ lsnrctl stat\r\nServices Summary...\r\nService \"+ASM\" has 1 instance(s).\r\n Instance \"+ASM2\", status READY, has 2 handler(s) for this service...\r\nService \"<span style=\"font-weight: bold; color: red;\">cdb1<\/span>\" has 1 instance(s).\r\n Instance \"<span style=\"font-weight: bold; color: red;\">cdb1_2<\/span>\", status READY, has 1 handler(s) for this service...\r\nService \"cdb1XDB\" has 1 instance(s).\r\n Instance \"cdb1_2\", status READY, has 1 handler(s) for this service...\r\nService \"<span style=\"font-weight: bold; color: red;\">pdb1<\/span>\" has 1 instance(s).\r\n  Instance \"<span style=\"font-weight: bold; color: red;\">cdb1_2<\/span>\", status READY, has 1 handler(s) for this service...\r\nThe command completed successfully<\/pre>\n<h3>Verify that destination RAC CDB (cdb1) has currently only one PDB (PDB1)<\/h3>\n<pre>CDB1&gt; sho parameter db_name\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\ndb_name                              string      <span style=\"font-weight: bold; color: red;\">cdb1<\/span>\r\nCDB1&gt; sho parameter cluster\r\nNAME                                 TYPE        VALUE\r\n------------------------------------ ----------- ------------------------------\r\ncluster_database                     boolean     <span style=\"font-weight: bold; color: red;\">TRUE<\/span>\r\ncluster_database_instances           integer     <span style=\"font-weight: bold; color: red;\">3<\/span>\r\ncluster_interconnects                string\r\nCDB1&gt; sho pdbs\r\n    CON_ID CON_NAME                       OPEN MODE  RESTRICTED\r\n---------- ------------------------------ ---------- ----------\r\n         2 PDB$SEED                       READ ONLY  NO\r\n         3 <span style=\"font-weight: bold; color: red;\">PDB1<\/span>                            MOUNTED<\/pre>\n<h3>Unplug pluggable database pdbs from single instance CDB (cdbs)<\/h3>\n<p>To unplug a PDB, you first close it and then generate an XML manifest file. The XML file contains information about the names and the full paths of the tablespaces, as well as data files of the unplugged PDB. The information will be used by the plugging operation.<\/p>\n<p><strong>Use SQL*Plus to close the PDB before it can be unplugged.<\/strong><\/p>\n<p><code>SQL&gt; conn sys\/oracle@cdbs as sysdba<\/code><br \/>\n<code>CDBS&gt; alter pluggable database pdbs close immediate;<\/code><\/p>\n<p><strong>Unplug the closed PDB and then specify the path and name of the XML file.<\/strong><\/p>\n<p><code>CDBS&gt;alter pluggable database pdbs unplug into '\/u01\/app\/oracle\/oradata\/pdbs.xml';<\/code><\/p>\n<p><strong>Drop the closed PDB and keep the data files.<\/strong><\/p>\n<p><code>CDBS&gt;drop pluggable database pdbs keep datafiles;<\/code><\/p>\n<p><strong>Verify that unplugged PDB is no longer part of cdbs<\/strong><\/p>\n<p><code>CDBS&gt;select pdb_name, status from cdb_pdbs where pdb_name in ('PDBS');<\/code><br \/>\n<code>no rows selected<\/code><\/p>\n<h3>Plug pluggable database PDBS into RAC CDB CDB1<\/h3>\n<p>This command should be issued from the node where target database instance is running.<\/p>\n<p><strong>Since cdb1 instance is running on host02, copy the xml file from host01 to host02<\/strong><\/p>\n<pre>  [oracle@host01 ~]$ scp \/u01\/app\/oracle\/oradata\/pdbs.xml host02:\/u01\/app\/oracle\/oradata\/pdbs.xml\r\npdbs.xml \r\n                                    100% 3372     3.3KB\/s   00:00<\/pre>\n<p><strong>Find out the name of the instance of destination RAC CDB cdb1 running on host02<\/strong><\/p>\n<pre>[oracle@<span style=\"font-weight: bold; color: red;\">host02<\/span> ~]$ ps -ef |grep pmon\r\noracle    8525  6894  0 16:54 pts\/2    00:00:00 grep pmon\r\ngrid     17855     1  0 09:08 ?        00:00:06 asm_pmon_+ASM3\r\noracle   20871     1  0 09:09 ?        00:00:07 ora_pmon_<span style=\"font-weight: bold; color: red;\">cdb1_1<\/span><\/pre>\n<p><strong>Make sure that the to-be-plugged-in PDB (pdbs) is compatible with the new host CDB (cdb1).<\/strong><\/p>\n<pre>[oracle@<span style=\"font-weight: bold; color: red;\">host02<\/span> ~]$ export ORACLE_SID=cdb1_1\r\n\r\n[oracle@<span style=\"font-weight: bold; color: red;\">host02 <\/span>~]$ sqlplus \/ as sysdba\r\n          CDB1&gt;set serveroutput on\r\n\r\n    DECLARE\r\n       compatible BOOLEAN := FALSE;\r\n    BEGIN  \r\n       compatible := DBMS_PDB.CHECK_PLUG_COMPATIBILITY(\r\n            pdb_descr_file =&gt; '\/u01\/app\/oracle\/oradata\/pdbs.xml', pdb_name=&gt;'PDBS');\r\n       if compatible then\r\n          DBMS_OUTPUT.PUT_LINE('Is pluggable PDB1 compatible? YES');\r\n       else DBMS_OUTPUT.PUT_LINE('Is pluggable PDB1 compatible? NO');\r\n       end if;\r\n    END;\r\n    \/<\/pre>\n<p><strong>Check the Compatibility of the Unplugged PDB (pdbs) with the target CDB (cdb1)<\/strong><\/p>\n<pre>CDB1&gt;  col cause for a10\r\n              col name for a10\r\n              col message for a35 word_wrapped\r\n              select name,cause,type,message,status from PDB_PLUG_IN_VIOLATIONS where name='PDBS';\r\n\r\nNAME       CAUSE      TYPE      MESSAGE                             STATUS\r\n---------- ---------- --------- ----------------------------------- ---------\r\n\r\nPDBS       OPTION     <span style=\"font-weight: bold; color: red;\">WARNING<\/span>   Database option RAC mismatch: PDB   PENDING\r\n                                installed version NULL. CDB\r\n                                installed version 12.1.0.1.0.\r\n\r\nPDBS       Parameter  <span style=\"font-weight: bold; color: red;\">WARNING<\/span>   CDB parameter sga_target mismatch:  PENDING\r\n                                Previous 394264576 Current\r\n                                662700032\r\n\r\nPDBS       Parameter  <span style=\"font-weight: bold; color: red;\">WARNING<\/span>   CDB parameter pga_aggregate_target  PENDING\r\n                                mismatch: Previous 131072000\r\n                                Current 220200960<\/pre>\n<p>Since these are warnings, we can continue.<\/p>\n<p><strong>Copy datafiles of PDB pdbs from host01 to host02 in same location as host01<\/strong><\/p>\n<p><code>[oracle@host02 ~]$ mkdir -p \/u01\/app\/oracle\/oradata\/cdbs\/pdbs<\/code><\/p>\n<p><code>[oracle@host02 ~]$ scp host01:\/u01\/app\/oracle\/oradata\/cdbs\/pdbs\/* \/u01\/app\/oracle\/oradata\/cdbs\/pdbs\/<\/code><\/p>\n<p><strong>Plug the PDB (pdbs) into destination CDB (cdb1) with name pdbrac and copy the datafiles to DATA diskgroup on shared storage<\/strong><\/p>\n<p><code>CDB1L&gt; create pluggable database <span style=\"font-weight: bold; color: red;\">pdbrac<\/span> using '\/u01\/app\/oracle\/oradata\/pdbs.xml' <\/code><br \/>\n<code>copy<br \/>\n<code>FILE_NAME_CONVERT = ('\/u01\/app\/oracle\/oradata\/cdbs\/pdbs', '<span style=\"font-weight: bold; color: red;\">+DATA'<\/span>);<\/code><\/code><\/p>\n<p><strong>Verify that PDB (pdbs) has been successfully plugged into into target CDB (cdb1) with name pdbrac<\/strong><\/p>\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                               MOUNTED\r\n         4 <span style=\"font-weight: bold; color: red;\">PDBRAC<\/span>                         MOUNTED\r\n\r\n    CDB1&gt;alter pluggable database PDBrac open;\r\n\r\n     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                           MOUNTED\r\n         4 <span style=\"font-weight: bold; color: red;\">PDBRAC<\/span>                         READ WRITE YES\r\n\r\nCDB1&gt; alter session set container=pdbrac;<\/pre>\n<p><strong>Verify that datafiles for plugged in PDB (pdbrac) have been copied to DATA diskgroup on shared storage<\/strong><\/p>\n<pre>PDBRAC1&gt;  select name from v$datafile;\r\n\r\n NAME\r\n--------------------------------------------------\r\n<span style=\"font-weight: bold; color: red;\">+DATA<\/span>\/CDB1\/DATAFILE\/undotbs1.261.853323067\r\n<span style=\"font-weight: bold; color: red;\">+DATA<\/span>\/system01.dbf\r\n<span style=\"font-weight: bold; color: red;\">+DATA<\/span>\/sysaux01.dbf\r\n<span style=\"font-weight: bold; color: red;\">+DATA<\/span>\/pdbs_users01.dbf<\/pre>\n<p><strong>Open all instances of plugged-in PDB pdbrac<\/strong><\/p>\n<p><code>SQL&gt; alter pluggable database pdbrac open instances=all;<\/code><\/p>\n<h3>Verify that multiple instances of Plugged-in PDB can be accessed<\/h3>\n<p><strong>Connect to instance of PDB pdbrac running on host03 and verify that it belongs to instance cdb1_2 of CDB cdb1<\/strong><\/p>\n<pre>SQL&gt; conn system\/oracle@<span style=\"font-weight: bold; color: red;\">host03<\/span>:1521\/<span style=\"font-weight: bold; color: red;\">pdbrac<\/span>\r\nConnected.\r\nSQL&gt; sho con_name\r\nCON_NAME\r\n------------------------------\r\nPDBRAC\r\n\r\nSQL&gt; sho parameter instance_name\r\n\r\nNAME TYPE VALUE\r\n------------------------------------ ----------- ------------------------------\r\ninstance_name string <span style=\"font-weight: bold; color: red;\">cdb1_2<\/span><\/pre>\n<p><strong>Connect to instance of PDB pdbrac running on host02 and verify that it belongs to instance cdb1_1 of CDB cdb1<\/strong><\/p>\n<pre>SQL&gt; conn system\/oracle@host02:1521\/pdbrac\r\nConnected.\r\nSQL&gt; sho con_name\r\n\r\nCON_NAME\r\n------------------------------\r\nPDBRAC\r\nSQL&gt; sho parameter instance_name\r\n\r\nNAME TYPE VALUE\r\n------------------------------------ ----------- ------------------------------\r\ninstance_name string <span style=\"font-weight: bold; color: red;\">cdb1_1<\/span><\/pre>\n<h2>Conclusion<\/h2>\n<p>Oracle multitenant architecture reduces the number of tasks to be performed when converting a single instance database to RAC as SPfile, controlfile, undo tablespace(s), Redo logs, password file and instance to node mapping belongs to CDB rather than to each individual PDB. Moreover, conventional pre-12c methods of conversion required RAC and the standalone environments to be using the same oracle release. But in case of oracle database 12c multitenant architecture, this restriction is not there. The destination RAC CDB can be running a different oracle software version and as a result upgrading of the application can be carried it along with its conversion to RAC.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prior to oracle database 12c, the procedures for converting from single-instance databases to Real Application Clusters involved following steps: Configure the control file attributes and move control file to shared storage Make the initialization parameter file entries for cluster-enabled environments and move SPfile to shared storage Create an undo tablespace for each additional instance Create redo threads for each additiona&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":[48373,48444,48447,48471,48476,48485],"coauthors":[],"class_list":["post-73167","post","type-post","status-publish","format-standard","hentry","category-oracle-databases","tag-cdb","tag-multit","tag-ncdb","tag-pdb","tag-pluggable-databases","tag-rac"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/73167","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=73167"}],"version-history":[{"count":1,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/73167\/revisions"}],"predecessor-version":[{"id":91658,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/73167\/revisions\/91658"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=73167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=73167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=73167"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=73167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}