{"id":1858,"date":"2018-05-27T17:18:45","date_gmt":"2018-05-27T17:18:45","guid":{"rendered":"http:\/\/nenadnoveljic.com\/blog\/?p=1858"},"modified":"2019-04-04T15:50:32","modified_gmt":"2019-04-04T15:50:32","slug":"negative-unaccounted-for","status":"publish","type":"post","link":"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/","title":{"rendered":"Negative Unaccounted-for"},"content":{"rendered":"<h1>Unaccounted-for<\/h1>\n<p>In this blog post I\u2019ll be sharing the insights obtained from analyzing a negative unaccounted-for time in an Oracle extended SQL trace profile. <\/p>\n<p>Ideally, the time elapsed in a fetch database call is the sum of the cpu time and the total duration of the wait events during the fetch:<\/p>\n<p><a name=\"id1852037859\"><\/a><\/p>\n<p class=\"ql-left-displayed-equation\" style=\"line-height: 39px;\"><span class=\"ql-right-eqno\"> (1) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nenadnoveljic.com\/blog\/wp-content\/ql-cache\/quicklatex.com-2d8b4c0db17277aa1789c94507e7088b_l3.png\" height=\"39\" width=\"391\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;&#32; &#102;&#101;&#116;&#99;&#104;&#92;&#95;&#101;&#108;&#97;&#112;&#115;&#101;&#100;&#32;&#61;&#32;&#102;&#101;&#116;&#99;&#104;&#92;&#95;&#99;&#112;&#117;&#32;&#43;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#105;&#32;&#92;&#105;&#110;&#32;&#119;&#97;&#105;&#116;&#92;&#95;&#101;&#118;&#101;&#110;&#116;&#115;&#125;&#100;&#117;&#114;&#97;&#116;&#105;&#111;&#110;&#95;&#105; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>If that&#8217;s not the case, unaccounted-for is the magnitude of the discrepancy:<\/p>\n<p><a name=\"id1409295537\"><\/a><\/p>\n<p class=\"ql-left-displayed-equation\" style=\"line-height: 39px;\"><span class=\"ql-right-eqno\"> (2) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nenadnoveljic.com\/blog\/wp-content\/ql-cache\/quicklatex.com-b95daadb789e63c8546a3ad986679005_l3.png\" height=\"39\" width=\"546\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;&#32; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#115;&#112;&#108;&#105;&#116;&#125; &#117;&#110;&#97;&#99;&#99;&#111;&#117;&#110;&#116;&#101;&#100;&#92;&#95;&#102;&#111;&#114;&#32;&#38;&#61;&#32;&#102;&#101;&#116;&#99;&#104;&#92;&#95;&#101;&#108;&#97;&#112;&#115;&#101;&#100;&#32;&#45;&#32;&#102;&#101;&#116;&#99;&#104;&#92;&#95;&#99;&#112;&#117;&#32;&#45;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#105;&#32;&#92;&#105;&#110;&#32;&#119;&#97;&#105;&#116;&#92;&#95;&#101;&#118;&#101;&#110;&#116;&#115;&#125;&#100;&#117;&#114;&#97;&#116;&#105;&#111;&#110;&#95;&#105; &#92;&#101;&#110;&#100;&#123;&#115;&#112;&#108;&#105;&#116;&#125; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>In other words, unaccounted-for is the adjustment that needs to be made to the right side of the equation <a href=\"#id1852037859\">1<\/a> in the case of a mismatch. <\/p>\n<h1>Wait Events<\/h1>\n<p>Wait event duration (a.k.a time waited) is the time it took to execute a part of Oracle database code instrumented by a wait event. Therefore, the naming &#8220;wait event&#8221; is somewhat confusing, because it implies that the server process is solely waiting on something. As we shall see later, that\u2019s not necessarily true. For this reason, Cary Millsap prefers to use the term &#8220;syscall&#8221; instead of &#8220;wait&#8221; in his excellent book <a href=\"https:\/\/method-r.com\/2016\/05\/20\/motd2\/\">The Method R Guide to Mastering Oracle Trace Data<\/a> . Cary&#8217;s naming convention describes the reality much better.<\/p>\n<p>Anyway, the primary goal of a wait event is to instrument OS kernel functions executed within the Oracle database code. Generally, for any given wait event <i>i<\/i> the time spent in an OS kernel function consists of the time spent on the CPU and the time spent waiting on something:<\/p>\n<p><a name=\"id3275621820\"><\/a><\/p>\n<p class=\"ql-left-displayed-equation\" style=\"line-height: 17px;\"><span class=\"ql-right-eqno\"> (3) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nenadnoveljic.com\/blog\/wp-content\/ql-cache\/quicklatex.com-bc95e08c95a10756ea2be7b12545e4ec_l3.png\" height=\"17\" width=\"307\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;&#32; &#119;&#97;&#105;&#116;&#92;&#95;&#101;&#118;&#101;&#110;&#116;&#92;&#95;&#100;&#117;&#114;&#97;&#116;&#105;&#111;&#110;&#95;&#105;&#32;&#61;&#32;&#99;&#112;&#117;&#95;&#105;&#32;&#43;&#32;&#119;&#97;&#105;&#116;&#105;&#110;&#103;&#95;&#105; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>After combining the equations <a href=\"#id1852037859\">1<\/a> and <a href=\"#id3275621820\">3<\/a> we get the following:<\/p>\n<p><a name=\"id312467401\"><\/a><\/p>\n<p class=\"ql-left-displayed-equation\" style=\"line-height: 67px;\"><span class=\"ql-right-eqno\"> (4) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nenadnoveljic.com\/blog\/wp-content\/ql-cache\/quicklatex.com-0681cae3f57f0e9adb891f8abc9538b0_l3.png\" height=\"67\" width=\"373\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;&#32; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#115;&#112;&#108;&#105;&#116;&#125; &#117;&#110;&#97;&#99;&#99;&#111;&#117;&#110;&#116;&#101;&#100;&#92;&#95;&#102;&#111;&#114;&#32;&#38;&#61;&#32;&#102;&#101;&#116;&#99;&#104;&#92;&#95;&#101;&#108;&#97;&#112;&#115;&#101;&#100;&#32;&#45;&#32;&#102;&#101;&#116;&#99;&#104;&#92;&#95;&#99;&#112;&#117;&#32;&#92;&#92; &#38;&#45;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#105;&#32;&#92;&#105;&#110;&#32;&#119;&#97;&#105;&#116;&#92;&#95;&#101;&#118;&#101;&#110;&#116;&#115;&#125;&#40;&#99;&#112;&#117;&#95;&#105;&#32;&#43;&#32;&#119;&#97;&#105;&#116;&#105;&#110;&#103;&#95;&#105;&#41; &#92;&#101;&#110;&#100;&#123;&#115;&#112;&#108;&#105;&#116;&#125; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>Finally, we can apply <a href=\"https:\/\/www.britannica.com\/science\/commutative-law\">commutative law<\/a> to the previous equation <a href=\"#id312467401\">4<\/a> to isolate the terms:<\/p>\n<p><a name=\"id4118480105\"><\/a><\/p>\n<p class=\"ql-left-displayed-equation\" style=\"line-height: 67px;\"><span class=\"ql-right-eqno\"> (5) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nenadnoveljic.com\/blog\/wp-content\/ql-cache\/quicklatex.com-d799490aa33dbfa77945f81119a62706_l3.png\" height=\"67\" width=\"450\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;&#32; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#115;&#112;&#108;&#105;&#116;&#125; &#117;&#110;&#97;&#99;&#99;&#111;&#117;&#110;&#116;&#101;&#100;&#92;&#95;&#102;&#111;&#114;&#32;&#38;&#61;&#32;&#102;&#101;&#116;&#99;&#104;&#92;&#95;&#101;&#108;&#97;&#112;&#115;&#101;&#100;&#32;&#45;&#32;&#102;&#101;&#116;&#99;&#104;&#92;&#95;&#99;&#112;&#117;&#32;&#92;&#92; &#32;&#38;&#45;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#105;&#32;&#92;&#105;&#110;&#32;&#119;&#97;&#105;&#116;&#92;&#95;&#101;&#118;&#101;&#110;&#116;&#115;&#125;&#99;&#112;&#117;&#95;&#105;&#32;&#45;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#105;&#32;&#92;&#105;&#110;&#32;&#119;&#97;&#105;&#116;&#92;&#95;&#101;&#118;&#101;&#110;&#116;&#115;&#125;&#119;&#97;&#105;&#116;&#105;&#110;&#103;&#95;&#105; &#92;&#101;&#110;&#100;&#123;&#115;&#112;&#108;&#105;&#116;&#125; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<p>Usually, the instrumented OS kernel calls, such as IO operations, spend substantially more time waiting on something than consuming CPU. In fact, more often than not the CPU time consumed by such OS kernel functions is close to zero. In such case, the entire wait event duration is the time waited:<\/p>\n<p class=\"ql-left-displayed-equation\" style=\"line-height: 92px;\"><span class=\"ql-right-eqno\"> (6) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nenadnoveljic.com\/blog\/wp-content\/ql-cache\/quicklatex.com-bea0cc580a897cc803a358589047e9bc_l3.png\" height=\"92\" width=\"568\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125; &#92;&#98;&#101;&#103;&#105;&#110;&#123;&#115;&#112;&#108;&#105;&#116;&#125; &#99;&#112;&#117;&#95;&#105;&#32;&#38;&#32;&#92;&#97;&#112;&#112;&#114;&#111;&#120;&#32;&#48;&#32;&#92;&#105;&#109;&#112;&#108;&#105;&#101;&#115;&#32;&#92;&#92; &#119;&#97;&#105;&#116;&#92;&#95;&#101;&#118;&#101;&#110;&#116;&#92;&#95;&#100;&#117;&#114;&#97;&#116;&#105;&#111;&#110;&#95;&#105;&#32;&#38;&#32;&#92;&#97;&#112;&#112;&#114;&#111;&#120;&#32;&#119;&#97;&#105;&#116;&#105;&#110;&#103;&#95;&#105;&#32;&#92;&#92; &#117;&#110;&#97;&#99;&#99;&#111;&#117;&#110;&#116;&#101;&#100;&#92;&#95;&#102;&#111;&#114;&#32;&#38;&#32;&#92;&#97;&#112;&#112;&#114;&#111;&#120;&#32;&#102;&#101;&#116;&#99;&#104;&#92;&#95;&#101;&#108;&#97;&#112;&#115;&#101;&#100;&#32;&#45;&#32;&#102;&#101;&#116;&#99;&#104;&#92;&#95;&#99;&#112;&#117;&#32;&#45;&#32;&#92;&#115;&#117;&#109;&#95;&#123;&#105;&#32;&#92;&#105;&#110;&#32;&#119;&#97;&#105;&#116;&#92;&#95;&#101;&#118;&#101;&#110;&#116;&#115;&#125;&#119;&#97;&#105;&#116;&#105;&#110;&#103;&#95;&#105; &#92;&#101;&#110;&#100;&#123;&#115;&#112;&#108;&#105;&#116;&#125; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<h1>CPU Intensive OS Kernel Functions<\/h1>\n<p>But what will happen if an instrumented OS kernel function spends a considerable amount of time on the CPU? <\/p>\n<p>First, let\u2019s take a look at the oversimplified pseudocode below to understand how fetch database call is instrumented:<\/p>\n<pre><code>begin_cpu_ts = slcpums\r\n\r\n# BEGIN FETCH\r\nloop \r\n  non-instrumented code\r\n  code instrumented with a wait event\r\nend loop\r\n# END FETCH\r\n\r\nend_cpu_ts = slcpums\r\n\r\nfetch_cpu = end_cpu_ts - begin_cpu_ts<\/code><\/pre>\n<p>slcpums is an Oracle database function for getting total CPU time consumed by the process so far. As a consequence, the difference betweeen two consecutive returned values is the total amount of CPU time that the server proces consumed between two slcpums calls. By the way, I provided more details on that topic in my blog post <a href=\"http:\/\/nenadnoveljic.com\/blog\/database-call-cpu-instrumentation\/\">Database Call CPU Instrumentation<\/a>.<\/p>\n<p>The key point here is that the cpu_time of the instrumented OS kernel function is counted twice in the equation <a href=\"#id4118480105\">5<\/a>. To begin with, it is inherently entailed in the wait event duration. And then, it is contained in the fetch_cpu, simply because the wait events are the children of the fetch call. As a result, the sum of the CPU time and the total time spent in the instrumented code needs to be decreased by the amount of time the instrumented code spent on the CPU in order to match the elapsed time. This negative adjustment is unaccounted-for. <b>Simply put, the amount of time that the code instrumented by a wait event spent on the CPU is a negative unaccounted-for:<\/b><\/p>\n<p><a name=\"id2850740715\"><\/a><\/p>\n<p class=\"ql-left-displayed-equation\" style=\"line-height: 39px;\"><span class=\"ql-right-eqno\"> (7) <\/span><span class=\"ql-left-eqno\"> &nbsp; <\/span><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/nenadnoveljic.com\/blog\/wp-content\/ql-cache\/quicklatex.com-87c4225b3fb547726d77cc0102837e48_l3.png\" height=\"39\" width=\"294\" class=\"ql-img-displayed-equation quicklatex-auto-format\" alt=\"&#92;&#98;&#101;&#103;&#105;&#110;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;&#32; &#117;&#110;&#97;&#99;&#99;&#111;&#117;&#110;&#116;&#101;&#100;&#92;&#95;&#102;&#111;&#114;&#32;&#61;&#32;&#45;&#92;&#115;&#117;&#109;&#95;&#123;&#105;&#32;&#92;&#105;&#110;&#32;&#119;&#97;&#105;&#116;&#92;&#95;&#101;&#118;&#101;&#110;&#116;&#115;&#125;&#99;&#112;&#117;&#95;&#105; &#92;&#101;&#110;&#100;&#123;&#101;&#113;&#117;&#97;&#116;&#105;&#111;&#110;&#42;&#125;\" title=\"Rendered by QuickLaTeX.com\"\/><\/p>\n<h1>DTrace<\/h1>\n<p>I put together an experiment to prove the theory expressed with the equation <a href=\"#id2850740715\">7<\/a>.<\/p>\n<p>First, I had to find an instrumented OS kernel function which is consuming CPU. pread qualifies when using ZFS. Therefore, the database needed to be configured for synchronous IO during this experiment (disk_asynch_io = FALSE). <\/p>\n<p>Then I had to figure out the methodology for measuring the CPU time in the code instrumented by wait events, as Oracle database doesn&#8217;t provide that. So, I wrote a DTrace script for this purpose:<\/p>\n<pre><code>#pragma D option quiet \r\n\r\npid$target:oracle:kslwt_start_snapshot:entry\r\n{\r\n  self->start_ts_cpu = vtimestamp ;\r\n}\r\n\r\npid$target:oracle:kslwt_end_snapshot:entry\r\n\/ self->start_ts_cpu \/\r\n{\r\n  @time[\"cpu by wait events\"] = sum( vtimestamp - self->start_ts_cpu ) ;\r\n}\r\n\r\nEND\r\n{\r\n  normalize(@time, 1000000);\r\n  printa(\"%s: %@d ms\\n\",@time);\r\n}<\/code><\/pre>\n<p>The server process calls Oracle functions kslwt_start_snapshot and kslwt_end_snapshot before and after the instrumented code, respectively, to take the current timestamp. The difference of both captured values is the time elapsed in the wait event. Accordingly, the DTrace script measures the CPU time consumed between these two points. By the way, I wrote more on wait event internals in the blog post <a href=\"http:\/\/nenadnoveljic.com\/blog\/wait-events-dtrace\/\">Tracking Wait Events with DTrace<\/a>.<\/p>\n<p>The DTrace script above measured 42.848 s CPU time consumed by the Oracle code instrumented with wait events:<\/p>\n<pre><code>cpu by wait events: <span style=\"color: #0000ff;\">42848 ms<\/span><\/code><\/pre>\n<p>The corresponding tkprof output is below:<\/p>\n<pre><code>\r\ncall     count       cpu    elapsed       disk      query    current        rows\r\n------- ------  -------- ---------- ---------- ---------- ----------  ----------\r\nParse        1      0.00       0.00          0          0          0           0\r\nExecute      1      0.00       0.00          0          0          0           0\r\nFetch        1     <span style=\"color: #ff0000;\">53.39     175.76<\/span>    3408598    3408626          0           1\r\n------- ------  -------- ---------- ---------- ---------- ----------  ----------\r\ntotal        3     53.39     175.76    3408598    3408626          0           1\r\n\r\n\r\nElapsed times include waiting on following events:\r\n  Event waited on                             Times   Max. Wait  Total Waited\r\n  ----------------------------------------   Waited  ----------  ------------\r\n  SQL*Net message to client                       2        0.00          0.00\r\n  Disk file operations I\/O                       59        0.00          0.00\r\n  direct path read                            26669        0.04        <span style=\"color: #ff0000;\">164.69<\/span>\r\n<\/code><\/pre>\n<p>Next, I&#8217;m going to apply the values from the tkprof output above to the equation <a href=\"#id1409295537\">2<\/a>:<\/p>\n<p>unaccounted-for = <span style=\"color: #ff0000;\">175.76 &#8211; 53.39 &#8211; 164.69<\/span> = <span style=\"color: #0000ff;\">-42.32 s<\/span>\t<\/p>\n<p>As you can see, the DTrace script measured unaccounted-for fairly accurately.<\/p>\n<h1>Test Environment<\/h1>\n<ul>\n<li>The testing was done on a 12.2.0.1.180116 database running on Solaris 11.3.<\/li>\n<li>The database was configured for synchronous IO ( disk_asynch_io = FALSE ). (Please don\u2019t take that as a recommendation. I used the it here just to get the desired effect).<\/li>\n<li>The following query was executed:\n<pre><code>select count(*) from big_table where big_table<\/code><\/pre>\n<\/li>\n<\/ul>\n<h1>Summary<\/h1>\n<p>In summary, wait events are being used for instrumenting OS kernel functions which are typically waiting on something, like an IO operation, to complete. However, if the code instrumented with a wait event happens to consume some CPU as well, this time will be counted in both fetch CPU time and wait event elapsed time. Consequently, the sum of the fetch CPU time and the total wait event durations will exceed the fetch elapsed time by the amount of time the instrumented code spent on the CPU. This CPU time, i.e. negative unaccounted-for, is not separately instrumented by the Oracle database, but it can be measured with the DTrace script above. <\/p>\n<h1>References<\/h1>\n<p><a href=\"https:\/\/method-r.com\/2016\/05\/20\/motd2\/\">The Method R Guide to Mastering Oracle Trace Data<\/a>, Cary Millsap<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Analyzing negative unaccounted-for in an Oracle SQL extended trace file profile with DTrace.  <a href=\"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/\" 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":[24,5],"tags":[],"class_list":["post-1858","post","type-post","status-publish","format-standard","hentry","category-dtrace","category-oracle"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Negative Unaccounted-for - All-round Database Topics<\/title>\n<meta name=\"description\" content=\"Analyzing negative unaccounted-for in an Oracle SQL extended trace file profile with DTrace.\" \/>\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\/negative-unaccounted-for\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Negative Unaccounted-for - All-round Database Topics\" \/>\n<meta property=\"og:description\" content=\"Analyzing negative unaccounted-for in an Oracle SQL extended trace file profile with DTrace.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/\" \/>\n<meta property=\"og:site_name\" content=\"All-round Database Topics\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-27T17:18:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-04T15:50:32+00:00\" \/>\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=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/negative-unaccounted-for\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/negative-unaccounted-for\\\/\"},\"author\":{\"name\":\"Nenad Noveljic\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#\\\/schema\\\/person\\\/51458d9dd86dbbdd19f5add451d44efa\"},\"headline\":\"Negative Unaccounted-for\",\"datePublished\":\"2018-05-27T17:18:45+00:00\",\"dateModified\":\"2019-04-04T15:50:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/negative-unaccounted-for\\\/\"},\"wordCount\":1118,\"commentCount\":0,\"articleSection\":[\"DTrace\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/negative-unaccounted-for\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/negative-unaccounted-for\\\/\",\"url\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/negative-unaccounted-for\\\/\",\"name\":\"Negative Unaccounted-for - All-round Database Topics\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#website\"},\"datePublished\":\"2018-05-27T17:18:45+00:00\",\"dateModified\":\"2019-04-04T15:50:32+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/#\\\/schema\\\/person\\\/51458d9dd86dbbdd19f5add451d44efa\"},\"description\":\"Analyzing negative unaccounted-for in an Oracle SQL extended trace file profile with DTrace.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/negative-unaccounted-for\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/negative-unaccounted-for\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/negative-unaccounted-for\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/nenadnoveljic.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Negative Unaccounted-for\"}]},{\"@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":"Negative Unaccounted-for - All-round Database Topics","description":"Analyzing negative unaccounted-for in an Oracle SQL extended trace file profile with DTrace.","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\/negative-unaccounted-for\/","og_locale":"en_US","og_type":"article","og_title":"Negative Unaccounted-for - All-round Database Topics","og_description":"Analyzing negative unaccounted-for in an Oracle SQL extended trace file profile with DTrace.","og_url":"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/","og_site_name":"All-round Database Topics","article_published_time":"2018-05-27T17:18:45+00:00","article_modified_time":"2019-04-04T15:50:32+00:00","author":"Nenad Noveljic","twitter_card":"summary_large_image","twitter_creator":"@NenadNoveljic","twitter_misc":{"Written by":"Nenad Noveljic","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/#article","isPartOf":{"@id":"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/"},"author":{"name":"Nenad Noveljic","@id":"https:\/\/nenadnoveljic.com\/blog\/#\/schema\/person\/51458d9dd86dbbdd19f5add451d44efa"},"headline":"Negative Unaccounted-for","datePublished":"2018-05-27T17:18:45+00:00","dateModified":"2019-04-04T15:50:32+00:00","mainEntityOfPage":{"@id":"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/"},"wordCount":1118,"commentCount":0,"articleSection":["DTrace","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/","url":"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/","name":"Negative Unaccounted-for - All-round Database Topics","isPartOf":{"@id":"https:\/\/nenadnoveljic.com\/blog\/#website"},"datePublished":"2018-05-27T17:18:45+00:00","dateModified":"2019-04-04T15:50:32+00:00","author":{"@id":"https:\/\/nenadnoveljic.com\/blog\/#\/schema\/person\/51458d9dd86dbbdd19f5add451d44efa"},"description":"Analyzing negative unaccounted-for in an Oracle SQL extended trace file profile with DTrace.","breadcrumb":{"@id":"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nenadnoveljic.com\/blog\/negative-unaccounted-for\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nenadnoveljic.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Negative Unaccounted-for"}]},{"@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\/1858","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=1858"}],"version-history":[{"count":1,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/posts\/1858\/revisions"}],"predecessor-version":[{"id":1987,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/posts\/1858\/revisions\/1987"}],"wp:attachment":[{"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/media?parent=1858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/categories?post=1858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nenadnoveljic.com\/blog\/wp-json\/wp\/v2\/tags?post=1858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}