{"id":394,"date":"2016-02-28T22:41:15","date_gmt":"2016-02-28T22:41:15","guid":{"rendered":"http:\/\/nenadnoveljic.com\/blog\/?p=394"},"modified":"2020-11-22T18:29:11","modified_gmt":"2020-11-22T18:29:11","slug":"overhead-sqlnet-encryption-rman-duplicate","status":"publish","type":"post","link":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/","title":{"rendered":"Overhead of SQLNet encryption on RMAN duplicate"},"content":{"rendered":"<h4>Introduction<\/h4>\n<p>The table below shows the&nbsp;measured elapsed times in seconds&nbsp;when duplicating a 1GB data file&nbsp;with&nbsp;various&nbsp;encryption algorithms on Oracle 12.1 and 11.2 databases:<\/p>\n<table>\n<tbody>\n<tr>\n<th><\/th>\n<th>none<\/th>\n<th>AES256<\/th>\n<th>AES128<\/th>\n<th>3DES168<\/th>\n<\/tr>\n<tr>\n<td>11.2<\/td>\n<td>7<\/td>\n<td>35<\/td>\n<td>25<\/td>\n<td>125<\/td>\n<\/tr>\n<tr>\n<td>12.1<\/td>\n<td>7<\/td>\n<td>16<\/td>\n<td>16<\/td>\n<td>125<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Although depending on the CPU, IO and network speed you might get different results on your system the following general conclusions can be made by looking at the&nbsp;durations above:<\/p>\n<ul>\n<li>The AES algorithm&nbsp;is much more efficient than DES.<\/li>\n<li>The efficiency of the AES algorithm&nbsp;has been&nbsp;significantly improved in 12c.<\/li>\n<li>Curiously, no difference in performance was observed between AES128 and AES256 in 12c.<\/li>\n<\/ul>\n<h4>Who does the work (12c)?<\/h4>\n<p>I sampled v$session on both auxiliary and target database to get&nbsp;the&nbsp;initial&nbsp;insight into the mechanics of rman duplicate. It became obvious that&nbsp;the session doing the work on the <strong>auxiliary<\/strong> instance is created as soon as the auxiliary channel&nbsp;gets&nbsp;allocated and remains connected until the duplicate is completed. The process ID of this&nbsp;session can easily be identifed by the means of v$session.client_info which&nbsp;contains the name of the auxiliary channel:<\/p>\n<pre><code>\nselect p.spid from v$session s,v$process p \n  where s.paddr=p.addr and s.username='SYSBACKUP' \n    and s.client_info='rman channel=ORA_AUX_DISK\u200b_1' ;\nP.SPID\n<span style=\"color: #ff0000;\">22052\n<\/span><\/code><\/pre>\n<p>In contrast, a separate session is created on the <strong>target<\/strong> database for each database file. The sessions log out when the file restore on the auxiliary instance completes. It was not immediately obvious which process connects to the target database. Therefore, I queried the v$session.port for the newly created session and correlated it with the output of the <em>netstat -un -P tcp<\/em> command on the auxiliary server which shows the open TCP connections for all the processes (I edited out the irrelevant columns and rows&nbsp;in the outputs below):<\/p>\n<pre><code>\nLocal Address  Remote Address User   Pid   Command  State\n-------------- -------------- -----  ----  -------- ------- \nx.x.x.x.<span style=\"color: #ff0000;\">59066<\/span>  y.y.y.y.<span style=\"color: #ff0000;\">1527<\/span>   oracle <span style=\"color: #ff0000;\">22052<\/span> oracle   ESTABLISHED\n<\/code><\/pre>\n<p>Note: 1527 is the port of the listener on the target database.<\/p>\n<p>On the <strong>target<\/strong> database:<\/p>\n<pre><code>select sid,port from v$session where username='SYSBACKUP' ;\nSID PORT\n231 <span style=\"color: #ff0000;\">59066\n<\/span><\/code><\/pre>\n<p>Using&nbsp;the information above&nbsp;it can be deduced that the dedicated process of the rman auxiliary channel session is the one which makes connections to the target database. The following graphic visualizes these findings:<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/nenadnoveljic.com\/blog\/wp-content\/uploads\/2016\/02\/RMANduplicate_12c_pid.gif\" rel=\"attachment wp-att-487\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-487\" src=\"http:\/\/nenadnoveljic.com\/blog\/wp-content\/uploads\/2016\/02\/RMANduplicate_12c_pid.gif\" alt=\"RMAN duplicate 12c\" width=\"430\" height=\"162\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Hence, the dedicated process on the auxiliary database has two roles. One is the dedicated process for the working session on the <strong>auxiliary<\/strong> database. The other is the client process of the dedicated process of the working session on the <strong>target<\/strong> database.<\/p>\n<p>There hasn&#8217;t been any CPU activity instrumented on either the auxiliary or the target database for the working sessions (the &#8220;CPU used by this session statistics&#8221;&nbsp;from v$sesstat was only 1 during all measurements). Therefore, I wrote a small dtrace&nbsp;script which collects the time spent on the CPU for all dedicated processes of the non-local sessions (the non-local sessions are&nbsp;filtered by setting the predicate execname==&#8221;tnslsnr&#8221;):<\/p>\n<pre><code>proc:::start\n\/execname == \"tnslsnr\"\/\n{\n  self-&gt;start = vtimestamp;\n}\n\nproc:::exit\n\/self-&gt;start\/\n{\n  printf(\"Process %d spent %d seconds on CPU\\n\",pid,(vtimestamp - self-&gt;start)\/1000000000 );\n  self-&gt;start = 0;\n}\n<\/code><\/pre>\n<p>After obtaining the&nbsp;CPU time for all the remote sessions on the server, I correlated v$process.spid with the OS pid in the output of the dtrace script to&nbsp;get the cpu times&nbsp;for the dedicated processes involved in the duplicate processing. No surprise there &#8211;&nbsp;it turned out that the whole overhead of encryption&nbsp;can be&nbsp;attributed&nbsp;to the cpu time of the dedicated processes on both the auxiliary and the target database.<\/p>\n<p>The following wait events has fully matched the CPU time on the opposite side:<\/p>\n<ul>\n<li>target database: SQL*Net more data to client<\/li>\n<li>auxiliary database: remote db file read<\/li>\n<\/ul>\n<h4>11g<\/h4>\n<p>As I explained in the last section, in 12c the dedicated process on the auxiliary database connects to the target database to pull the datafiles. Applying the same testing methodology on 11g, I found out that the 11g databases behave differently: the dedicated process of the session which is created when the channel is allocated on the target database connects to the auxiliary database and pushes the files. The following picture shows the rman duplicate from active mechanics on a 11g database:<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/nenadnoveljic.com\/blog\/wp-content\/uploads\/2016\/02\/RMANduplicate_11g.gif\" rel=\"attachment wp-att-425\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-425\" src=\"http:\/\/nenadnoveljic.com\/blog\/wp-content\/uploads\/2016\/02\/RMANduplicate_11g.gif\" alt=\"RMAN duplicate 11g\" width=\"430\" height=\"162\"><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>As a consequence, you might observe different elapsed times after upgrading the database if the sqlnet encryption is configured differently for the target and auxiliary database. In 12c namely, the configuration of the target database decides which algorithm will be used, in 11g is the other way around &#8211; the encryption is defined by the configuration of the auxiliary database.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SQLNet encryption has a significant impact on RMAN duplicate duration. <a href=\"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/\" class=\"more-link\">Continue Reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[26,5,38],"tags":[],"class_list":["post-394","post","type-post","status-publish","format-standard","hentry","category-encryption","category-oracle","category-rman"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Overhead of SQLNet encryption on RMAN duplicate - All-round Database Topics<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Overhead of SQLNet encryption on RMAN duplicate - All-round Database Topics\" \/>\n<meta property=\"og:description\" content=\"SQLNet encryption has a significant impact on RMAN duplicate duration. Continue Reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/\" \/>\n<meta property=\"og:site_name\" content=\"All-round Database Topics\" \/>\n<meta property=\"article:published_time\" content=\"2016-02-28T22:41:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-11-22T18:29:11+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/nenadnoveljic.com\/blog\/wp-content\/uploads\/2016\/02\/RMANduplicate_12c_pid.gif\" \/>\n<meta name=\"author\" content=\"Nenad Noveljic\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@NenadNoveljic\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nenad Noveljic\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/\"},\"author\":{\"name\":\"Nenad Noveljic\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#\\\/schema\\\/person\\\/51458d9dd86dbbdd19f5add451d44efa\"},\"headline\":\"Overhead of SQLNet encryption on RMAN duplicate\",\"datePublished\":\"2016-02-28T22:41:15+00:00\",\"dateModified\":\"2020-11-22T18:29:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/\"},\"wordCount\":715,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/nenadnoveljic.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/RMANduplicate_12c_pid.gif\",\"articleSection\":[\"encryption\",\"Oracle\",\"RMAN\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/\",\"url\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/\",\"name\":\"Overhead of SQLNet encryption on RMAN duplicate - All-round Database Topics\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/nenadnoveljic.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/RMANduplicate_12c_pid.gif\",\"datePublished\":\"2016-02-28T22:41:15+00:00\",\"dateModified\":\"2020-11-22T18:29:11+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#\\\/schema\\\/person\\\/51458d9dd86dbbdd19f5add451d44efa\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/#primaryimage\",\"url\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/RMANduplicate_12c_pid.gif\",\"contentUrl\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/RMANduplicate_12c_pid.gif\",\"width\":430,\"height\":162},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/overhead-sqlnet-encryption-rman-duplicate\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Overhead of SQLNet encryption on RMAN duplicate\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/\",\"name\":\"All-round Database Topics\",\"description\":\"Nenad Noveljic\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#\\\/schema\\\/person\\\/51458d9dd86dbbdd19f5add451d44efa\",\"name\":\"Nenad Noveljic\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g\",\"caption\":\"Nenad Noveljic\"},\"sameAs\":[\"nenad-noveljic-9b746a6\",\"https:\\\/\\\/x.com\\\/NenadNoveljic\"],\"url\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/author\\\/nenad\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Overhead of SQLNet encryption on RMAN duplicate - All-round Database Topics","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:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/","og_locale":"en_US","og_type":"article","og_title":"Overhead of SQLNet encryption on RMAN duplicate - All-round Database Topics","og_description":"SQLNet encryption has a significant impact on RMAN duplicate duration. Continue Reading &rarr;","og_url":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/","og_site_name":"All-round Database Topics","article_published_time":"2016-02-28T22:41:15+00:00","article_modified_time":"2020-11-22T18:29:11+00:00","og_image":[{"url":"http:\/\/nenadnoveljic.com\/blog\/wp-content\/uploads\/2016\/02\/RMANduplicate_12c_pid.gif","type":"","width":"","height":""}],"author":"Nenad Noveljic","twitter_card":"summary_large_image","twitter_creator":"@NenadNoveljic","twitter_misc":{"Written by":"Nenad Noveljic","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/#article","isPartOf":{"@id":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/"},"author":{"name":"Nenad Noveljic","@id":"https:\/\/nenadnoveljic.com\/blog\/#\/schema\/person\/51458d9dd86dbbdd19f5add451d44efa"},"headline":"Overhead of SQLNet encryption on RMAN duplicate","datePublished":"2016-02-28T22:41:15+00:00","dateModified":"2020-11-22T18:29:11+00:00","mainEntityOfPage":{"@id":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/"},"wordCount":715,"commentCount":0,"image":{"@id":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/#primaryimage"},"thumbnailUrl":"http:\/\/nenadnoveljic.com\/blog\/wp-content\/uploads\/2016\/02\/RMANduplicate_12c_pid.gif","articleSection":["encryption","Oracle","RMAN"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/","url":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/","name":"Overhead of SQLNet encryption on RMAN duplicate - All-round Database Topics","isPartOf":{"@id":"https:\/\/nenadnoveljic.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/#primaryimage"},"image":{"@id":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/#primaryimage"},"thumbnailUrl":"http:\/\/nenadnoveljic.com\/blog\/wp-content\/uploads\/2016\/02\/RMANduplicate_12c_pid.gif","datePublished":"2016-02-28T22:41:15+00:00","dateModified":"2020-11-22T18:29:11+00:00","author":{"@id":"https:\/\/nenadnoveljic.com\/blog\/#\/schema\/person\/51458d9dd86dbbdd19f5add451d44efa"},"breadcrumb":{"@id":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/#primaryimage","url":"https:\/\/nenadnoveljic.com\/blog\/wp-content\/uploads\/2016\/02\/RMANduplicate_12c_pid.gif","contentUrl":"https:\/\/nenadnoveljic.com\/blog\/wp-content\/uploads\/2016\/02\/RMANduplicate_12c_pid.gif","width":430,"height":162},{"@type":"BreadcrumbList","@id":"https:\/\/nenadnoveljic.com\/blog\/overhead-sqlnet-encryption-rman-duplicate\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nenadnoveljic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Overhead of SQLNet encryption on RMAN duplicate"}]},{"@type":"WebSite","@id":"https:\/\/nenadnoveljic.com\/blog\/#website","url":"https:\/\/nenadnoveljic.com\/blog\/","name":"All-round Database Topics","description":"Nenad Noveljic","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nenadnoveljic.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/nenadnoveljic.com\/blog\/#\/schema\/person\/51458d9dd86dbbdd19f5add451d44efa","name":"Nenad Noveljic","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a97b796613ea48ec8a7b79c8ffe1c685dcffc920c68121f6238d5caab5070670?s=96&d=mm&r=g","caption":"Nenad Noveljic"},"sameAs":["nenad-noveljic-9b746a6","https:\/\/x.com\/NenadNoveljic"],"url":"https:\/\/nenadnoveljic.com\/blog\/author\/nenad\/"}]}},"_links":{"self":[{"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/posts\/394","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/comments?post=394"}],"version-history":[{"count":1,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/posts\/394\/revisions"}],"predecessor-version":[{"id":3656,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/posts\/394\/revisions\/3656"}],"wp:attachment":[{"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/media?parent=394"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/categories?post=394"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/tags?post=394"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}