Next
VirtualBox 5.1.22 - 30-Apr-2017 04:34 - Tim Hall

Hot on the heels of VirtualBox 5.1.20 comes VirtualBox 5.1.22. 🙂

Downloads and changelog are in the usual places.

I noticed this when I was in the airport yesterday, but I didn’t have enough time to download it. 🙂

It looks like it’s installed OK on my Windows 7 desktop at work and on my macOS Sierra laptop. I’ll have a go on an Oracle Linux 6 host tomorrow probably.

Cheers

Tim…


VirtualBox 5.1.22 was first posted on April 30, 2017 at 9:34 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.
Oracle Code : Prague – The Journey Home - 30-Apr-2017 04:20 - Tim Hall

I had to be at the airport for 12:15, which meant I got a lie in and I actually slept a bit, which was nice. 🙂

When I woke up I got some breakfast, edited a couple of short Oracle Code videos and caught up with my blog posts. After that was done I went through all the work emails I’ve missed over the last week, just so I don’t have that unpleasant job to do when I get back to work on Tuesday. Once that was done a went back to bed for an hour before check-out. I know it’s sad, but I’ve had so little sleep the previous two days I felt dead.

It was a quick taxi ride to the airport and I barely broke my stride walking through security, which meant I was two hours early for the flight. Better early than late! 🙂

Because I fluked a business class ticket on the way out I had a baggage allowance of two cases and two pieces of hand luggage, of which I used two pieces of hand luggage. The journey back was economy, so I had an allowance of one piece of hand luggage. Why do companies sell return tickets with different baggage allowances? Luckily I didn’t have much, so I could cram it into the once bag.

As soon as they announced boarding, most people ignored the queue and barged to the front. The flight from Prague to Frankfurt took about an hour. As soon as I got off I checked the gate for the next flight and it had been moved to the other terminal, so I stomped off in a bit of a panic, but made it in plenty of time.

As it happened, boarding was delayed for the second flight because one of the trolley dollies was late. Once again, as soon as boarding was announced a bunch of people jumped the queue. I will not tell you what I was wishing would happen to the queue jumpers… The second flight took at 75 minutes, which wasn’t so bad.

After a quick taxi ride home, Oracle Code : Prague was complete! I did all my thank you messages in the last post, but once again thanks to everyone involved for making the event go so well. See you soon!

Cheers

Tim…


Oracle Code : Prague – The Journey Home was first posted on April 30, 2017 at 9:20 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.
12cR1 RAC Posts -- 9 : Adding a Service to a PDB in RAC - 29-Apr-2017 12:02 - Hemant K Chitale
My 2node RAC environment has 1 PDB.  Here I add (create) a new Service to the PDB.

Oracle recommends using srvctl instead of DBMS_SERVICE to add a Service.

Can I add a service without having the PDB OPEN ?

[oracle@collabn1 ~]$ srvctl start database -d RAC
[oracle@collabn1 ~]$ srvctl add service -db RAC -service MYSVC -preferred RAC1,RAC2 \
> -tafpolicy BASIC -clbgoal SHORT -pdb PDB
[oracle@collabn1 ~]$
[oracle@collabn1 ~]$ sqlplus '/ as sysdba'

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 29 23:16:01 2017

Copyright (c) 1982, 2014, Oracle. All rights reserved.


Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options

SQL> select con_id, name, open_mode from v$pdbs;

CON_ID NAME OPEN_MODE
---------- ------------------------------ ----------
2 PDB$SEED READ ONLY
3 PDB MOUNTED

SQL> alter pluggable database pdb open; -- command issued in both instances

Pluggable database altered.

SQL>
SQL> select con_id, pdb, name, creation_date, clb_goal
2 from v$services
3 where pdb='PDB'
4 /

CON_ID PDB
---------- ------------------------------
NAME CREATION_ CLB_G
---------------------------------------------------------------- --------- -----
3 PDB
pdb.racattack 29-DEC-16 LONG


SQL>


I add the Service to the TNSNAMES.ORA and try to connect to it.

MYSVC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = collabn-cluster-scan.racattack)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYSVC.racattack)
)
)

[oracle@collabn1 ~]$ tnsping MYSVC

TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 29-APR-2017 23:22:43

Copyright (c) 1997, 2014, Oracle. All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn-cluster-scan.racattack)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = MYSVC.racattack)))
OK (0 msec)
[oracle@collabn1 ~]$ sqlplus hemant/hemant@MYSVC

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 29 23:22:51 2017

Copyright (c) 1982, 2014, Oracle. All rights reserved.

ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor


Enter user-name:


So, apparently, the service isn't running.   Shall I try re-adding the service ?

[oracle@collabn1 ~]$ srvctl add service -db RAC -service MYSVC -preferred RAC1,RAC2 \
> -tafpolicy BASIC -clbgoal SHORT -pdb PDB
PRKO-3117 : Service MYSVC already exists in database RAC
[oracle@collabn1 ~]$ srvctl remove service -db RAC -service MYSVC -pdb PDB
PRKO-2002 : Invalid command line option: -pdb
[oracle@collabn1 ~]$ srvctl remove service -db RAC -service MYSVC
[oracle@collabn1 ~]$ srvctl add service -db RAC -service MYSVC -preferred RAC1,RAC2 \
> -tafpolicy BASIC -clbgoal SHORT -pdb PDB
[oracle@collabn1 ~]$
[oracle@collabn1 ~]$ sqlplus hemant/hemant@MYSVC

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 29 23:31:15 2017

Copyright (c) 1982, 2014, Oracle. All rights reserved.

ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor


Enter user-name:


Yet, it doesn't work !   How do I add and start service to a PDB ?  What's missing ?

[oracle@collabn1 ~]$ srvctl remove service -db RAC -service MYSVC
[oracle@collabn1 ~]$ srvctl start service -db RAC -service MYSVC
[oracle@collabn1 ~]$

SQL> select distinct name from v$services;

NAME
----------------------------------------------------------------
pdb.racattack
RAC.racattack
MYSVC
SYS$BACKGROUND
RAC_DGB
RACXDB
SYS$USERS


[oracle@collabn1 ~]$ sqlplus hemant/hemant@MYSVC

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 29 23:43:01 2017

Copyright (c) 1982, 2014, Oracle. All rights reserved.

Last Successful login time: Sun Apr 16 2017 23:30:21 +08:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options

SQL> select table_name from user_tables;

TABLE_NAME
--------------------------------------------------------------------------------
MY_DATA
MY_NEW_TABLE

SQL>


I had forgotten to *START* the service !   Let me go back and add another service with the PDB CLOSEd.

SQL> alter pluggable database pdb close immediate;  -- on both instances

Pluggable database altered.

SQL>

[oracle@collabn1 ~]$ srvctl add service -db RAC -pdb PDB -service NEWSVC -preferred RAC1,RAC2 \
> -tafpolicy BASIC -clbgoal SHORT
[oracle@collabn1 ~]$

SQL> alter pluggable database pdb open; -- on both instances

Pluggable database altered.

SQL>

NEWSVC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = collabn-cluster-scan.racattack)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = NEWSVC.racattack)
)
)

[oracle@collabn1 ~]$ srvctl start service -db RAC -service NEWSVC
[oracle@collabn1 ~]$ tnsping NEWSVC

TNS Ping Utility for Linux: Version 12.1.0.2.0 - Production on 29-APR-2017 23:54:38

Copyright (c) 1997, 2014, Oracle. All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collabn-cluster-scan.racattack)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = NEWSVC.racattack)))
OK (0 msec)


[oracle@collabn1 ~]$ sqlplus hemant/hemant@NEWSVC

SQL*Plus: Release 12.1.0.2.0 Production on Sat Apr 29 23:55:25 2017

Copyright (c) 1982, 2014, Oracle. All rights reserved.

Last Successful login time: Sat Apr 29 2017 23:54:51 +08:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Advanced Analytics and Real Application Testing options

SQL> select table_name from user_tables;

TABLE_NAME
--------------------------------------------------------------------------------
MY_DATA
MY_NEW_TABLE

SQL>


However, these entries in PDB_PLUG_IN_VIOLATIONS seem to be a bug :

SQL> alter pluggable database pdb close immediate;

Pluggable database altered.

SQL> alter pluggable database pdb open;

Pluggable database altered.

SQL> select * from pdb_plug_in_violations;

TIME
---------------------------------------------------------------------------
NAME
------------------------------
CAUSE TYPE
---------------------------------------------------------------- ---------
ERROR_NUMBER LINE
------------ ----------
MESSAGE
--------------------------------------------------------------------------------
STATUS
---------
ACTION
--------------------------------------------------------------------------------
29-APR-17 11.58.32.409572 PM
PDB
Service Name Conflict WARNING
0 1
Service name or network name of service MYSVC in the PDB is invalid or conflicts
with an existing service name or network name in the CDB.
PENDING
Drop the service and recreate it with an appropriate name.

29-APR-17 11.58.32.412142 PM
PDB
Service Name Conflict WARNING
0 2
Service name or network name of service NEWSVC in the PDB is invalid or conflict
s with an existing service name or network name in the CDB.
PENDING
Drop the service and recreate it with an appropriate name.


SQL>


So, remember, it is not sufficient to ADD a Service. You must also START the Service using srvctl.
.
.
.

Since the birth of the ODA X6-2 HA, the net usable storage has become more of a challenge when advising a customer as the X5-2 HA had substantial more – but slower – storage. This very short blogpost is just a quick summary / checklist of the net usable storage, depending on the ODA and the mirroring you choose.

By the way, for other ODA-comparisons than storage I wrote another blogpost.

The following pictures are extracts of Oracle PDF’s.

Usable storage of the single node ODA’s:

image

 

Usable storage of the two-node ODA (including the ‘old’ X5-2 HA for comparison):

image

 

ODA X6-2 HA Normal Redundancy – 2 x Mirroring

 

image

 

ODA X6-2 HA High Redundancy – 3 x Mirroring

 

image

 

Sources:

ODA, comparing the line: https://technology.amis.nl/2017/01/08/oracle-database-appliance-x6-2l-x6-2-ha-comparing-line/

Oracle PDF’s :

– 201701120 EN Oracle Database Appliance X6-2 Portfolio Summary.pdf

– ODA X6-2HA Net Storage.pdf

The post Net usable storage when using Oracle Database Appliance appeared first on AMIS Oracle and Java Blog.

Oracle Code : Prague - 29-Apr-2017 02:57 - Tim Hall

I was a little late getting to the event. My hotel was only a mile away from the conference venue, but it was a mile up hill. 🙂 I missed the start of the first keynote, but I had already seen it in London, so I didn’t feel too guilty. 🙂

When I walked into the keynote it was packed. If you followed the event on Twitter you will know the turnout was great. Well done Prague for coming out in force to support the event!

First up was Adam Bien with “Enterprise Java.next: A Slideless Keynote”, but as I said, I missed it this time around. You can see my description from the London event.

The second keynote was “Building Modern Applications Using APIs, Microservices, and Chatbots” by Siddhartha Agarwal, Jakub Nesetril. This was a standing room only thing again, so I had a little wander around the venue and got back to see the chatbot demonstration, which I watched from the from the corridor. Pretty neat.

Next I went to see Peter Nagy with “Deploying Cloud-Native Applications: VMs, Containers, or Functions”. This was a really interesting and I wrote down a lot of notes. I had a quick chat with him at the end about Docker and learned some new stuff.

From there I went to see Chris Saxon with “SQL Magic! Tricks to Show SQL Features You’ve Probably Never Used”. He got a big crowd, which was good to see for a SQL presentation at an event like this.

After that I went to see “Explore the Basics of Setting up Your First Secure Private Docker Registry” by Mike Raab. Being a Docker noob, some of this went over my head, but every bit of information helps ease the transition into playing with Docker. 🙂 He mentioned using Let’s Encrypt certificates, which I saw a few people scribble a note about.

Before the next session I live-streamed a small bit on Periscope for the @OracleDevs Channel, which you can watch on Twitter or Periscope. If you watch it on Twitter you’ll see half of my head. If you watch it on Periscope you will see it all. 🙂

After that it was my session called “Make the RDBMS Relevant Again with RESTful Web Services and JSON“. The crowd were very quiet during the session, so it was kind-of hard to know how well it went, but I had some people come to speak to me at the end, so hopefully it was fine. 🙂

I missed the last block of the day because I was too busy chatting to a couple of guys (Ramil and Artjom) and about DBA stuff. We continued chatting during the party at the end of the event, and were joined by one of their colleagues (sorry dude, I missed your name) and Frank Nimphius. I think we were the last to leave. 🙂

It was a really enjoyable day. Thanks to everyone from #OracleCode for letting me come to the event. Thanks also to the Oracle ACE Program for continuing to let me fly the flag. Big thanks to all the speakers and attendees that made this such a successful event. I hope to see you all again!

So that’s my second and last #OracleCode event this year. I hope the rest of the cities go well. Remember, it’s free so turn up and support them if you want more events like this in the future!

Cheers

Tim…


Oracle Code : Prague was first posted on April 29, 2017 at 7:57 am.
©2012 "The ORACLE-BASE Blog". Use of this feed is for personal non-commercial use only. If you are not reading this article in your feed reader, then the site is guilty of copyright infringement.
Delivering Migration Projects on Time - 28-Apr-2017 14:02 - Kellyn Pot'Vin

I did a couple great sessions yesterday for the awesome Dallas Oracle User Group, (DOUG.)  It was the first time I did my thouship piece on Making Sense of the Cloud and it was a great talk, with some incredible questions from the DOUG attendees!

This points me to a great [older] post on things IT can do to help guarantee tech projects are more successful. DevOps is a standard in most modern IT shops and DBAs are expected to find ways to be part of this valuable solution.  If you inspect the graph, displaying the value of different projects in ROI, vs. how often these different types of projects run over budget and time, it may be surprising.

Where non-software projects are concerned, the project rarely runs over the schedule, but in the way of benefits, often comes up short.  When we’re dealing with software, 33% of project run over time, but the ROI is excruciatingly high and worthy of the investment.  You have to wonder how much of that over-allocation in time feeds into the percentage increase in cost?  If this could be deterred, think about how more valuable these projects would become?

The natural life of a database is growth.  Very few databases stay a consistent size, as companies prosper, critical data valuable to the company requires a secure storage location and a logical structure to report on that data is necessary for the company’s future.  This is where relational databases come in and they can become the blessing and the burden of any venture.  Database administrators are both respected and despised for their necessity to manage the database environment as the health of the database is an important part of the IT infrastructure and with the move to the cloud, a crucial part of any viable cloud migration project.

How much of that time, money and delay shown in those projects are due to the sheer size and complexity of the database tier?  Our source data shows how often companies just aren’t able to hold it together due to lacking skills, lacking estimates in time estimates and other unknowns that come back to bit us.

I can’t stress enough why virtualization is key to removing a ton of the overhead, time and money that ends up going into software projects that include a database.

Virtualizing non-production databases results in:

  1. Ability to deliver full copies of production for developers without extensive demands on storage.
  2. Ability to deliver those databases in a matter of minutes vs. days or weeks.
  3. Ability to refresh databases as needed for any project.
  4. Self-service user-interface so developers and testers can recover from a catastrophic issue in a database without having to grovel to a DBA to restore a virtual database.
  5. Ability to branch the VDB and do versioning, which is awesome for both developers and testers, (I know, we DBAs care very little about this feature… :))
  6. In migrations/cloud migrations, the ability to migrate databases in short periods of time and to limit the storage footprint to save company the money they were promised the cloud would deliver that most are finding out in the long run, is not occurring with traditional database scenarios.

It’s definitely something to think about and if you don’t believe me, test it yourself with a free trial!  Not enough people are embracing virtualization and it takes so much of the headache out of RDBMS management.



Tags:  , ,

Del.icio.us
Facebook
TweetThis
Digg
StumbleUpon


Copyright © DBA Kevlar [Delivering Migration Projects on Time], All Right Reserved. 2017.

The post Delivering Migration Projects on Time appeared first on DBA Kevlar.

This is the tenth posting in a blog series summarizing the new Oracle E-Business Suite 12.2 Mobile and web services functionality and recommendations for securing them.

Oracle Corporation has been building out Mobile and Smartphone applications for the Oracle E-Business Suite for a number of releases. Before release 12.2.5, this functionality was designed only for deployment through a corporate VPN, not through an Oracle E-Business Suite external node over the Internet (e.g. a server in DMZ).

With release, 12.2.5 external node deployment for Mobile applications is now an option. 12.2.5 bundles Oracle Mobile v4 and uses the E-Business Suite's WebLogic server.  Specifically, 12.2.5 deploys the Oracle Mobile v4 REST services through the OAFM WebLogic application.  In other words, with 12.2.5, Smartphone applications can now be Internet deployed without a need for a separate WebLogic Server; no need for a SOA Server or a separate WebLogic server.

Oracle Mobile Using Native EBS REST

To secure version 12.2.5 Oracle E-Business Suite Mobile applications, Oracle Mobile Security Services (OMSS) is used.  Check with your Oracle sales representative if OMSS is separately licensed or not. OMSS provides critical URL shortening as well as white/blacklisting and other functionality specific to deploying Oracle Mobile applications. OMSS must be properly configured and is placed in front of OAFM.

OMSS in-line before OAFM

If you have any questions, please contact us at info@integrigy.com

-Michael Miller, CISSP-ISSMP, CCSP, CCSK

References

 
 
 
 
 
 
Web Services, DMZ/External, Oracle E-Business Suite
Deploy Weblogic to Oracle Container Cloud Service - 27-Apr-2017 16:20 - Danny Bryant

A few weeks ago, we walked through the process of creating an Oracle Container Cloud Service Instance. Since then, “Oracle announced today that it is collaborating with Docker to release  its flagship databases, middleware and developer tools into the Docker Store marketplace via the Docker Certification Program.” You can read more about that here. A quick ...

The post Deploy Weblogic to Oracle Container Cloud Service appeared first on dbaonTap.

Got this question:

Answer: YES.

Make sure you select BOTH.

Then set your file type.

.SQL as requested

Now to confirm I’m really getting what I want.

Yes, that.

SQL Developer will automatically open the file after it’s created.

Voila!

Quiz Night - 27-Apr-2017 12:29 - Jonathan Lewis

If this is the closing section of thetkprof output from the trace file of a single end-user session that has a performance problem, what’s the most obvious deduction you can make about the cause of the problem, and what sort of action would you take next ?


OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse      296      0.06       0.10          0        651          0           0
Execute    440      1.39       2.24          7       4664          0         146
Fetch      345     29.38      48.27          0    1709081          0         346
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total     1081     30.84      50.63          7    1714396          0         492

Misses in library cache during parse: 5
Misses in library cache during execute: 7

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  SQL*Net message to client                     497        0.00          0.00
  SQL*Net message from client                   496       27.03         50.35
  direct path read                                1        0.00          0.00


OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse   128199      6.94      11.46          0       2740          0           0
Execute 2274845    371.25     605.60         30   10031162          0       68200
Fetch   2225314     10.94      18.17          5     879297          0      577755
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total   4628358    389.14     635.23         35   10913199          0      645955

Misses in library cache during parse: 9701
Misses in library cache during execute: 134

Elapsed times include waiting on following events:
  Event waited on                             Times   Max. Wait  Total Waited
  ----------------------------------------   Waited  ----------  ------------
  direct path read                                1        0.00          0.00
  latch: shared pool                              3        0.00          0.00

12666  user  SQL statements in session.
  495  internal SQL statements in session.
13161  SQL statements in session.
********************************************************************************
Trace file: {concealed file name}.trc
Trace file compatibility: 11.1.0.7
Sort options: default

       1  session in tracefile.
   12666  user  SQL statements in trace file.
     495  internal SQL statements in trace file.
   13161  SQL statements in trace file.
    5266  unique SQL statements in trace file.
 39046623  lines in trace file.
     742  elapsed seconds in trace file.


There’s no absoutely right answer to the last question, by the way – there are a couple of variations in approach that are likely to get to the same result in the same time, and some of those variations might have made looking at the tail end data the 2nd or 3rd step in the sequence.

Update

One of the skills of using your time effectively when trouble-shooting is the way you balance the time you spend noting the little details that might be relevant, and the time you then spend following up each detail to check for relevance and corroborating evidence. The amateurs might throw themselves into in-depth research on the first detail they notice; or if they’ve started with a short list of observations simply spend too much time on the first before moving on to the second.

An exercise like looking at this tail-end this tkprof file and talking about what you spot and what you might do is just a little exercise in how to pace yourself as you tackle a problem. So, from my perspective, here a couple of obvious starting points:

  • I said it was an end-user session complaining about performance – the last line of the file tells use that the elapsed time was 742 seconds, and the summary of recursive statement tells us there were 2.2 million executions. How can ANYTHING an end-user wants to do “quickly” require 3,000 executions per second of 12 minutes? I can ask that question because I know that “recursive” executions aren’t necessarily “sys-recursive”, SQL statements executed inside a PL/SQL block are also recursive – on top of that I can see, anyway, that there are 12,466 (probably all different) USER statements in the file – the user (or the user’s code) is doing something it almost certainly shouldn’t be doing. Those 2.2M executions are responsible for 10M buffer visits – does that suggest a lot of single row processing ?
  • Associated with the 13,161 statements in the trace file there are 9,700 misses in the library cache during parse – that means “hard” parsing, probably means the user is getting through about 800 “new” statements per minute – but there are only 5,266 unique statements so part of the problem is that some recently used statements (or child cursors, at least) are being flushed from the library cache: again that suggests that they’re doing something wrong.
  • As one of the commentators pointed out – a detail that I hadn’t noted initially – the number of “current” buffers is zero. This isn’t a mini-batch updating the database, it’s just a report (done badly).

What would I do next ? If it wasn’t already immediately obvious I’d look for the statements that were responible for the very large numbers of executions; a call to tkprof with sort=execnt as a parameter would push the high execution counts to the top of the file.  (The worst one had over 900,000 executions, the next 600,000). Then I’d do a grep, sed, sort with uniq -c to find the statement which (I’d guess – and there were 3 of them responsible for a few thousand variants each) were the generated texts using concatenation instead of bind variables. Then I’d go and find the owner of the code and sit down with them to work out how it should be re-engineered.

 


Next