Help
RSS
API
Feed
Maltego
Contact
Domain > blog.go-faster.co.uk
×
Welcome!
Right click nodes and scroll the mouse to navigate the graph.
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2014-11-25
64.233.181.121
(
ClassC
)
2015-02-23
74.125.202.121
(
ClassC
)
2015-06-05
64.233.191.121
(
ClassC
)
2025-01-18
172.217.14.211
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyLocation: https://blog.go-faster.co.uk/Content-Type: text/html; charsetUTF-8Date: Sat, 18 Jan 2025 07:43:00 GMTExpires: Sat, 18 Jan 2025 07:43:00 GMTCache-Control: private, max-age0X-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINContent-Security-Policy: frame-ancestors selfX-XSS-Protection: 1; modeblockServer: GSEAccept-Ranges: noneVary: Accept-EncodingTransfer-Encoding: chunked HTML>HEAD>TITLE>Moved Permanently/TITLE>/HEAD>BODY BGCOLOR#FFFFFF TEXT#000000>!-- GSE Default Error -->H1>Moved Permanently/H1>The document has moved A HREFhttps://blog.go-faster.co.uk/>here/A>./BODY>/HTML>
Port 443
HTTP/1.1 200 OKContent-Type: text/html; charsetUTF-8Expires: Sat, 18 Jan 2025 07:43:00 GMTDate: Sat, 18 Jan 2025 07:43:00 GMTCache-Control: private, max-age0Last-Modified: Sat, 07 Dec 2024 15:16:57 GMTX-Content-Type-Options: nosniffX-XSS-Protection: 1; modeblockServer: GSEAccept-Ranges: noneVary: Accept-EncodingTransfer-Encoding: chunked !DOCTYPE html>html dirltr xmlnshttp://www.w3.org/1999/xhtml xmlns:bhttp://www.google.com/2005/gml/b xmlns:datahttp://www.google.com/2005/gml/data xmlns:exprhttp://www.google.com/2005/gml/expr>head>link hrefhttps://www.blogger.com/static/v1/widgets/55013136-widget_css_bundle.css relstylesheet typetext/css/>meta contenttext/html; charsetUTF-8 http-equivContent-Type/>meta contentblogger namegenerator/>link hrefhttps://blog.go-faster.co.uk/favicon.ico relicon typeimage/x-icon/>link hrefhttps://blog.go-faster.co.uk/ relcanonical/>link relalternate typeapplication/atom+xml titleThe /*+Go-Faster*/ Oracle Blog - Atom hrefhttps://blog.go-faster.co.uk/feeds/posts/default />link relalternate typeapplication/rss+xml titleThe /*+Go-Faster*/ Oracle Blog - RSS hrefhttps://blog.go-faster.co.uk/feeds/posts/default?altrss />link relservice.post typeapplication/atom+xml titleThe /*+Go-Faster*/ Oracle Blog - Atom hrefhttps://www.blogger.com/feeds/14654018/posts/default />!--Cant find substitution for tag blog.ieCssRetrofitLinks-->meta contenthttps://blog.go-faster.co.uk/ propertyog:url/>meta contentThe /*+Go-Faster*/ Oracle Blog propertyog:title/>meta contentThe PeopleSoft stuff is at <a href"http://blog.psftdba.com">blog.psftdba.com</a>.<br>This is the non-PeopleSoft Oracle Database blog. Mostly about performance. propertyog:description/>title>The /*+Go-Faster*/ Oracle Blog/title>style idpage-skin-1 typetext/css>!--/*-----------------------------------------------Blogger Template Style - GO-FASTER blogName: MinimaDesigner: Douglas BowmanURL: www.stopdesign.comDate: 26 Feb 2004Updated by: Blogger Team----------------------------------------------- *//* Variable definitionsVariable namebgcolor descriptionPage Background Colortypecolor default#fff>Variable nametextcolor descriptionText Colortypecolor default#333>Variable namelinkcolor descriptionLink Colortypecolor default#58a>Variable namepagetitlecolor descriptionBlog Title Colortypecolor default#666>Variable namedescriptioncolor descriptionBlog Description Colortypecolor default#999>Variable nametitlecolor descriptionPost Title Colortypecolor default#c60>Variable namebordercolor descriptionBorder Colortypecolor default#ccc>Variable namesidebarcolor descriptionSidebar Title Colortypecolor default#999>Variable namesidebartextcolor descriptionSidebar Text Colortypecolor default#666>Variable namevisitedlinkcolor descriptionVisited Link Colortypecolor default#999>Variable namebodyfont descriptionText Fonttypefont defaultnormal normal 100% Georgia, Serif>Variable nameheaderfont descriptionSidebar Title Fonttypefontdefaultnormal normal 78% Trebuchet MS,Trebuchet,Arial,Verdana,Sans-serif>Variable namepagetitlefont descriptionBlog Title Fonttypefontdefaultnormal normal 200% Georgia, Serif>Variable namedescriptionfont descriptionBlog Description Fonttypefontdefaultnormal normal 78% Trebuchet MS, Trebuchet, Arial, Verdana, Sans-serif>Variable namepostfooterfont descriptionPost Footer Fonttypefontdefaultnormal normal 78% Trebuchet MS, Trebuchet, Arial, Verdana, Sans-serif>Variable namestartSide descriptionSide where text starts in blog languagetypeautomatic defaultleft>Variable nameendSide descriptionSide where text ends in blog languagetypeautomatic defaultright>*//* Use this with templates/template-twocol.html */body {background:#ffffff;margin:0;color:#333333;font:x-small Georgia Serif;font-size/* */:/**/small;font-size: /**/small;text-align: center;}a:link {color:#5588aa;text-decoration:none;}a:visited {color:#999999;text-decoration:none;}a:hover {color:#cc6600;text-decoration:underline;}a img {border-width:0;}/* Header-----------------------------------------------*/#header-wrapper {width:960px;margin:0 auto 10px;border:1px solid #cccccc;}#header-inner {background-position: center;margin-left: auto;margin-right: auto;}#header {margin: 5px;border: 1px solid #cccccc;text-align: center;color:#666666;}#header h1 {margin:5px 5px 0;padding:15px 20px .25em;line-height:1.2em;text-transform:uppercase;letter-spacing:.2em;font: normal normal 200% Georgia, Serif;}#header a {color:#666666;text-decoration:none;}#header a:hover {color:#666666;}#header .description {margin:0 5px 5px;padding:0 20px 15px;max-width:1000px;text-transform:uppercase;letter-spacing:.2em;line-height: 1.4em;font: normal normal 78% Trebuchet MS, Trebuchet, Arial, Verdana, Sans-serif;color: #999999;}#header img {margin-left: auto;margin-right: auto;}/* Outer-Wrapper----------------------------------------------- */#outer-wrapper {width: 960px;margin:0 auto;padding:10px;text-align:left;font: normal normal 100% Georgia, Serif;}#main-wrapper {width: 710px;float: left;word-wrap: break-word; /* fix for long text breaking sidebar float in IE */overflow: hidden; /* fix for long non-text content breaking IE sidebar float */}#sidebar-wrapper {width: 220px;float: right;word-wrap: break-word; /* fix for long text breaking sidebar float in IE */overflow: hidden; /* fix for long non-text content breaking IE sidebar float */}/* Headings----------------------------------------------- */h2 {margin:1.5em 0 .75em;font:normal normal 78% Trebuchet MS,Trebuchet,Arial,Verdana,Sans-serif;line-height: 1.4em;text-transform:uppercase;letter-spacing:.2em;color:#999999;}/* Posts-----------------------------------------------*/h2.date-header {margin:1.5em 0 .5em;}.post {margin:.5em 0 1.5em;border-bottom:1px dotted #cccccc;padding-bottom:1.5em;}.post h3 {margin:.25em 0 0;padding:0 0 4px;font-size:140%;font-weight:normal;line-height:1.4em;color:#cc6600;}.post h3 a, .post h3 a:visited, .post h3 strong {display:block;text-decoration:none;color:#cc6600;font-weight:normal;}.post h3 strong, .post h3 a:hover {color:#333333;}.post-body {margin:0 0 .75em;line-height:1.6em;}.post-body blockquote {line-height:1.3em;}.post-footer {margin: .75em 0;color:#999999;text-transform:uppercase;letter-spacing:.1em;font: normal normal 78% Trebuchet MS, Trebuchet, Arial, Verdana, Sans-serif;line-height: 1.4em;}.comment-link {margin-left:.6em;}.post img, table.tr-caption-container {padding:4px;border:1px solid #cccccc;}.tr-caption-container img {border: none;padding: 0;}.post blockquote {margin:1em 20px;}.post blockquote p {margin:.75em 0;}.post-codescroll (width: 700px;overflow: auto;border: solid 1px black;padding-left: 4px;padding-right: 4px;)/* Comments----------------------------------------------- */#comments h4 {margin:1em 0;font-weight: bold;line-height: 1.4em;text-transform:uppercase;letter-spacing:.2em;color: #999999;}#comments-block {margin:1em 0 1.5em;line-height:1.6em;}#comments-block .comment-author {margin:.5em 0;}#comments-block .comment-body {margin:.25em 0 0;}#comments-block .comment-footer {margin:-.25em 0 2em;line-height: 1.4em;text-transform:uppercase;letter-spacing:.1em;}#comments-block .comment-body p {margin:0 0 .75em;}.deleted-comment {font-style:italic;color:gray;}#blog-pager-newer-link {float: left;}#blog-pager-older-link {float: right;}#blog-pager {text-align: center;}.feed-links {clear: both;line-height: 2.5em;}/* Sidebar Content----------------------------------------------- */.sidebar {color: #666666;line-height: 1.5em;}.sidebar ul {list-style:none;margin:0 0 0;padding:0 0 0;}.sidebar li {margin:0;padding-top:0;padding-right:0;padding-bottom:.25em;padding-left:15px;text-indent:-15px;line-height:1.5em;}.sidebar .widget, .main .widget {border-bottom:1px dotted #cccccc;margin:0 0 1.5em;padding:0 0 1.5em;}.main .Blog {border-bottom-width: 0;}/* Profile----------------------------------------------- */.profile-img {float: left;margin-top: 0;margin-right: 5px;margin-bottom: 5px;margin-left: 0;padding: 4px;border: 1px solid #cccccc;}.profile-data {margin:0;text-transform:uppercase;letter-spacing:.1em;font: normal normal 78% Trebuchet MS, Trebuchet, Arial, Verdana, Sans-serif;color: #999999;font-weight: bold;line-height: 1.6em;}.profile-datablock {margin:.5em 0 .5em;}.profile-textblock {margin: 0.5em 0;line-height: 1.6em;}.profile-link {font: normal normal 78% Trebuchet MS, Trebuchet, Arial, Verdana, Sans-serif;text-transform: uppercase;letter-spacing: .1em;}/* Footer----------------------------------------------- */#footer {width:960px;clear:both;margin:0 auto;padding-top:15px;line-height: 1.6em;text-transform:uppercase;letter-spacing:.1em;text-align: center;}-->/style>!--Syntaxhighligther -->script srcalexgorbatchev.com/pub/sh/current/scripts/shCore.js typetext/javascript>/script>script srcalexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js typetext/javascript>/script>link hrefhttps://www.blogger.com/dyn-css/authorization.css?targetBlogID14654018&zx75e0681c-c0ee-49ad-af18-79c372a9c219 medianone onloadif(media!'all')media'all' relstylesheet/>noscript>link hrefhttps://www.blogger.com/dyn-css/authorization.css?targetBlogID14654018&zx75e0681c-c0ee-49ad-af18-79c372a9c219 relstylesheet/>/noscript>meta namegoogle-adsense-platform-account contentca-host-pub-1556223355139109/>meta namegoogle-adsense-platform-domain contentblogspot.com/>script typetext/javascript languagejavascript> // Supply ads personalization default for EEA readers // See https://www.blogger.com/go/adspersonalization adsbygoogle window.adsbygoogle || ; if (typeof adsbygoogle.requestNonPersonalizedAds undefined) { adsbygoogle.requestNonPersonalizedAds 1; }/script>/head>body>div classnavbar section idnavbar>div classwidget Navbar data-version1 idNavbar1>script typetext/javascript> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener(load, function(){ objectattribute val; }, false); } else { window.attachEvent(onload, function(){ objectattribute val; }); } } /script>div idnavbar-iframe-container>/div>script typetext/javascript srchttps://apis.google.com/js/platform.js>/script>script typetext/javascript> gapi.load(gapi.iframes:gapi.iframes.style.bubble, function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: https://www.blogger.com/navbar/14654018?origin\x3dhttps://blog.go-faster.co.uk, where: document.getElementById(navbar-iframe-container), id: navbar-iframe, messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER, messageHandlers: { blogger-ping: function() {} } }); } }); /script>script typetext/javascript>(function() {var script document.createElement(script);script.type text/javascript;script.src //pagead2.googlesyndication.com/pagead/js/google_top_exp.js;var head document.getElementsByTagName(head)0;if (head) {head.appendChild(script);}})();/script>/div>/div>div idouter-wrapper>div idwrap2>!-- skip links for text browsers -->span idskiplinks styledisplay:none;>a href#main> skip to main /a> | a href#sidebar> skip to sidebar /a>/span>div idheader-wrapper>div classheader section idheader>div classwidget Header data-version1 idHeader1>div idheader-inner>div classtitlewrapper>h1 classtitle>The /*+Go-Faster*/ Oracle Blog/h1>/div>div classdescriptionwrapper>p classdescription>span>The PeopleSoft stuff is at a hrefhttp://blog.psftdba.com>blog.psftdba.com/a>.br>This is the non-PeopleSoft Oracle Database blog. Mostly about performance./span>/p>/div>/div>/div>/div>!--comment banner image-->!--p aligncenter>a hrefhttps://questoraclecommunity.org/events/conferences/database-technology-insync/agenda/#agenda-tabs target_blank-->!--img alignabsmiddle altRMOUG TD2021 border0 hspace3 srchttps://www2.go-faster.co.uk/images/insync2021.png width100%/-->!--/a-->!--/p-->/div>div idcontent-wrapper>div idcrosscol-wrapper styletext-align:center>div classcrosscol no-items section idcrosscol>/div>/div>div idmain-wrapper>div classmain section idmain>div classwidget Blog data-version1 idBlog1>div classblog-posts hfeed>!--Cant find substitution for tag defaultAdStart--> div classdate-outer> h2 classdate-header>span>Friday, November 29, 2024/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta contenthttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9s6vnc7Ui0cuzcjz9CmL4SZT_tlvyCsczBI8SFEH1QGOoOf3zpK0HiNCyJG5eyv6g0Tt7kCC8mUzX3sdXlevxEIqh0ZvYUkikc2HtI22tS6IXPjQPFEDoW7GB7rxtXNSG7LnEoTKggcjpeJipo4EkLDA2d9QC22pDnHoPlL8NCZ_4lM_kpShe6A/w400-h295/1.jpg itempropimage_url/>meta content14654018 itempropblogId/>meta content3080305605657803455 itemproppostId/>a name3080305605657803455>/a>h3 classpost-title entry-title itempropname>a hrefhttps://blog.go-faster.co.uk/2024/11/sqldeveloper-export-to-excel-default.html>SQL Developer Tip: Exporting SQL Results to Excel by Default/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-3080305605657803455 itempropdescription articleBody>div classseparator>div>p>I frequently use SQL queries to extract performance data from Active Session History (ASH). I often then want to graph that data. Excel is a very effective charting tool, it is nearly always available, the charts can be copied into other applications, and it can be useful to keep historical data in spreadsheets. /p>p>SQL Developer is very effective at extracting the results of a SQL query into various formats, including as an Excel workbook file. /p>h3>Tip: Make Excel the Default Export Format/h3>/div>div styletext-align: left;>ul styletext-align: left;>li>From the main menu, go to Tools 🠊 Preferences /li>li>In the preferences window, go to Database 🠊 Utilities 🠊 Export/li>li>Set i>Excel 2003+ (.xlsx)/i> as the default export format, and a directory of your choice as the default location. It is also useful to have a copy of the SQL query in the workbook./li>/ul>div classseparator styleclear: both; text-align: center;>a hrefhttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9s6vnc7Ui0cuzcjz9CmL4SZT_tlvyCsczBI8SFEH1QGOoOf3zpK0HiNCyJG5eyv6g0Tt7kCC8mUzX3sdXlevxEIqh0ZvYUkikc2HtI22tS6IXPjQPFEDoW7GB7rxtXNSG7LnEoTKggcjpeJipo4EkLDA2d9QC22pDnHoPlL8NCZ_4lM_kpShe6A/s778/1.jpg stylemargin-left: 1em; margin-right: 1em;>img border0 data-original-height574 data-original-width778 height295 srchttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9s6vnc7Ui0cuzcjz9CmL4SZT_tlvyCsczBI8SFEH1QGOoOf3zpK0HiNCyJG5eyv6g0Tt7kCC8mUzX3sdXlevxEIqh0ZvYUkikc2HtI22tS6IXPjQPFEDoW7GB7rxtXNSG7LnEoTKggcjpeJipo4EkLDA2d9QC22pDnHoPlL8NCZ_4lM_kpShe6A/w400-h295/1.jpg width400 />/a>/div>ul styletext-align: left;>li>When you have run your query and the first array of results has been fetched (50 rows by default), right-click in the query result grid and select i>Export/i>./li>/ul>div classseparator styleclear: both; text-align: center;>a hrefhttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPy2axiRK9_rFNQBwzCl-wAF2M2iTX5Sis-nzlgh1k5dy2kkgc3L-HD9uILm1D27Bg4RCBCZOFj_YsACEaG27B8pyXI0Q1CbXDSYKCIW7WOxjT0U0kubfL75abaxxcpUPKFY1ov9JOQmBOrpwKW2WUl1eziRb-qwyTsXD8qxCluew3GW3l8gU2lA/s302/2.jpg stylemargin-left: 1em; margin-right: 1em;>img border0 data-original-height251 data-original-width302 height166 srchttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPy2axiRK9_rFNQBwzCl-wAF2M2iTX5Sis-nzlgh1k5dy2kkgc3L-HD9uILm1D27Bg4RCBCZOFj_YsACEaG27B8pyXI0Q1CbXDSYKCIW7WOxjT0U0kubfL75abaxxcpUPKFY1ov9JOQmBOrpwKW2WUl1eziRb-qwyTsXD8qxCluew3GW3l8gU2lA/w200-h166/2.jpg width200 />/a>/div>ul styletext-align: left;>li>Then when the Export Wizard opens, the defaults will be as you set them in the preferences and you just have to click next, or hit return. The file name defaults to i>export…/i>/li>/ul>div classseparator styleclear: both; text-align: center;>a hrefhttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijohas86Yh1L2Dwaqf6DlDuyAeMqVEx1dJnuZAfbVGgjQ7TCwbg435xEoacxiX14C3yO420l6g70kiFNNEFrT1VDJ9mAU9bMwjyzrb168G1KbDk18T5EoQPpE0jgUwObk_whg5yA48km9G15TOfmRbrBZ_VXtTEpCdxSyCUmLwVIOeLgcYxAdvlQ/s704/3.jpg stylemargin-left: 1em; margin-right: 1em;>img border0 data-original-height572 data-original-width704 height325 srchttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijohas86Yh1L2Dwaqf6DlDuyAeMqVEx1dJnuZAfbVGgjQ7TCwbg435xEoacxiX14C3yO420l6g70kiFNNEFrT1VDJ9mAU9bMwjyzrb168G1KbDk18T5EoQPpE0jgUwObk_whg5yA48km9G15TOfmRbrBZ_VXtTEpCdxSyCUmLwVIOeLgcYxAdvlQ/w400-h325/3.jpg width400 />/a>/div>div styletext-align: left;>ul styletext-align: left;>li>I find it helpful to pin i>export.xlsx/i> file in the recent file list in Excel./li>/ul>div classseparator styleclear: both; text-align: center;>a hrefhttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvdTemqzLjMsE_sgLvL_6j_BlQNEusyv9jpROTkjIIvnNCUNWEQcNoG3biTLSxPKAm0372hBPAhJlKH1SQvnNnvwfxkKAtR7CE0VvtE1fMn5G4mySc9z0lsXv11k7CyXukApw_AEmq98ihXIsk-fjm63p7k3DHTMVZxWSm-ZF9mjNowfZXcyPVXw/s1480/4.jpg stylemargin-left: 1em; margin-right: 1em;>img border0 data-original-height455 data-original-width1480 height197 srchttps://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvdTemqzLjMsE_sgLvL_6j_BlQNEusyv9jpROTkjIIvnNCUNWEQcNoG3biTLSxPKAm0372hBPAhJlKH1SQvnNnvwfxkKAtR7CE0VvtE1fMn5G4mySc9z0lsXv11k7CyXukApw_AEmq98ihXIsk-fjm63p7k3DHTMVZxWSm-ZF9mjNowfZXcyPVXw/w640-h197/4.jpg width640 />/a>/div>/div>/div>div>br />/div>/div>div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Posted byspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/08139761793598085235 itempropurl/>a hrefhttps://www.blogger.com/profile/08139761793598085235 relauthor titleauthor profile>span itempropname>David Kurtz/span>/a>/span>/span>span classpost-timestamp>atmeta contenthttps://blog.go-faster.co.uk/2024/11/sqldeveloper-export-to-excel-default.html itempropurl/>a classtimestamp-link hrefhttps://blog.go-faster.co.uk/2024/11/sqldeveloper-export-to-excel-default.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2024-11-29T10:00:00Z>10:00/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttps://www.blogger.com/comment/fullpage/post/14654018/3080305605657803455 onclick>No comments : /a>/span>span classpost-icons>span classitem-action>a hrefhttps://www.blogger.com/email-post/14654018/3080305605657803455 titleEmail Post>img alt classicon-action height13 src//img1.blogblog.com/img/icon18_email.gif width18>/a>/span>span classitem-control blog-admin pid-1656522301>a hrefhttps://www.blogger.com/post-edit.g?blogID14654018&postID3080305605657803455&frompencil titleEdit Post>img alt classicon-action height18 src//img2.blogblog.com/img/icon18_edit_allbkg.gif width18>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID3080305605657803455&targetemail target_blank titleEmail This>span classshare-button-link-text>Email This/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID3080305605657803455&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleBlogThis!>span classshare-button-link-text>BlogThis!/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID3080305605657803455&targettwitter target_blank titleShare to X>span classshare-button-link-text>Share to X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID3080305605657803455&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleShare to Facebook>span classshare-button-link-text>Share to Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID3080305605657803455&targetpinterest target_blank titleShare to Pinterest>span classshare-button-link-text>Share to Pinterest/span>/a>/div>span classpost-backlinks post-comment-link>/span>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Labels:a hrefhttps://blog.go-faster.co.uk/search/label/SQL%20Developer reltag>SQL Developer/a>/span>/div>div classpost-footer-line post-footer-line-3>/div>/div>/div>/div> /div>/div> div classdate-outer> h2 classdate-header>span>Friday, September 13, 2024/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta content14654018 itempropblogId/>meta content2069419610823062934 itemproppostId/>a name2069419610823062934>/a>h3 classpost-title entry-title itempropname>a hrefhttps://blog.go-faster.co.uk/2024/09/purging-standard-and-unified-audit-data.html>Purging Standard and Unified Audit Data/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-2069419610823062934 itempropdescription articleBody>h3 styletext-align: left;>Introduction/h3>p>It is not uncommon for businesses to have policies to retain audit data for several years, but then it ought to follow that that data should be purged at the end of the retention period. A regular purge process should be put in place, otherwise, audit data will accumulate. However, it is all too common for the purge to be deferred, often indefinitely, until it becomes a problem./p>p>I have been working on a system that has built up 12 years of audit data. It was starting to consume significant space in the SYSAUX tablespace, and queries on the standard audit data had become slow. We noticed that Oracle Enterprise Manager was regularly querying this data looking for recent failed logins. This was performing so poorly that it had become a never-ending process./p>p>This company has a stated requirement that audit data be retained for 7 years, but some can be purged after 2 years. However, within the last 7 years, this production database has had different database IDs due to its upgrade history. /p>p>Oracle delivers a PL/SQL package to manage audit purges. However, this utility will only purge the current database ID, and it will only purge all of that data by a date. It cannot selectively purge some data by other criteria. Therefore, a custom purge utility that extends that package was required. This post discusses that extension. /p>p>We introduced/p>p>/p>ul styletext-align: left;>li>Regular weekly purge jobs for all forms of audit, for all DBIDs. They run every weekend when the system is quieter./li> li>This includes a custom purge job to delete some data after 2 years/li>/ul>p>/p>h4 styletext-align: left;>General Recommendations/h4>p>/p>ul styletext-align: left;> li>Standard audit is deprecated from Oracle 19c and will be desupported in a future release. Therefore, Oracle recommends that customers migrate from standard audit to Unified Audit. Oracle provides a a hrefhttps://support.oracle.com/epmos/faces/DocContentDisplay?id2909718.1 target_blank>Traditional to Unified Audit Syntax Converter - Generate Unified Audit Policies from Current Traditional Audit Configuration (Doc ID 2909718.1)/a>. Note, that this will only migrate the audit configuration. The standard audit data that has built up will still need to be purged according to the retention policy until it is all gone./li> li>Should any future database maintenance/upgrade activity cause the database ID to change, a new purge timestamp will be required for the new database ID, and an additional purge job will be required for the new legacy database ID./li>/ul>p>/p>h3 styletext-align: left;>Overview/h3>p>Standard audit and Unified Audit (introduced in 12c) can be configured to monitor certain operations by database users. Audit data is generally written to tables in the SYSAUX tablespace, but unified audit can be written to XML files outside the database./p>p>/p>ul styletext-align: left;>li>Standard audit data is written to SYS.AUD$. It is exposed via DBA_AUDIT_TRAIL. Oracle does not support partitioning this table, and users who have tried have reported errors./li> li>Unified audit data is written to AUDSYS.UNIFIED$AUD. It is exposed via UNIFIED_AUDIT_TRAIL. Unified Audit is enabled by default, so if you think you are only using standard audit, you are probably also writing some Unified Audit. This table is interval range partitioned. The default interval is calendar monthly, but can be altered./li>/ul>p>/p>h3 styletext-align: left;>Purging Audit/h3>h4 styletext-align: left;>Audit Timestamps/h4>p>Oracles delivered audit management package a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_AUDIT_MGMT.html target_blank>DBMS_AUDIT_MGMT/a> can purge various a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_AUDIT_MGMT.html#GUID-1EB3BBB1-4FC3-4BC3-8490-8300C950AC27 target_blank>types of audit/a>. Each audit purge works on an individual database ID, the current database ID by default. An audit purge timestamp is created for each type of audit, and for each DBID to be purged. This is defined as a fixed date and not a retention period. Audit data that is before the date is purged. The audit timestamps must be updated before each purge to maintain the desired retention period./p>p>The first step is to identify the DBIDs. In my case, most of the data is standard audit. I will simply query the number of rows and the range of dates for each DBID in the audit data./p>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: x-small;>code>select dbid, count(*), min(timestamp), max(timestamp)from dba_audit_trailgroup by dbidorder by 3/ DBID COUNT(*) MIN(TIMESTAMP) MAX(TIMESTAMP)---------- ---------- ------------------- -------------------1000000002 33606824 11/09/2012 00:06:42 20/08/2016 00:46:221000000003 241327475 20/08/2016 03:36:36 13/05/2023 04:47:201000000005 23320615 12/05/2023 23:54:18 06/01/2024 00:56:491000000006 134188 06/01/2024 01:05:29 04/03/2024 22:24:532000000008 282780 05/03/2024 03:39:39 02/05/2024 15:05:41/code>/span>/pre>p>However, some unified audit is enabled by default, so both types of audit have to be purged./p>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: x-small;>code>select dbid, count(*), min(event_timestamp), max(event_timestamp)from unified_audit_trailgroup by dbidorder by 3/ DBID COUNT(*) MIN(EVENT_TIMESTAMP MAX(EVENT_TIMESTAMP---------- ---------- ------------------- -------------------1000000004 28323 21/04/2023 10:09:39 21/04/2023 12:00:511000000005 1434181 12/05/2023 22:44:47 06/01/2024 00:56:491000000006 1700032 06/01/2024 01:05:29 04/03/2024 22:02:292000000008 263038 05/03/2024 03:12:27 07/05/2024 16:39:41/code>/span>/pre>p>The following PL/SQL creates an audit timestamp for each database ID, for each type of audit. The list of database IDs obtained above was then hard-coded in the following PL/SQL block. Doing this dynamically can involve a long query on the audit data, so it is easier to hard code them./p>p>If a database ID is not specified to a hrefhttp://DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP>DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP/a>, a control record for the current database ID is created. The audit timestamp is set to 7 years ago because our policy is to purge any audit data older than 7 years. Later, a database scheduler job will be created for each timestamp defined./p>p>At the time of writing, it will be several years until the Unified Audit data is old enough to be purged, but if the purge jobs are not created now, nobody will remember to add them later!/p>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: x-small;>code>declare k_standard_retention_years CONSTANT INTEGER NOT NULL : 7;begin FOR i IN( with d (dbid) as ( select TO_NUMBER(NULL) from dual union select 1000000001 from dual union select 1000000002 from dual union select 1000000003 from dual union select 1000000004 from dual union select 1000000005 from dual union select 1000000006 from dual ) select dbid from d ) LOOP DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP (audit_trail_type > DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD ,last_archive_time > ADD_MONTHS(sysdate,-12*k_standard_retention_years) ,database_id > i.dbid ); END LOOP; FOR i IN( with d (dbid) as ( select TO_NUMBER(NULL) from dual union select 1000000004 from dual --2023 unified only union select 1000000005 from dual --2023-24 --current prod +unified union select 1000000006 from dual --2024 +unified --union select 2000000008 from dual --2024 +unified --current PRT ) select dbid from d ) LOOP DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP (audit_trail_type > DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED ,last_archive_time > ADD_MONTHS(sysdate,-12*k_standard_retention_years) ,database_id > i.dbid ); end loop;end;//code>/span>/pre>p>As old database IDs are completely purged their last archive timestamps can be removed from the audit purge configuration in the database with a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_AUDIT_MGMT.html#GUID-BDA1906B-F290-45CE-83A4-9974D036B6F2 target_blank>DBMS_AUDIT_MGMT.CLEAR_LAST_ARCHIVE_TIMESTAMP/a> and the corresponding database jobs can be dropped./p>p>Should any future database maintenance/migration/upgrade activity cause the database ID to change again, new timestamps must be set up for the new current database ID, and corresponding scheduler purge jobs must be created./p>h3 styletext-align: left;>Custom Audit Purge Management Package/h3>p>A custom package procedure XX_CUSTOM_AUDIT_PURGE has been created. It is a hrefhttps://github.com/davidkurtz/auditpurge/tree/main target_blank>available on GitHub/a>. The package is deliberately created to be owned by the AUDSYS user that is used to run the default audit purge jobs. That account is delivered by Oracle and is locked. It should not be unlocked. Therefore, a SYSDBA privileged account must deploy the package. /p>p>This package contains various procedures/p>p>/p>ul styletext-align: left;>li>INIT_AUDIT_PURGE/li>ul>li>initialises the standard and fine-grained audit purges,/li>li>creates a job resource constraint so the scheduler only runs one purge process at a time, and /li>li>creates a job class to assign the job to a resource plan consumer group so that the purge job runs at low priority./li>/ul>li>UPDATE_AUDIT_PURGE_TS updates the audit purge timestamps to 7 years ago, thus maintaining a rolling 7-year purge./li>li>CUSTOM_PURGE performs a limited purge of some audit data after 2 years. Exactly which audit actions are to be purged is hard-coded in this procedure./li>li>CREATE_AUDIT_PURGE_JOBS uses DBMS_AUDIT_MGMT.CREATE_PURGE_JOB to create the various scheduler jobs to run the Oracle-delivered purge procedure DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL for the various audits to be purged. /li>ul>li>However, this procedure alters the jobs to control their scheduler, concurrency and resource manager consumer group./li>/ul>li>CREATE_CUSTOM_PURGE_JOB creates a scheduler job to execute the CUSTOM_PURGE procedure./li>li>CREATE_UPDATE_AUDIT_PURGE_TS_JOB creates a job on the database scheduler to run UPDATE_AUDIT_PURGE_TS./li>/ul>p>/p>p>Some constants and defaults have been hard-coded in the package including/p>p>/p>ul styletext-align: left;>li>span stylewhite-space: pre;>The /span>2-year and 7-year purge rules. /li>li>Resource consumer group of the purge jobs/li>li>Job Class for purge jobs to which resource consumer group is assigned./li>li>Number of rows to be deleted between commits during custom delete (2-year purge)./li>/ul>p>/p>p>The audit purge requirements are unlikely to change, and if they do a code change is required to implement the change that must be installed by the core DBA. I felt that this approach was easier and more secure than creating and controlling access to metadata./p>p>After an initial large purge to clear the backlog, we find that these jobs only run for a few minutes each. By scheduling them to run regularly, we maintain a relatively steady data volume./p>h3 styletext-align: left;>Reclaiming Space after Initial Large Purge/h3>p>The audit purge is no more than a simple delete. Once deleted (and committed) the space freed up can be used by other rows of audit data, but space is not released from the audit tables back to the SYSAUX tablespace./p>p>The only supported way to recover space from the purged audit tables is to rebuild them by moving them to a different tablespace, and if necessary, moving them back using the a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_AUDIT_MGMT.html#GUID-77C238AB-7B08-4D84-B3B8-4FC5CBDB4A3F target_blank>DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOC/a> procedure again./p>p>Create a tablespace SYSAUX_AUD. It should be created as a BIGFILE tablespace as SYSAUX is also a BIGFILE tablespace. Otherwise, in our case, it would have needed at least 3 data files (so it could expand to 96G)./p>p>The following PL/SQL block creates a database scheduler job for each call to this procedure so that it can run in the background./p>p>/p>ul styletext-align: left;>li>This time the jobs are one-time execution jobs that will be auto-dropped on completion./li>li>The same resource constraint XX_PURGE_RESOURCE, as used by the other purge jobs, ensures that it will not run concurrently with any of those jobs (nor vice versa)./li>li>If the job start date is not set, the job will run as soon as it is enabled and no other job using the same resource is running./li>/ul>p>/p>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: x-small;>code>DECLARE TYPE t_aud_types IS TABLE OF VARCHAR2(8); a_aud_types t_aud_types; l_job_name VARCHAR2(30); l_tablespace_name VARCHAR2(30) : SYSAUX_AUD; e_job_does_not_exist EXCEPTION; PRAGMA EXCEPTION_INIT(e_job_does_not_exist, -27475);BEGIN a_aud_types : t_aud_types(AUD_STD,UNIFIED) /*FGA_STD deliberately excluded*/; FOR i IN a_aud_types.FIRST..a_aud_types.LAST LOOP l_job_name : XX_AUDIT_TRAIL_LOC_||a_aud_types(i); BEGIN dbms_scheduler.drop_job(job_name > l_job_name); EXCEPTION WHEN e_job_does_not_exist THEN NULL; END; dbms_scheduler.create_job (job_name > l_job_name ,job_type > PLSQL_BLOCK ,job_action > BEGIN dbms_audit_mgmt.set_audit_trail_location(audit_trail_type > DBMS_AUDIT_MGMT.AUDIT_TRAIL_||a_aud_types(i)||,audit_trail_location_value > ||l_tablespace_name||); END; ,start_date > SYSTIMESTAMP at time zone (US/Eastern) ,job_class > XX_PURGE_CLASS ,auto_drop > TRUE ,enabled > FALSE); DBMS_SCHEDULER.set_resource_constraint --Only one purge job can run at any one time (object_name > l_job_name ,resource_name > AUDSYS.XX_PURGE_RESOURCE ,units > 1); dbms_scheduler.enable(l_job_name); END LOOP; END;//code>/span>/pre>p>/p>ul styletext-align: left;>li>NB: I specified the time zone for the database job because I am working in a different time zone to the database!/li>/ul>p>/p>p>We have found that due to a bug, the unified audit table is not relocated to the new tablespace. It is expected that this will be fixed in version 23ai. /p>p>/p>ul styletext-align: left;>li>a hrefhttps://support.oracle.com/epmos/faces/DocContentDisplay?id34080691.8 target_blank>Bug 34080691 - cant change aud$unified default table space using set_audit_trail_location on version 12.1.0.2 (Doc ID 34080691.8)/a>/li>li>See also a hrefhttps://support.oracle.com/epmos/faces/DocContentDisplay?id34080691.8 target_blank>Fundamental Security Part Eight – Unified Audit (https://chandlerdba.com/2024/01/15/fundamental-security-part-eight-unified-audit/)/a>/li>/ul>p>/p>h4 styletext-align: left;>Validate/Reinstate Privileges/h4>p>Using SET_AUDIT_TRAIL_LOCATION will strip off any explicitly granted privileges on the audit tables. Ensure privileges on the standard audit tables are intact. Otherwise, the custom purge will fail./p>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: x-small;>code>column grantee format a8column owner format a8column table_name format a20column privilege format a20column grantor format a8select * from dba_tab_privswhere (owner,table_name) IN((SYS,FGA_LOG$),(SYS,AUD$),(AUDSYS,AUD$UNIFIED))//code>/span>/pre>p>Minimum expected output/p>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: x-small;>code>GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE COM TYPE INH-------- -------- -------------------- -------- -------------------- --- --- --- ------------------------ ---AUDSYS SYS AUD$ SYS DELETE NO NO NO TABLE NO AUDSYS SYS AUD$ SYS SELECT NO NO NO TABLE NO/code>/span>/pre>h3 styletext-align: left;>TL;DR/h3>p>If you collect audit data, then you should create a retention policy and schedule purge jobs to delete it after the retention period expires. It is not unreasonable to keep audit data for several years. The database ID may change in that time due to upgrade or migration. Purge processes are also required for each legacy DBID./p>p>After an initial large purge reclaims space by relocating the Standard Audit table, but remember to reinstate any explicitly granted privileges. /p>p>Unified Audit cannot be relocated until a bug is resolved in 23ai. /p>p>The performance of purge and query of standard audit will improve after doing this./p>div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Posted byspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/08139761793598085235 itempropurl/>a hrefhttps://www.blogger.com/profile/08139761793598085235 relauthor titleauthor profile>span itempropname>David Kurtz/span>/a>/span>/span>span classpost-timestamp>atmeta contenthttps://blog.go-faster.co.uk/2024/09/purging-standard-and-unified-audit-data.html itempropurl/>a classtimestamp-link hrefhttps://blog.go-faster.co.uk/2024/09/purging-standard-and-unified-audit-data.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2024-09-13T15:12:00+01:00>15:12/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttps://www.blogger.com/comment/fullpage/post/14654018/2069419610823062934 onclick>No comments : /a>/span>span classpost-icons>span classitem-action>a hrefhttps://www.blogger.com/email-post/14654018/2069419610823062934 titleEmail Post>img alt classicon-action height13 src//img1.blogblog.com/img/icon18_email.gif width18>/a>/span>span classitem-control blog-admin pid-1656522301>a hrefhttps://www.blogger.com/post-edit.g?blogID14654018&postID2069419610823062934&frompencil titleEdit Post>img alt classicon-action height18 src//img2.blogblog.com/img/icon18_edit_allbkg.gif width18>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID2069419610823062934&targetemail target_blank titleEmail This>span classshare-button-link-text>Email This/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID2069419610823062934&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleBlogThis!>span classshare-button-link-text>BlogThis!/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID2069419610823062934&targettwitter target_blank titleShare to X>span classshare-button-link-text>Share to X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID2069419610823062934&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleShare to Facebook>span classshare-button-link-text>Share to Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID2069419610823062934&targetpinterest target_blank titleShare to Pinterest>span classshare-button-link-text>Share to Pinterest/span>/a>/div>span classpost-backlinks post-comment-link>/span>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Labels:a hrefhttps://blog.go-faster.co.uk/search/label/Audit reltag>Audit/a>/span>/div>div classpost-footer-line post-footer-line-3>/div>/div>/div>/div> /div>/div> div classdate-outer> h2 classdate-header>span>Thursday, April 11, 2024/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta content14654018 itempropblogId/>meta content9197839887311084379 itemproppostId/>a name9197839887311084379>/a>h3 classpost-title entry-title itempropname>a hrefhttps://blog.go-faster.co.uk/2024/04/sgapdbcdb.html>Configuring Shared Global Area (SGA) in a Multitenant Database/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-9197839887311084379 itempropdescription articleBody>p>I have been working on a PeopleSoft Financials application that we have converted from a stand-alone database to be the only pluggable database (PDB) in an Oracle 19c container database (CDB). We have been getting ORA-4031 (unable to allocate shared memory) errors in the PeopleSoft application. /p>p>It has taken a while to solve and test, and I have to acknowledge quite a lot of advice from my friends. /p>p>i>If you are wondering why you should be involved with your local Oracle user group, and regularly attend their meetings, this is an example: So you can ask people who have experience of different systems in different situations that you havent encountered yet!/i>/p>h3 styletext-align: left;>Documentation/h3>p>I am going to look at 6 initialisation parameters that control the use of SGA. The Oracle documentation, even in 21c, suggests they can mostly be set at CDB and PDB levels. However, more recent Oracle guidance confirmed by my own experience suggests that is not a good idea./p>p>/p>ul styletext-align: left;>li>a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/SGA_MAX_SIZE.html target_blank>SGA_MAX_SIZE/a> can only be set at CDB level. It sets the size of the shared memory segment that is the SGA. It cannot be changed during the life of the database instance. /li>ul>li>b>Recommendation:/b>/li>ul>li>It can be useful to set it higher than SGA_TARGET if you plan either to increase SGA_TARGET, or add PDBs to the CDB, without restarting the instances./li>/ul>/ul>li>a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/SGA_TARGET.html target_blank>SGA_TARGET/a> i>specifies the total size of all SGA components/i>. Use this parameter to control the memory usage of each PDB. The setting at CDB must be at least the sum of the settings for each PDB./li>ul>li>b>Recommendations:/b>/li>ul>li>Use only this parameter at PDB level to manage the memory consumption of the PDB./li>li>In a CDB with only a single PDB, set SGA_TARGET to the same value at CDB and PDB levels. /li>li>Therefore, where there are multiple PDBs, SGA_TARGET at CDB level should be set to the sum of the settings for each PDB. However, I havent tested this yet./li>li>There is no recommendation to reserve SGA for use by the CDB only, nor in my experience is there any need so to do./li>/ul>/ul>li>a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/SHARED_POOL_SIZE.html target_blank>SHARED_POOL_SIZE/a> sets the minimum amount of shared memory reserved to the shared pool. It can optionally be set in a PDB. /li>ul>li>b>Recommendation: /b>However, do not set SHARED_POOL_SIZE at PDB level. It can be set at CDB level./li>/ul>li>a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/DB_CACHE_SIZE.html target_blank>DB_CACHE_SIZE/a> sets the minimum amount of shared memory reserved to the buffer cache. It can optionally be set in a PDB. /li>ul>li>b>Recommendation: /b>However, do not set DB_CACHE_SIZE at PDB level. It can be set at CDB level./li>/ul>li>a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/SGA_MIN_SIZE.html target_blank>SGA_MIN_SIZE/a> has no effect at CDB level. It can be set at PDB level at up to half of the manageable SGA/li>ul>li>b>Recommendation: /b>However, do not set SGA_MIN_SIZE./li>/ul>li>a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/21/refrn/INMEMORY_SIZE.html target_blank>INMEMORY_SIZE/a>: If you are using in-memory query, this must be set at CDB level in order to reserve memory for the in-memory store. The parameter defaults to 0, in which case in-memory query is not available. The in-memory pool is not managed by Automatic Shared Memory Management (ASMM), but it does count toward the total SGA used in SGA_TARGET./li>ul>li>b>Recommendation: /b>Therefore it must also be set in the PDB where in-memory is being used, otherwise we found (contrary to the documentation) that the parameter defaults to 0, and in-memory query will be disabled in that PDB./li>/ul>/ul>h3 styletext-align: left;>Oracle Notes/h3>p>There are a lot of Oracle support notes on the subject SGA management in a multi-tenant database. The older nodes talk about setting memory parameters in the PDB, and a later note and a bug advises only setting these parameters at CDB level, and not at all in the PDB./p>p>/p>ul styletext-align: left;>li>a hrefhttps://support.oracle.com/epmos/faces/DocContentDisplay?id2170772.1 target_blank>How to Control and Monitor the Memory Usage (Both SGA and PGA) Among the PDBs in Multitenant Database- 12.2 New Feature (Doc ID 2170772.1)/a> – span stylefont-size: x-small;>December 2018, updated July 2023/span>/li>ul>li>This document discusses setting SGA_MIN_SIZE at PDB level./li>li>The diagrams tend to suggest that there is a requirement to reserve some memory for the CDB SGA, but it does not suggest how it might be done. Presumably by making sure the sum of SGA_TARGET for each PDB are less than SGA_TARGET at CDB level. The documentation states that SGA_MIN_SIZE has no effect at CDB level,/li>/ul>/ul>ul styletext-align: left;>li>a hrefhttps://support.oracle.com/epmos/faces/DocContentDisplay?id2706020.1 target_blank>How To Modify memory parameters On a Pluggable Database (PDB) (Doc ID 2706020.1)/a> – span stylefont-size: x-small;>September 2020 - Updated March 2024/span>/li>ul>li>This note discusses setting SHARED_POOL_SIZE, DB_CACHE_SIZE, and MIN_SGA_SIZE /li>/ul>/ul>ul styletext-align: left;>li>a hrefhttps://support.oracle.com/epmos/faces/DocContentDisplay?id2712535.1 target_blank>How to Control the SGA Memory Usage Among the CDB/PDBs in Multitenant Database. (Doc ID 2712535.1)/a> – span stylefont-size: x-small;>September 2020, Updated April 2023/span>/li>ul>li>This note discusses setting SHARED_POOL_SIZE, DB_CACHE_SIZE and SGA_MIN_SIZE at PDB level./li>/ul>/ul>ul styletext-align: left;>li>a hrefhttps://support.oracle.com/epmos/faces/DocContentDisplay?id2590172.1 target_blank>ORA-04031 on Multitenant Database with Excessive Amounts of KGLH0 and / or SQLA Memory and Parameter SHARED_POOL_SIZE or SGA_MIN_SIZE Set at the PDB Level (Doc ID 2590172.1)/a> – span stylefont-size: x-small;>December 2022, Updated April 2023/span>/li>ul>li>This one says “i>b>Remove the PDB-level SHARED_POOL_SIZE and/or SGA_MIN_SIZE initialization parameters. The only SGA memory sizing parameter that Oracle recommends setting at the PDB level is SGA_TARGET./b>/i>”/li>/ul>/ul>ul styletext-align: left;>li>a hrefhttps://support.oracle.com/epmos/faces/DocContentDisplay?id2655314.1 target_blank>About memory configuration parameter on each PDBs (Doc ID 2655314.1)/a> – span stylefont-size: x-small;>November 2023/span>/li>ul>li>“i>b>As a best practice, please do not to set SHARED_POOL_SIZE and DB_CACHE_SIZE on each PDBs and please manage automatically by setting SGA_TARGET./b>/i>”/li>li>i>This best practice is confirmed by development in Bug 30692720/i>/li>li>Bug 30692720 discusses how the parameters are validated. Eg. i>Sum(PDB sga size) > CDB sga size/i>/li>li>Bug 34079542: i>b>Unset sga_min_size parameter in PDB./b>/i>/li>/ul>/ul>p>/p>h3 styletext-align: left;>SGA Management with a Parse Intensive System (PeopleSoft)./h3>p>PeopleSoft systems dynamically generate lots of non-shareable SQL code. This leads to lots of parse and consumes more shared pool. ASMM can respond by shrinking the buffer cache and growing the shared pool. However, this can lead to more physical I/O and degrade performance and it is not beneficial for the database to cache dynamic SQL statements that are not going to be executed again. Other parse-intensive systems can also exhibit this behaviour./p>p>In PeopleSoft, I normally set DB_CACHE_SIZE and SHARED_POOL_SIZE to minimum values to stop ASMM shuffling too far in either direction. With a large SGA, moving memory between these pools can become a performance problem in its own right. /p>p>We removed SHARED_POOL_SIZE, DB_CACHE_SIZE and SGA_MIN_SIZE settings from the PDB. The only SGA parameters set at PDB level are SGA_TARGET and INMEMORY_SIZE. We have found it is safe to reduce the setting of SGA_TARGET at PDB level, but reducing at CDB level without also restarting the instance has caused problems./p>p>SHARED_POOL_SIZE and DB_CACHE_SIZE are set as I usually would for PeopleSoft, but only at CDB level to guarantee a minimum buffer cache size. /p>p>This is straightforward when there is only one PDB in the CDB. I have yet to see what happens when I have another active PDB with a non-PeopleSoft system and a different kind of workload that puts less stress on the shared pool and more on the buffer cache./p>h3 styletext-align: left;>TL;DR/h3>p>/p>ul styletext-align: left;>li>Do not set any SGA parameter in a PDB other than SGA_TARGET and (if necessary) INMEMORY_SIZE./li>li>Do not set DB_CACHE_SIZE, SHARED_POOL_SIZE at PDB level. They can be set at CDB level. /li>li>Do not set SGA_MIN_SIZE at either PDB or CDB level./li>/ul>p>/p>div>br />/div>div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Posted byspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/08139761793598085235 itempropurl/>a hrefhttps://www.blogger.com/profile/08139761793598085235 relauthor titleauthor profile>span itempropname>David Kurtz/span>/a>/span>/span>span classpost-timestamp>atmeta contenthttps://blog.go-faster.co.uk/2024/04/sgapdbcdb.html itempropurl/>a classtimestamp-link hrefhttps://blog.go-faster.co.uk/2024/04/sgapdbcdb.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2024-04-11T15:39:00+01:00>15:39/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttps://www.blogger.com/comment/fullpage/post/14654018/9197839887311084379 onclick>No comments : /a>/span>span classpost-icons>span classitem-action>a hrefhttps://www.blogger.com/email-post/14654018/9197839887311084379 titleEmail Post>img alt classicon-action height13 src//img1.blogblog.com/img/icon18_email.gif width18>/a>/span>span classitem-control blog-admin pid-1656522301>a hrefhttps://www.blogger.com/post-edit.g?blogID14654018&postID9197839887311084379&frompencil titleEdit Post>img alt classicon-action height18 src//img2.blogblog.com/img/icon18_edit_allbkg.gif width18>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID9197839887311084379&targetemail target_blank titleEmail This>span classshare-button-link-text>Email This/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID9197839887311084379&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleBlogThis!>span classshare-button-link-text>BlogThis!/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID9197839887311084379&targettwitter target_blank titleShare to X>span classshare-button-link-text>Share to X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID9197839887311084379&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleShare to Facebook>span classshare-button-link-text>Share to Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID9197839887311084379&targetpinterest target_blank titleShare to Pinterest>span classshare-button-link-text>Share to Pinterest/span>/a>/div>span classpost-backlinks post-comment-link>/span>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Labels:a hrefhttps://blog.go-faster.co.uk/search/label/SGA%3B%20Multi-tenant%3B reltag>SGA; Multi-tenant;/a>/span>/div>div classpost-footer-line post-footer-line-3>/div>/div>/div>/div> /div>/div> div classdate-outer> h2 classdate-header>span>Thursday, February 22, 2024/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta content14654018 itempropblogId/>meta content4860819758789239299 itemproppostId/>a name4860819758789239299>/a>h3 classpost-title entry-title itempropname>a hrefhttps://blog.go-faster.co.uk/2024/02/table-clusers6.html>Table Clusters: 6. Testing the Cluster & Conclusion (TL;DR)/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-4860819758789239299 itempropdescription articleBody>p>i>This post is the last part of a a hrefhttps://blog.go-faster.co.uk/2024/01/table-clusters1.html>series/a> that discusses table clustering in Oracle./i>/p>ol> li>a hrefhttps://blog.go-faster.co.uk/2024/01/table-clusters1.html>Introduction and Ancient History/a>/li> li>a hrefhttps://blog.go-faster.co.uk/2023/12/table-clusters2.html>Cluster & Cluster Key Design Considerations/a>/li> li>a hrefhttps://blog.go-faster.co.uk/2024/02/tablecluster3.html>Populating the Cluster with DBMS_PARALLEL_EXECUTE/a>/li> li>a hrefhttps://blog.go-faster.co.uk/2024/02/table-clusters.html>Checking the Cluster Key/a>/li> li>a hrefhttps://blog.go-faster.co.uk/2024/02/table-custers5.html>Using the Cluster Key Index instead of the Primary/Unique Key Index/a>/li> li>a hrefhttps://blog.go-faster.co.uk/2024/02/table-clusers6.html>Testing the Cluster & Conclusion (TL;DR)/a>/li>/ol>h3 styletext-align: left;>Testing/h3>p styletext-align: left;>We did get improved performance with the clustered tables. More significantly, we encountered less inter-process contention, and so were able to run more concurrent processes, and the overall elapsed time of all the processes was reduced./p>p styletext-align: left;>Looking at just the performance of the bulk delete statements on the result tables, there is a significant reduction in DB time and physical I/O time on the clustered tables. The reduction in physical I/O is not only because the table is smaller, but because there is no need to perform consistent read recovery on the blocks, there are fewer reads from the undo segment and less CPU was consumed creating consistent read copies in the buffer cache./p>table border1 cellpadding0 cellspacing0 styleborder-collapse: collapse; border: none;> tbody>tr>td colspan2 rowspan2 styleborder: 1pt solid windowtext; padding: 0cm 2pt; valignmiddle>Statement/td> td styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: none; border-right: 1pt solid windowtext; border-top: 1pt solid windowtext; border: 1pt solid windowtext; padding: 0cm 2pt;>Heap Table/td> td styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: none; border-right: 1pt solid windowtext; border-top: 1pt solid windowtext; border: 1pt solid windowtext; padding: 0cm 2pt;>Clustered Table/td>/tr> tr>td colspan2 styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>DELETE FROM PS_GP_RSLT_ACUM…/td>/tr> tr>td colspan2 styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: 1pt solid windowtext; border-right: 1pt solid windowtext; border-top: none; border: 1pt solid windowtext; padding: 0cm 2pt;>DB Time (s)/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>2182/p>/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>1662/p>/td>/tr> tr>td rowspan2 styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: 1pt solid windowtext; border-right: 1pt solid windowtext; border-top: none; border: 1pt solid windowtext; padding: 0cm 2pt;>delete statement only/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>db file sequential/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>1451/p>/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>891/p>/td>/tr> tr>td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>CPU/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>941/p>/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>531/p>/td>/tr>/tbody>/table>br />table border1 cellpadding0 cellspacing0 styleborder-collapse: collapse; border: none;> tbody>tr> td colspan2 rowspan2 styleborder: 1pt solid windowtext; padding: 0cm 2pt; valignmiddle>Statement/td> td styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: none; border-right: 1pt solid windowtext; border-top: 1pt solid windowtext; border: 1pt solid windowtext; padding: 0cm 2pt;>Heap Table/td> td styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: none; border-right: 1pt solid windowtext; border-top: 1pt solid windowtext; border: 1pt solid windowtext; padding: 0cm 2pt;>Clustered Table/td> /tr> tr>td colspan2 styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>DELETE FROM PS_GP_RSLT_ABS…/td>/tr> tr>td colspan2 styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: 1pt solid windowtext; border-right: 1pt solid windowtext; border-top: none; border: 1pt solid windowtext; padding: 0cm 2pt;>DB Time (s)/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>781/p>/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>330/p>/td>/tr> tr>td rowspan2 styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: 1pt solid windowtext; border-right: 1pt solid windowtext; border-top: none; border: 1pt solid windowtext; padding: 0cm 2pt;>delete statement only/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>db file sequential/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>340/p>/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>210/p>/td>/tr> tr>td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>CPU/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>300/p>/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>120/p>/td>/tr>/tbody>/table>div>GP_RSLT_PIN is another, albeit smaller, result table. It is a candidate for clustering, however, it was not clustered for this test and therefore did not show any significant improvement. It was subsequently clustered./div>div>table border1 cellpadding0 cellspacing0 styleborder-collapse: collapse; border: none;> tbody>tr>td colspan2 rowspan2 styleborder: 1pt solid windowtext; padding: 0cm 2pt; valignmiddle>p stylemargin-bottom: 0cm;>Statement/p>/td> td styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: none; border-right: 1pt solid windowtext; border-top: 1pt solid windowtext; border: 1pt solid windowtext; padding: 0cm 2pt;>Heap Table/td> td styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: none; border-right: 1pt solid windowtext; border-top: 1pt solid windowtext; border: 1pt solid windowtext; padding: 0cm 2pt;>Heap in Cluster Test/td> /tr> tr>td colspan2 styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>DELETE FROM PS_GP_RSLT_PIN…/td>/tr> tr>td colspan2 styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: 1pt solid windowtext; border-right: 1pt solid windowtext; border-top: none; border: 1pt solid windowtext; padding: 0cm 2pt;>DB Time (s)/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>270/p>/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>250/p>/td> /tr> tr>td rowspan2 styleborder-bottom: 1pt solid windowtext; border-image: initial; border-left: 1pt solid windowtext; border-right: 1pt solid windowtext; border-top: none; border: 1pt solid windowtext; padding: 0cm 2pt;>delete statement only/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>db file sequential/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>110/p>/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>120/p>/td>/tr> tr>td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>CPU/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;>p styletext-align: right;>110/p>/td> td styleborder-bottom: 1pt solid windowtext; border-left: none; border-right: 1pt solid windowtext; border-top: none; padding: 0cm 2pt;> p styletext-align: right;>90/p>/td> /tr>/tbody>/table>div>div styletext-align: left;>The execution plans for some queries on clustered tables changed to use the cluster key index which resulted in poorer performance. I had to introduce some SQL profiles to reinstate the original execution plans. /div>div styletext-align: left;>However, the execution plans for these delete statements also switched to the cluster key index resulting in improved performance. So it depends./div>h3 styletext-align: left;>Conclusion (TL;DR)/h3>div>Table partitioning can help you find data efficiently by allowing the database to eliminate partitions that cannot contain the data. However, you must be running Enterprise Edition and license the partitioning option./div>div>Table clustering is effective when you are regularly querying data from multiple tables with similar keys, and you can store them in the same data blocks, thus saving the overhead of retrieving multiple blocks. It is available on any Oracle database and does not require any additional licence./div>div>Both partitioning and clustering can help avoid the overhead of read consistency by storing dissimilar data in different blocks./div>/div>/div>div>Sometimes, using the cluster key index can result in worse performance than using the original indexes. A SQL profile or SQL baseline may be needed to stabilise some execution plans./div>div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Posted byspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/08139761793598085235 itempropurl/>a hrefhttps://www.blogger.com/profile/08139761793598085235 relauthor titleauthor profile>span itempropname>David Kurtz/span>/a>/span>/span>span classpost-timestamp>atmeta contenthttps://blog.go-faster.co.uk/2024/02/table-clusers6.html itempropurl/>a classtimestamp-link hrefhttps://blog.go-faster.co.uk/2024/02/table-clusers6.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2024-02-22T09:44:00Z>09:44/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttps://www.blogger.com/comment/fullpage/post/14654018/4860819758789239299 onclick>No comments : /a>/span>span classpost-icons>span classitem-action>a hrefhttps://www.blogger.com/email-post/14654018/4860819758789239299 titleEmail Post>img alt classicon-action height13 src//img1.blogblog.com/img/icon18_email.gif width18>/a>/span>span classitem-control blog-admin pid-1656522301>a hrefhttps://www.blogger.com/post-edit.g?blogID14654018&postID4860819758789239299&frompencil titleEdit Post>img alt classicon-action height18 src//img2.blogblog.com/img/icon18_edit_allbkg.gif width18>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID4860819758789239299&targetemail target_blank titleEmail This>span classshare-button-link-text>Email This/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID4860819758789239299&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleBlogThis!>span classshare-button-link-text>BlogThis!/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID4860819758789239299&targettwitter target_blank titleShare to X>span classshare-button-link-text>Share to X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID4860819758789239299&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleShare to Facebook>span classshare-button-link-text>Share to Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID4860819758789239299&targetpinterest target_blank titleShare to Pinterest>span classshare-button-link-text>Share to Pinterest/span>/a>/div>span classpost-backlinks post-comment-link>/span>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Labels:a hrefhttps://blog.go-faster.co.uk/search/label/table%20cluster reltag>table cluster/a>/span>/div>div classpost-footer-line post-footer-line-3>/div>/div>/div>/div> /div>/div> div classdate-outer> h2 classdate-header>span>Monday, February 19, 2024/span>/h2> div classdate-posts> div classpost-outer>div classpost hentry itempropblogPost itemscopeitemscope itemtypehttp://schema.org/BlogPosting>meta content14654018 itempropblogId/>meta content8187043784853266790 itemproppostId/>a name8187043784853266790>/a>h3 classpost-title entry-title itempropname>a hrefhttps://blog.go-faster.co.uk/2024/02/table-custers5.html>Table Clusters: 5. Using the Cluster Key Index instead of the Primary/Unique Key Index/a>/h3>div classpost-header>div classpost-header-line-1>/div>/div>div classpost-body entry-content idpost-body-8187043784853266790 itempropdescription articleBody>p>i>This post is part of a a hrefhttps://blog.go-faster.co.uk/2024/01/table-clusters1.html>series/a> that discusses table clustering in Oracle./i>/p>ol> li>a hrefhttps://blog.go-faster.co.uk/2024/01/table-clusters1.html>Introduction and Ancient History/a>/li> li>a hrefhttps://blog.go-faster.co.uk/2023/12/table-clusters2.html>Cluster & Cluster Key Design Considerations/a>/li> li>a hrefhttps://blog.go-faster.co.uk/2024/02/tablecluster3.html>Populating the Cluster with DBMS_PARALLEL_EXECUTE/a>/li> li>a hrefhttps://blog.go-faster.co.uk/2024/02/table-clusters.html>Checking the Cluster Key/a>/li> li>a hrefhttps://blog.go-faster.co.uk/2024/02/table-custers5.html>Using the Cluster Key Index instead of the Primary/Unique Key Index/a>/li> li>a hrefhttps://blog.go-faster.co.uk/2024/02/table-clusers6.html>Testing the Cluster & Conclusion (TL;DR)/a>/li>/ol>p styletext-align: left;>In my test case, the cluster key index is made up of the first 7 columns of the unique key index. One side-effect of this similarity of the keys is that the optimizer may choose to use the cluster key index where previously it used the unique index. /p>p styletext-align: left;>The cluster key index is a unique index. It contains only one entry for each distinct cluster key value that points to the first block that contains rows with those cluster key values. As we saw in the previous post, there are many rows in the table for each distinct cluster key. Therefore, the cluster key index is much smaller than the unique index on any table in the cluster. This contributes to making it appear cheaper to access./p>div styletext-align: left;>The clustering factor is fundamental to determining the cost of using an index. It is a measure of how many I/Os the database would perform if it were to read every row in that table via the index in index order. Notwithstanding that blocks may be cached, every time the scan changes to a different data block in the table, that is another I/O. /div>div styletext-align: left;>br />/div>div styletext-align: left;>In my case, the clustering factor of the cluster key index is also the same value as the number of rows and the number of distinct keys. This is because I have set the cluster size equal to the block size so that each cluster key value points to a different block, and each block only contains rows for a single cluster key value. The clustering factor of the cluster key index is much lower than that of the unique indexes, also making it look cheaper to access./div>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: xx-small;>code>TABLE_NAME INDEX_NAME UNIQUENES PREFIX_LENGTH LEAF_BLOCKS DISTINCT_KEYS NUM_ROWS CLUSTERING_FACTOR-------------------- ------------------------ --------- ------------- ----------- ------------- ---------- -----------------PS_GP_RSLT_CLUSTER PS_GP_RSLT_CLUSTER_IDX UNIQUE 111541 8875383 8875383 8875383PS_GP_RSLT_ABS PS_GP_RSLT_ABS UNIQUE 8 1271559 152019130 152019130 10806251PS_GP_RSLT_ACUM PS_GP_RSLT_ACUM UNIQUE 8 8421658 762210387 762210387 101166426PS_GP_RSLT_PIN PS_GP_RSLT_PIN UNIQUE 9 3894799 327189471 327189471 31774871/code>/span>/pre>p styletext-align: left;>I still need to create the unique index on the tables to enforce uniqueness. I have found that the optimizer tends to choose the cluster key index in preference to the unique index. The cost of accessing cluster key index is lower because it is smaller, and has a lower clustering factor. When I increased the length of the cluster key from 3 to 7 columns I also found that the size and clustering factor of the cluster key index increased, and the clustering factor for the unique indexes decreased, partly because the rows are less disordered with respect to the index key, and partly because the size of the table decreased because each cluster key is only stored one. Although this reduced the cost of accessing the unique indexes, I still find the optimizer tends to choose the cluster key index over the unique index./p>div>div styletext-align: left;>Sometimes, the switch to the cluster key index is beneficial, but sometimes performance degrades as in the case of this query./div>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: x-small;>code>SELECT … FROM PS_GP_RSLT_ACUM RA ,PS_GP_ACCUMULATOR A ,PS_GP_PYE_HIST_WRK H WHERE H.EMPLID BETWEEN :1 AND :2 AND H.CAL_RUN_ID:3 AND H.RUN_CNTL_ID:4 AND H.OPRID:5 b>AND H.EMPLIDRA.EMPLID AND H.EMPL_RCDRA.EMPL_RCD AND H.GP_PAYGROUPRA.GP_PAYGROUP AND H.CAL_IDRA.CAL_ID AND H.ORIG_CAL_RUN_IDRA.ORIG_CAL_RUN_ID AND H.HIST_CAL_RUN_IDRA.CAL_RUN_ID AND H.RSLT_SEG_NUMRA.RSLT_SEG_NUM/b> AND RA.PIN_NUMA.PIN_NUM AND RA.ACM_PRD_OPTN<>1 AND(H.CALC_TYPEA.CALC_TYPE OR H.HIST_TYPE G) ORDER BY RA.EMPLID,H.PRC_ORD_TS,RA.EMPL_RCD,RA.PIN_NUM/code>/span>/pre>PS_GP_PYE_HIST_WRK is equi-joined to PS_GP_RSLT_ACUM by all 7 cluster key columns, so the cluster key index can satisfy this join. The plan has switched to using the cluster key index./div>div>br />pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: x-small;>code>Plan hash value: 4007126853 -------------------------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |-------------------------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | | | 2369 (100)| || 1 | SORT ORDER BY | | 133 | 36841 | 2369 (1)| 00:00:01 ||* 2 | FILTER | | | | | ||* 3 | HASH JOIN | | 133 | 36841 | 2368 (1)| 00:00:01 || 4 | NESTED LOOPS | | 393 | 103K| 2348 (1)| 00:00:01 || 5 | TABLE ACCESS BY INDEX ROWID BATCHED| PS_GP_PYE_HIST_WRK | 1164 | 156K| 12 (0)| 00:00:01 ||* 6 | INDEX RANGE SCAN | PS_GP_PYE_HIST_WRK | 1 | | 11 (0)| 00:00:01 ||* 7 | TABLE ACCESS CLUSTER | PS_GP_RSLT_ACUM | 1 | 132 | 3 (0)| 00:00:01 ||* 8 | INDEX UNIQUE SCAN | b>PS_GP_RSLT_CLUSTER_IDX/b> | 1 | | 1 (0)| 00:00:01 || 9 | INDEX FAST FULL SCAN | PSBGP_ACCUMULATOR | 9208 | 64456 | 20 (0)| 00:00:01 |-------------------------------------------------------------------------------------------------------------------/code>/span>/pre>The profile of the ASH data by plan line ID shows that most of the time is spent on physical I/O on line 7 of the plan, physically scanning the blocks in the cluster for each cluster keypre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: x-small;>code> SQL Plan SQL Plan H P E ASH Hash Value Line ID EVENT P x Secs----------- ---------------- --------------------------------------------- --- - --- -------- 4007126853 7 db file sequential read N N Y 120 4007126853 db file sequential read N N Y 80/code>/span>/pre>/div>I can force the plan back to using the unique index on PS_GP_RSLT_ACUM with a hint, SQL Profile, SQL Patch, or SQL Plan Baseline, and there is a reduction in database response time.div>NB: You cannot make a cluster key index invisible.br />pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: x-small;>code>Plan hash value: 1843812660 ------------------------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |------------------------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | | | 845 (100)| || 1 | SORT ORDER BY | | 1 | 277 | 845 (1)| 00:00:01 || * 2 | FILTER | | | | | || * 3 | HASH JOIN | | 1 | 277 | 844 (1)| 00:00:01 ||- 4 | NESTED LOOPS | | 1 | 277 | 844 (1)| 00:00:01 ||- 5 | STATISTICS COLLECTOR | | | | | || 6 | NESTED LOOPS | | 1 | 270 | 843 (1)| 00:00:01 || 7 | TABLE ACCESS BY INDEX ROWID | PS_GP_PYE_HIST_WRK | 416 | 57408 | 6 (0)| 00:00:01 || * 8 | INDEX RANGE SCAN | PS_GP_PYE_HIST_WRK | 1 | | 5 (0)| 00:00:01 || * 9 | TABLE ACCESS BY INDEX ROWID BATCHED| b>PS_GP_RSLT_ACUM/b> | 1 | 132 | 5 (0)| 00:00:01 || * 10 | INDEX RANGE SCAN | b>PS_GP_RSLT_ACUM/b> | 1 | | 4 (0)| 00:00:01 ||- * 11 | INDEX RANGE SCAN | PSBGP_ACCUMULATOR | 1 | 7 | 1 (0)| 00:00:01 || 12 | INDEX FAST FULL SCAN | PSBGP_ACCUMULATOR | 1 | 7 | 1 (0)| 00:00:01 |------------------------------------------------------------------------------------------------------------------ SQL Plan SQL Plan H P E ASH Hash Value Line ID EVENT P x Secs----------- ---------------- --------------------------------------------- --- - --- -------- 1843812660 10 db file sequential read N N Y 70 1843812660 9 db file sequential read N N Y 60 1843812660 CPU+CPU Wait N N Y 50/code>/span>/pre>h4 styletext-align: left;>Table Cached Blocks /h4>p styletext-align: left;>The i>table_cached_blocks/i> statistics preference specifies the average number of blocks assumed to be cached in the buffer cache when calculating the index clustering factor. When DBMS_STATS calculates the clustering factor of an index it does not count visits to table blocks assumed to be cached because they were in the last i>n/i> distinct table blocks visit, where i>n/i> is the value to which i>table_cached_blocks /i>is set./p>p styletext-align: left;>We have already seen that with 7 cluster key columns, no more than 7 blocks are required to hold any one cluster key. If I set table cached blocks to at least 7, then when Oracle scans the table blocks in unique key order (which matches the cluster key order for the first 7 columns) it does not count additional visits to blocks for the same cluster key.Thus we see a reduction in the clustering factor on the unique index. There is no advantage to a higher value of this setting.We do not see a significant reduction in the clustering factor on other indexes with different leading columns. /p>div styletext-align: left;>b>TCB1/b>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: xx-small;>code>TABLE_NAME INDEX_NAME PREFIX_LENGTH LEAF_BLOCKS NUM_ROWS CLUSTERING_FACTOR DEGREE LAST_ANALYZED -------------------- ------------------------ ------------- ----------- ---------- ----------------- ---------- -----------------PS_GP_RSLT_ABS PS_GP_RSLT_ABS 8 1271559 152019130 b>10806251/b> 1 12-01-24 15:33:02PS_GP_RSLT_ACUM PS_GP_RSLT_ACUM 8 8421658 762210387 b>101166426 /b>1 12-01-24 15:37:55PS_GP_RSLT_PIN PS_GP_RSLT_PIN 9 3894799 327189471 b>31774872 /b>1 12-01-24 15:39:00/code>/span>/pre>b>TCB8 /b>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: xx-small;>code> TABLE_NAME INDEX_NAME PREFIX_LENGTH LEAF_BLOCKS NUM_ROWS CLUSTERING_FACTOR DEGREE LAST_ANALYZED -------------------- ------------------------ ------------- ----------- ---------- ----------------- ---------- -----------------PS_GP_RSLT_ABS PS_GP_RSLT_ABS 8 1271559 152019130 b>8217000 /b>1 12-01-24 15:05:42PS_GP_RSLT_ACUM PS_GP_RSLT_ACUM 8 8421658 762210387 b>16658798 /b>1 12-01-24 15:10:40PS_GP_RSLT_PIN PS_GP_RSLT_PIN 9 3894799 327189471 b>11321888 /b>1 12-01-24 15:01:37/code>/span>/pre>p styletext-align: left;>b>TCB16/b>/p>pre stylebackground-color: #eeeeee; font-family: "courier new"overflow: auto; line-height: 95%; text-align: left; width: 95%;>span stylefont-size: xx-small;>code>TABLE_NAME INDEX_NAME PREFIX_LENGTH LEAF_BLOCKS NUM_ROWS CLUSTERING_FACTOR DEGREE LAST_ANALYZED -------------------- ------------------------ ------------- ----------- ---------- ----------------- ---------- -----------------PS_GP_RSLT_ABS PS_GP_RSLT_ABS 8 1271559 152019130 8217000 1 12-01-24 15:44:25PS_GP_RSLT_ACUM PS_GP_RSLT_ACUM 8 8421658 762210387 16658710 1 12-01-24 15:49:29PS_GP_RSLT_PIN PS_GP_RSLT_PIN 9 3894799 327189471 11321888 1 12-01-24 15:50:36/code>/span>/pre>p styletext-align: left;>The reduction in the clustering factor can mitigate the optimizers tendency to use the cluster key index, but it may still occur./p>p styletext-align: left;>NB: i>table_cached_blocks/i> a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_STATS.html#d996745e20759 target_blank>applies only when gathering statistics with DBMS_STATS/a>, and not to CREATE INDEX or REBUILD INDEX operations that use the default value of 1. This is not a bug, it is in the a hrefhttps://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_STATS.html#d996745e20759 target_blank>DBMS_STATS documentation/a>. /p>/div>div styletext-align: left;>See also/div>div styletext-align: left;>ul styletext-align: left;>li>a hrefhttps://richardfoote.wordpress.com/category/table_cached_blocks/ target_blank>Richard Footes Blog: Table Cached Blocks/a>. In particular:/li>ul>li>a hrefhttps://richardfoote.wordpress.com/2013/05/08/important-clustering-factor-calculation-improvement-fix-you/ target_blank>Important!! Clustering Factor Calculation Improvement/a>/li>/ul>ul>li>a hrefhttps://richardfoote.wordpress.com/2018/07/17/rebuilding-indexes-danger-with-clustering-factor-calculation-chilly-down/ target_blank>Rebuilding Indexes: Danger With Clustering Factor Calculation/a>/li>/ul>li>a hrefhttps://jonathanlewis.wordpress.com/2018/07/02/clustering_factor-5/ target_blank>Jonathan Lewis Oracle Scratchpad: Clustering_Factor/a>/li>/ul>/div>h4 styletext-align: left;>TL;DR/h4>div>The statistics on the cluster key index may lead the optimizer to determine the cost of using it is lower than the unique index. The switch from the unique/primary key index to the cluster key index may result in poorer performance. Setting Table Cached Blocks on the tables in the cluster may help. However, you may still need to use SQL Profiles/SQL Plan Baselines/SQL Patches to force the optimizer to continue to use the unique indexes./div>/div>div styleclear: both;>/div>/div>div classpost-footer>div classpost-footer-line post-footer-line-1>span classpost-author vcard>Posted byspan classfn itempropauthor itemscopeitemscope itemtypehttp://schema.org/Person>meta contenthttps://www.blogger.com/profile/08139761793598085235 itempropurl/>a hrefhttps://www.blogger.com/profile/08139761793598085235 relauthor titleauthor profile>span itempropname>David Kurtz/span>/a>/span>/span>span classpost-timestamp>atmeta contenthttps://blog.go-faster.co.uk/2024/02/table-custers5.html itempropurl/>a classtimestamp-link hrefhttps://blog.go-faster.co.uk/2024/02/table-custers5.html relbookmark titlepermanent link>abbr classpublished itempropdatePublished title2024-02-19T15:22:00Z>15:22/abbr>/a>/span>span classpost-comment-link>a classcomment-link hrefhttps://www.blogger.com/comment/fullpage/post/14654018/8187043784853266790 onclick>No comments : /a>/span>span classpost-icons>span classitem-action>a hrefhttps://www.blogger.com/email-post/14654018/8187043784853266790 titleEmail Post>img alt classicon-action height13 src//img1.blogblog.com/img/icon18_email.gif width18>/a>/span>span classitem-control blog-admin pid-1656522301>a hrefhttps://www.blogger.com/post-edit.g?blogID14654018&postID8187043784853266790&frompencil titleEdit Post>img alt classicon-action height18 src//img2.blogblog.com/img/icon18_edit_allbkg.gif width18>/a>/span>/span>div classpost-share-buttons goog-inline-block>a classgoog-inline-block share-button sb-email hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID8187043784853266790&targetemail target_blank titleEmail This>span classshare-button-link-text>Email This/span>/a>a classgoog-inline-block share-button sb-blog hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID8187043784853266790&targetblog onclickwindow.open(this.href, _blank, height270,width475); return false; target_blank titleBlogThis!>span classshare-button-link-text>BlogThis!/span>/a>a classgoog-inline-block share-button sb-twitter hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID8187043784853266790&targettwitter target_blank titleShare to X>span classshare-button-link-text>Share to X/span>/a>a classgoog-inline-block share-button sb-facebook hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID8187043784853266790&targetfacebook onclickwindow.open(this.href, _blank, height430,width640); return false; target_blank titleShare to Facebook>span classshare-button-link-text>Share to Facebook/span>/a>a classgoog-inline-block share-button sb-pinterest hrefhttps://www.blogger.com/share-post.g?blogID14654018&postID8187043784853266790&targetpinterest target_blank titleShare to Pinterest>span classshare-button-link-text>Share to Pinterest/span>/a>/div>span classpost-backlinks post-comment-link>/span>/div>div classpost-footer-line post-footer-line-2>span classpost-labels>Labels:a hrefhttps://blog.go-faster.co.uk/search/label/table%20cluster reltag>table cluster/a>/span>/div>div classpost-footer-line post-footer-line-3>/div>/div>/div>/div> /div>/div> !--Cant find substitution for tag adEnd-->/div>div classblog-pager idblog-pager>span idblog-pager-older-link>a classblog-pager-older-link hrefhttps://blog.go-faster.co.uk/search?updated-max2024-02-19T15:22:00Z&max-results5 idBlog1_blog-pager-older-link titleOlder Posts>Older Posts/a>/span>a classhome-link hrefhttps://blog.go-faster.co.uk/>Home/a>/div>div classclear>/div>div classblog-feeds>div classfeed-links>Subscribe to:a classfeed-link hrefhttps://blog.go-faster.co.uk/feeds/posts/default target_blank typeapplication/atom+xml>Posts ( Atom ) /a>/div>/div>/div>/div>/div>div idsidebar-wrapper>div classsidebar section idsidebar>div classwidget PageList data-version1 idPageList1>h2>Announcements/h2>div classwidget-content>ul>li>a hrefhttps://blog.go-faster.co.uk/>Home/a>/li>li>a hrefhttp://www.go-faster.co.uk>Go-Faster website/a>/li>li>a hrefhttp://blog.psftdba.com>The PeopleSoft DBA Blog/a>/li>li>a hrefhttps://blog.go-faster.co.uk/p/david-kurtz.html>David Kurtz/a>/li>li>a hrefhttps://www.youtube.com/@davidkurtz>Video Channel/a>/li>/ul>div classclear>/div>/div>/div>div classwidget Text data-version1 idText1>h2 classtitle>My Book/h2>div classwidget-content>a hrefhttps://www.go-faster.co.uk/p/peoplesoft-for-oracle-dba.html target_blank>img altPeopleSoft for the Oracle DBA height106 srchttps://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_uxc5Z7fhLBH1LqysjfPr0TOOGZk8KxtSeztqyBV2rTyX_KiGNYJC4Wk9do1By7CG0qRB4aNjwI7k9fuUguWwoMS7DqpyMT5bZEEns0RywC74kMs0-d width80 />/a>br />/div>div classclear>/div>/div>div classwidget Image data-version1 idImage3>h2>Oracle ACE Director/h2>div classwidget-content>a hrefhttps://apexapps.oracle.com/pls/apex/r/ace_program/oracle-aces/ace?ace_id442&clear2>img altOracle ACE Director height85 idImage3_img srchttps://www2.go-faster.co.uk/images/S+T1_ACEDirector_rgb.png width212/>/a>br/>/div>div classclear>/div>/div>div classwidget HTML data-version1 idHTML2>h2 classtitle>BlueSky / Twitter/h2>div classwidget-content>Follow a hrefhttps://bsky.app/profile/go-faster.co.uk>img srchttps://bsky.app/static/favicon-16x16.png altBlueSky />@go-faster.co.uk on BlueSky/a>p>a hrefhttps://twitter.com/davidmkurtz?ref_srctwsrc%5Etfw classtwitter-follow-button data-show-countfalse>Follow @davidmkurtz/a>script asyncasync srchttps://platform.twitter.com/widgets.js charsetutf-8 >/script>/p>/div>div classclear>/div>/div>div classwidget BlogArchive data-version1 idBlogArchive1>h2>Blog Archive/h2>div classwidget-content>div idArchiveList>div idBlogArchive1_ArchiveList>ul classhierarchy>li classarchivedate expanded>a classtoggle hrefjavascript:void(0)>span classzippy toggle-open> ▼ /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2024/>2024/a>span classpost-count dirltr> ( 12 ) /span>ul classhierarchy>li classarchivedate expanded>a classtoggle hrefjavascript:void(0)>span classzippy toggle-open> ▼ /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2024/11/>November/a>span classpost-count dirltr> ( 1 ) /span>ul classposts>li>a hrefhttps://blog.go-faster.co.uk/2024/11/sqldeveloper-export-to-excel-default.html>SQL Developer Tip: Exporting SQL Results to Excel .../a>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2024/09/>September/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2024/04/>April/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2024/02/>February/a>span classpost-count dirltr> ( 6 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2024/01/>January/a>span classpost-count dirltr> ( 3 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2023/>2023/a>span classpost-count dirltr> ( 9 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2023/12/>December/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2023/11/>November/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2023/06/>June/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2023/04/>April/a>span classpost-count dirltr> ( 3 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2023/03/>March/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2022/>2022/a>span classpost-count dirltr> ( 3 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2022/10/>October/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2022/09/>September/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2021/>2021/a>span classpost-count dirltr> ( 10 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2021/08/>August/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2021/07/>July/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2021/04/>April/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2021/03/>March/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2021/02/>February/a>span classpost-count dirltr> ( 4 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2020/>2020/a>span classpost-count dirltr> ( 22 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2020/11/>November/a>span classpost-count dirltr> ( 11 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2020/06/>June/a>span classpost-count dirltr> ( 3 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2020/05/>May/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2020/01/>January/a>span classpost-count dirltr> ( 6 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2019/>2019/a>span classpost-count dirltr> ( 9 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2019/12/>December/a>span classpost-count dirltr> ( 3 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2019/11/>November/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2019/10/>October/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2019/09/>September/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2019/06/>June/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2019/02/>February/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2018/>2018/a>span classpost-count dirltr> ( 11 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2018/11/>November/a>span classpost-count dirltr> ( 7 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2018/08/>August/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2018/04/>April/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2018/03/>March/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2017/>2017/a>span classpost-count dirltr> ( 5 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2017/12/>December/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2017/01/>January/a>span classpost-count dirltr> ( 3 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2016/>2016/a>span classpost-count dirltr> ( 6 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2016/11/>November/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2016/10/>October/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2016/09/>September/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2016/07/>July/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2016/06/>June/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2015/>2015/a>span classpost-count dirltr> ( 2 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2015/11/>November/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2015/08/>August/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2012/>2012/a>span classpost-count dirltr> ( 3 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2012/12/>December/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2012/07/>July/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2012/03/>March/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2009/>2009/a>span classpost-count dirltr> ( 3 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2009/10/>October/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2009/01/>January/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2008/>2008/a>span classpost-count dirltr> ( 2 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2008/12/>December/a>span classpost-count dirltr> ( 2 ) /span>/li>/ul>/li>/ul>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2007/>2007/a>span classpost-count dirltr> ( 1 ) /span>ul classhierarchy>li classarchivedate collapsed>a classtoggle hrefjavascript:void(0)>span classzippy> ► /span>/a>a classpost-count-link hrefhttps://blog.go-faster.co.uk/2007/10/>October/a>span classpost-count dirltr> ( 1 ) /span>/li>/ul>/li>/ul>/div>/div>div classclear>/div>/div>/div>div classwidget Subscribe data-version1 idSubscribe1>div stylewhite-space:nowrap>h2 classtitle>Subscribe/h2>div classwidget-content>div classsubscribe-wrapper subscribe-type-POST>div classsubscribe expanded subscribe-type-POST idSW_READER_LIST_Subscribe1POST styledisplay:none;>div classtop>span classinner onclickreturn(_SW_toggleReaderList(event, Subscribe1POST));>img classsubscribe-dropdown-arrow srchttps://resources.blogblog.com/img/widgets/arrow_dropdown.gif/>img alignabsmiddle alt border0 classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/>Posts/span>div classfeed-reader-links>a classfeed-reader-link hrefhttp://www.netvibes.com/subscribe.php?urlhttps%3A%2F%2Fblog.go-faster.co.uk%2Ffeeds%2Fposts%2Fdefault target_blank>img srchttps://resources.blogblog.com/img/widgets/subscribe-netvibes.png/>/a>a classfeed-reader-link hrefhttp://add.my.yahoo.com/content?urlhttps%3A%2F%2Fblog.go-faster.co.uk%2Ffeeds%2Fposts%2Fdefault target_blank>img srchttps://resources.blogblog.com/img/widgets/subscribe-yahoo.png/>/a>a classfeed-reader-link hrefhttps://blog.go-faster.co.uk/feeds/posts/default target_blank>img alignabsmiddle classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/> Atom /a>/div>/div>div classbottom>/div>/div>div classsubscribe idSW_READER_LIST_CLOSED_Subscribe1POST onclickreturn(_SW_toggleReaderList(event, Subscribe1POST));>div classtop>span classinner>img classsubscribe-dropdown-arrow srchttps://resources.blogblog.com/img/widgets/arrow_dropdown.gif/>span onclickreturn(_SW_toggleReaderList(event, Subscribe1POST));>img alignabsmiddle alt border0 classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/>Posts/span>/span>/div>div classbottom>/div>/div>/div>div classsubscribe-wrapper subscribe-type-COMMENT>div classsubscribe expanded subscribe-type-COMMENT idSW_READER_LIST_Subscribe1COMMENT styledisplay:none;>div classtop>span classinner onclickreturn(_SW_toggleReaderList(event, Subscribe1COMMENT));>img classsubscribe-dropdown-arrow srchttps://resources.blogblog.com/img/widgets/arrow_dropdown.gif/>img alignabsmiddle alt border0 classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/>All Comments/span>div classfeed-reader-links>a classfeed-reader-link hrefhttp://www.netvibes.com/subscribe.php?urlhttps%3A%2F%2Fblog.go-faster.co.uk%2Ffeeds%2Fcomments%2Fdefault target_blank>img srchttps://resources.blogblog.com/img/widgets/subscribe-netvibes.png/>/a>a classfeed-reader-link hrefhttp://add.my.yahoo.com/content?urlhttps%3A%2F%2Fblog.go-faster.co.uk%2Ffeeds%2Fcomments%2Fdefault target_blank>img srchttps://resources.blogblog.com/img/widgets/subscribe-yahoo.png/>/a>a classfeed-reader-link hrefhttps://blog.go-faster.co.uk/feeds/comments/default target_blank>img alignabsmiddle classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/> Atom /a>/div>/div>div classbottom>/div>/div>div classsubscribe idSW_READER_LIST_CLOSED_Subscribe1COMMENT onclickreturn(_SW_toggleReaderList(event, Subscribe1COMMENT));>div classtop>span classinner>img classsubscribe-dropdown-arrow srchttps://resources.blogblog.com/img/widgets/arrow_dropdown.gif/>span onclickreturn(_SW_toggleReaderList(event, Subscribe1COMMENT));>img alignabsmiddle alt border0 classfeed-icon srchttps://resources.blogblog.com/img/icon_feed12.png/>All Comments/span>/span>/div>div classbottom>/div>/div>/div>div styleclear:both>/div>/div>/div>div classclear>/div>/div>div classwidget Label data-version1 idLabel1>h2>Tags/h2>div classwidget-content cloud-label-widget-content>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/10053>10053/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/12.2>12.2/a>span classlabel-count dirltr> ( 3 ) /span>/span>span classlabel-size label-size-4>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/19c>19c/a>span classlabel-count dirltr> ( 6 ) /span>/span>span classlabel-size label-size-4>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Active%20Session%20History%20%28ASH%29>Active Session History (ASH)/a>span classlabel-count dirltr> ( 6 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Adaptive%20Execution%20Plans>Adaptive Execution Plans/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/ANALYZE>ANALYZE/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Attribute%20Clustering>Attribute Clustering/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Audit>Audit/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Automatic%20Indexing>Automatic Indexing/a>span classlabel-count dirltr> ( 3 ) /span>/span>span classlabel-size label-size-4>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Autonomous>Autonomous/a>span classlabel-count dirltr> ( 5 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/AWR>AWR/a>span classlabel-count dirltr> ( 4 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/bitand%28%29>bitand()/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Bitmap%20Indexes>Bitmap Indexes/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Bloom%20Filter>Bloom Filter/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Character%20Set%20Conversion>Character Set Conversion/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Cloud>Cloud/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Column%20Usage>Column Usage/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Compression>Compression/a>span classlabel-count dirltr> ( 3 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Constraints>Constraints/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-4>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Data%20Warehouse>Data Warehouse/a>span classlabel-count dirltr> ( 8 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Database%20Links>Database Links/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/datapump>datapump/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/DBMS_APPLICATION_INFO>DBMS_APPLICATION_INFO/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/DBMS_CLOUD>DBMS_CLOUD/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/DBMS_LOCK>DBMS_LOCK/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/DBMS_PARALLEL_EXECUTE>DBMS_PARALLEL_EXECUTE/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/DBMS_SCHEDULER>DBMS_SCHEDULER/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/eDB360>eDB360/a>span classlabel-count dirltr> ( 4 ) /span>/span>span classlabel-size label-size-4>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Engineered%20Systems>Engineered Systems/a>span classlabel-count dirltr> ( 6 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/enq%3A%20TM%20-%20contention>enq: TM - contention/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Errorstack>Errorstack/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/excel>excel/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Extended%20Statistics>Extended Statistics/a>span classlabel-count dirltr> ( 4 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/external%20tables>external tables/a>span classlabel-count dirltr> ( 4 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/foreign%20keys>foreign keys/a>span classlabel-count dirltr> ( 3 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Global%20Temporary%20Tables>Global Temporary Tables/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Heterogeneous%20Services>Heterogeneous Services/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Hints>Hints/a>span classlabel-count dirltr> ( 3 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Histograms>Histograms/a>span classlabel-count dirltr> ( 4 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Hybrid%20Columnar%20Compression%20%28HCC%29>Hybrid Columnar Compression (HCC)/a>span classlabel-count dirltr> ( 4 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/In-Memory>In-Memory/a>span classlabel-count dirltr> ( 3 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Instrumentation>Instrumentation/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Invisible%20Indexes>Invisible Indexes/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Job%20Chains>Job Chains/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Latch%3A%20Cache%20Buffers%20Chains>Latch: Cache Buffers Chains/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Materialized%20Views>Materialized Views/a>span classlabel-count dirltr> ( 3 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/OCI>OCI/a>span classlabel-count dirltr> ( 3 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Optimizer%20Trace>Optimizer Trace/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Oracle%20Transparent%20Gateway>Oracle Transparent Gateway/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Parallel%20PL%2FSQL>Parallel PL/SQL/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/parallel%20query>parallel query/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Partial%20Indexing>Partial Indexing/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-5>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Partitioning>Partitioning/a>span classlabel-count dirltr> ( 13 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/PCTFREE>PCTFREE/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/PL%2FSQL%20Profiler>PL/SQL Profiler/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Query%20Rewrite>Query Rewrite/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-3>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Redundant%20Indexes>Redundant Indexes/a>span classlabel-count dirltr> ( 3 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Referential%20Integrity>Referential Integrity/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Regular%20Expression>Regular Expression/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Resource%20Manager>Resource Manager/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Row%20Migration>Row Migration/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/SGA%3B%20Multi-tenant%3B>SGA; Multi-tenant;/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Sparse%20Indexes>Sparse Indexes/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-4>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Spatial%20Data>Spatial Data/a>span classlabel-count dirltr> ( 7 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/SQL%20Developer>SQL Developer/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-4>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/SQL%20Profile>SQL Profile/a>span classlabel-count dirltr> ( 7 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/SQL%20Query%20Transformation>SQL Query Transformation/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-4>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Statistics>Statistics/a>span classlabel-count dirltr> ( 8 ) /span>/span>span classlabel-size label-size-4>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/table%20cluster>table cluster/a>span classlabel-count dirltr> ( 6 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Text%20Comparison>Text Comparison/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Text%20indexing>Text indexing/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/Trace%20files>Trace files/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/wait%20events>wait events/a>span classlabel-count dirltr> ( 1 ) /span>/span>span classlabel-size label-size-2>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/XML>XML/a>span classlabel-count dirltr> ( 2 ) /span>/span>span classlabel-size label-size-1>a dirltr hrefhttps://blog.go-faster.co.uk/search/label/XMLTABLE>XMLTABLE/a>span classlabel-count dirltr> ( 1 ) /span>/span>div classclear>/div>/div>/div>div classwidget Text data-version1 idText2>h2 classtitle>Other Oracle Blogs/h2>div classwidget-content>li>Oracle: a hrefhttps://blogs.oracle.com/database/ target_blank>All Things Database/a>/li>li>Oracle: a hrefhttps://blogs.oracle.com/optimizer/ target_blank>Insights into Statistics, Query Optimization and the Oracle Optimizer/a>/li>li>Christian Antognini: a hrefhttp://antognini.ch/blog/ target_blank>Striving for Optimal Performance/a>/li>li>a hrefhttps://chandlerdba.com/ target_blank>Neil Chandlers DB Blog/a>/li>li>a hrefhttp://kevinclosson.wordpress.com/ target_blank>Kevin Closson’s Oracle Blog: Platform, Storage, and Clustering Topics related to Oracle Databases/a>/li>li>a hrefhttp://www.petefinnigan.com/weblog/entries/ target_blank>Pete Finningans Oracle Security Weblog/a>/li>li>a hrefhttps://richardfoote.wordpress.com/ target_blank>Richard Footes Oracle Blog/a>/li>li>Randolf Geists a hrefhttps://oracle-randolf.blogspot.com/ target_blank>Oracle Related Stuff/a>/li>li>Jonathan Lewis: a hrefhttps://jonathanlewis.wordpress.com/ target_blank>Oracle Scratchpad/a>/li>li>Connor McDonald: a hrefhttp://connormcdonald.wordpress.com/ target_blank>Learning is not a Spectator Sport/a>/li>li>a hrefhttp://carymillsap.blogspot.com/ target_blank>Cary Millsap/a>/li>li>Tanel Poder: a hrefhttp://blog.tanelpoder.com/ target_blank>Core IT for geeks and pros/a>/li>li>Carlos Sierra a hrefhttp://carlos-sierra.net/ target_blank>Oracle SQLTuning Notepad/a>/li>/div>div classclear>/div>/div>div classwidget Text data-version1 idText3>h2 classtitle>Other PeopleSoft Blogs/h2>div classwidget-content>li>a hrefhttp://psadmin.io/>psadmin.io/a>/li>li>a hrefhttp://www.greyheller.com/blog/ target_blank>Appsain (formerly GreyHeller) Blog/a>/li>li>a hrefhttp://peoplesofttipster.com/ target_blank>Duncan Davies PeopleSoft Tipster/a>/li>li>a hrefhttp://i-like-trains.blogspot.com/ target_blank>Graham Smiths Blog/a>/li>li>a hrefhttp://jjmpsj.blogspot.com/ target_blank>Jim Marions PeopleSoft Blog/a>/li>li>a hrefhttp://psst0101.digitaleagle.net/ target_blank>PSST0101/a>/li>li>a hrefhttp://blogs.oracle.com/peopletools/ stylefont-size: 100%; target_blank>Oracles PeopleTools Strategy Team/a>/li>/div>div classclear>/div>/div>div classwidget Image data-version1 idImage1>h2>OakTable Network/h2>div classwidget-content>a hrefhttp://www.oaktable.net>img altOakTable Network height125 idImage1_img srchttps://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_t4SiUlV-Z7dZNYohppujtWjMt_TvKfN6o54c6_Jjm1xcvrwpml0cFY7jKQQo9B6w9OTrKPS3K0MOjioE5yk-Ymj3Ajdn9rWVF381YlnggvrgzZIAs0-d width212/>/a>br/>/div>div classclear>/div>/div>div classwidget Image data-version1 idImage2>h2>Oracle ACE Director/h2>div classwidget-content>a hrefhttps://apexapps.oracle.com/pls/apex/r/ace_program/oracle-aces/ace?ace_id442&clear2>img altOracle ACE Director height85 idImage2_img srchttps://www2.go-faster.co.uk/images/S+T1_ACEDirector_rgb.png width212/>/a>br/>/div>div classclear>/div>/div>/div>/div>!-- spacer for skins that want sidebar and main to be the same height-->div classclear> /div>/div>!-- end content-wrapper -->div idfooter-wrapper>div classfooter section idfooter>div classwidget HTML data-version1 idHTML1>h2 classtitle>a hrefhttp://www.go-faster.co.uk/>©David Kurtz/a>/h2>div classwidget-content>/div>div classclear>/div>/div>/div>/div>/div>/div>!-- end outer-wrapper -->!--Syntaxhighligther -->script languagejavascript> dp.SyntaxHighlighter.BloggerMode(); dp.SyntaxHighlighter.HighlightAll(code); /script>!--It is your responsibility to notify your visitors about cookies used and data collected on your blog. Blogger makes a standard notification available for you to use on your blog, and you can customize it or replace with your own notice. See http://www.blogger.com/go/cookiechoices for more details.-->script defer src/js/cookienotice.js>/script>script> document.addEventListener(DOMContentLoaded, function(event) { window.cookieChoices && cookieChoices.showCookieConsentBar && cookieChoices.showCookieConsentBar( (window.cookieOptions && cookieOptions.msg) || This site uses cookies from Google to deliver its services and to analyze traffic. Your IP address and user-agent are shared with Google along with performance and security metrics to ensure quality of service, generate usage statistics, and to detect and address abuse., (window.cookieOptions && cookieOptions.close) || Got it, (window.cookieOptions && cookieOptions.learn) || Learn More, (window.cookieOptions && cookieOptions.link) || https://www.blogger.com/go/blogspot-cookies); }); /script>script typetext/javascript srchttps://www.blogger.com/static/v1/widgets/91768132-widgets.js>/script>script typetext/javascript>window__wavt AOuZoY5dQ_0DtiCjomc-5AFNUOQ2hJRA3A:1737136097514;_WidgetManager._Init(//www.blogger.com/rearrange?blogID\x3d14654018,//blog.go-faster.co.uk/,14654018);_WidgetManager._SetDataContext({name: blog, data: {blogId: 14654018, title: The /*+Go-Faster*/ Oracle Blog, url: https://blog.go-faster.co.uk/, canonicalUrl: https://blog.go-faster.co.uk/, homepageUrl: https://blog.go-faster.co.uk/, searchUrl: https://blog.go-faster.co.uk/search, canonicalHomepageUrl: https://blog.go-faster.co.uk/, blogspotFaviconUrl: https://blog.go-faster.co.uk/favicon.ico, bloggerUrl: https://www.blogger.com, hasCustomDomain: true, httpsEnabled: true, enabledCommentProfileImages: true, gPlusViewType: FILTERED_POSTMOD, adultContent: false, analyticsAccountNumber: G-JW8M2N31E7, analytics4: true, encoding: UTF-8, locale: en-GB, localeUnderscoreDelimited: en_gb, languageDirection: ltr, isPrivate: false, isMobile: false, isMobileRequest: false, mobileClass: , isPrivateBlog: false, isDynamicViewsAvailable: true, feedLinks: \x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22The /*+Go-Faster*/ Oracle Blog - Atom\x22 href\x3d\x22https://blog.go-faster.co.uk/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22The /*+Go-Faster*/ Oracle Blog - RSS\x22 href\x3d\x22https://blog.go-faster.co.uk/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22The /*+Go-Faster*/ Oracle Blog - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/14654018/posts/default\x22 /\x3e\n, meTag: , adsenseHostId: ca-host-pub-1556223355139109, adsenseHasAds: false, adsenseAutoAds: false, boqCommentIframeForm: true, loginRedirectParam: , view: , dynamicViewsCommentsSrc: //www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js, dynamicViewsScriptSrc: //www.blogblog.com/dynamicviews/d2c988fc3a56b1b1, plusOneApiSrc: https://apis.google.com/js/platform.js, disableGComments: true, interstitialAccepted: false, sharing: {platforms: {name: Get link, key: link, shareMessage: Get link, target: }, {name: Facebook, key: facebook, shareMessage: Share to Facebook, target: facebook}, {name: BlogThis!, key: blogThis, shareMessage: BlogThis!, target: blog}, {name: X, key: twitter, shareMessage: Share to X, target: twitter}, {name: Pinterest, key: pinterest, shareMessage: Share to Pinterest, target: pinterest}, {name: Email, key: email, shareMessage: Email, target: email}, disableGooglePlus: true, googlePlusShareButtonWidth: 0, googlePlusBootstrap: \x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en_GB\x27};\x3c/script\x3e}, hasCustomJumpLinkMessage: false, jumpLinkMessage: Read more, pageType: index, pageName: , pageTitle: The /*+Go-Faster*/ Oracle Blog}}, {name: features, data: {}}, {name: messages, data: {edit: Edit, linkCopiedToClipboard: Link copied to clipboard, ok: Ok, postLink: Post link}}, {name: template, data: {name: custom, localizedName: Custom, isResponsive: false, isAlternateRendering: false, isCustom: true}}, {name: view, data: {classic: {name: classic, url: ?view\x3dclassic}, flipcard: {name: flipcard, url: ?view\x3dflipcard}, magazine: {name: magazine, url: ?view\x3dmagazine}, mosaic: {name: mosaic, url: ?view\x3dmosaic}, sidebar: {name: sidebar, url: ?view\x3dsidebar}, snapshot: {name: snapshot, url: ?view\x3dsnapshot}, timeslide: {name: timeslide, url: ?view\x3dtimeslide}, isMobile: false, title: The /*+Go-Faster*/ Oracle Blog, description: The PeopleSoft stuff is at \x3ca href\x3d\x22http://blog.psftdba.com\x22\x3eblog.psftdba.com\x3c/a\x3e.\x3cbr\x3eThis is the non-PeopleSoft Oracle Database blog. Mostly about performance., url: https://blog.go-faster.co.uk/, type: feed, isSingleItem: false, isMultipleItems: true, isError: false, isPage: false, isPost: false, isHomepage: true, isArchive: false, isLabelSearch: false}});_WidgetManager._RegisterWidget(_NavbarView, new _WidgetInfo(Navbar1, navbar, document.getElementById(Navbar1), {}, displayModeFull));_WidgetManager._RegisterWidget(_HeaderView, new _WidgetInfo(Header1, header, document.getElementById(Header1), {}, displayModeFull));_WidgetManager._RegisterWidget(_BlogView, new _WidgetInfo(Blog1, main, document.getElementById(Blog1), {cmtInteractionsEnabled: false, lightboxEnabled: true, lightboxModuleUrl: https://www.blogger.com/static/v1/jsbin/3812250239-lbx__en_gb.js, lightboxCssUrl: https://www.blogger.com/static/v1/v-css/1964470060-lightbox_bundle.css}, displayModeFull));_WidgetManager._RegisterWidget(_PageListView, new _WidgetInfo(PageList1, sidebar, document.getElementById(PageList1), {title: Announcements, links: {isCurrentPage: false, href: https://blog.go-faster.co.uk/, id: 0, title: Home}, {isCurrentPage: false, href: http://www.go-faster.co.uk, title: Go-Faster website}, {isCurrentPage: false, href: http://blog.psftdba.com, title: The PeopleSoft DBA Blog}, {isCurrentPage: false, href: https://blog.go-faster.co.uk/p/david-kurtz.html, id: 5211800229374553361, title: David Kurtz}, {isCurrentPage: false, href: https://www.youtube.com/@davidkurtz, title: Video Channel}, mobile: false, showPlaceholder: true, hasCurrentPage: false}, displayModeFull));_WidgetManager._RegisterWidget(_TextView, new _WidgetInfo(Text1, sidebar, document.getElementById(Text1), {}, displayModeFull));_WidgetManager._RegisterWidget(_ImageView, new _WidgetInfo(Image3, sidebar, document.getElementById(Image3), {resize: true}, displayModeFull));_WidgetManager._RegisterWidget(_HTMLView, new _WidgetInfo(HTML2, sidebar, document.getElementById(HTML2), {}, displayModeFull));_WidgetManager._RegisterWidget(_BlogArchiveView, new _WidgetInfo(BlogArchive1, sidebar, document.getElementById(BlogArchive1), {languageDirection: ltr, loadingMessage: Loading\x26hellip;}, displayModeFull));_WidgetManager._RegisterWidget(_SubscribeView, new _WidgetInfo(Subscribe1, sidebar, document.getElementById(Subscribe1), {}, displayModeFull));_WidgetManager._RegisterWidget(_LabelView, new _WidgetInfo(Label1, sidebar, document.getElementById(Label1), {}, displayModeFull));_WidgetManager._RegisterWidget(_TextView, new _WidgetInfo(Text2, sidebar, document.getElementById(Text2), {}, displayModeFull));_WidgetManager._RegisterWidget(_TextView, new _WidgetInfo(Text3, sidebar, document.getElementById(Text3), {}, displayModeFull));_WidgetManager._RegisterWidget(_ImageView, new _WidgetInfo(Image1, sidebar, document.getElementById(Image1), {resize: true}, displayModeFull));_WidgetManager._RegisterWidget(_ImageView, new _WidgetInfo(Image2, sidebar, document.getElementById(Image2), {resize: true}, displayModeFull));_WidgetManager._RegisterWidget(_HTMLView, new _WidgetInfo(HTML1, footer, document.getElementById(HTML1), {}, displayModeFull));/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]