Some reading material for March

Don’t use “beef stew” as a computer password. It’s not stroganoff.

And here’s some of the last few weeks’ finest…

Blogs of the week

1. Oracle Analytics Server – Data Visualisation Access Issue

This blog begins by saying, “Oracle Analytics Server 5.5.0 was recently released and I’ve been testing out the OAS installation process. This short blog post just goes through some issues that I encountered during this process related to access to Data Visualisation.

I did an out-of-place upgrade which went remarkably smoothly and imported a BAR file from a OBIEE instance into the new OAS instance. The problem I had was to do with access to Data Visualisation.”

There are also links to Support Documentation here, and here

2. Oracle Analytics Server

This documentation includes links to:

  • Overview
  • Learn about the Installation Process
  • Install Analytics Server
  • Configure Analytics Server
  • Migrate from Oracle Business Intelligence 11g
  • Migrate from Oracle Business Intelligence 12c

3. After Upgrade To Oracle Analytics Server (OAS), Modifying System Settings Fails With “Property Update Failed Due To Unauthorized Access” (Doc ID 2644363.1)

This document covers the:

  • Symptoms
  • Cause
  • Solution
  • References

4. After Snapshot (BAR) Import In Oracle Analytics Server (OAS), Data Flows Fail With ‘400 – Bad Request ..’ Error (Doc ID 2645310.1)

This details the symptoms as:

“You have a new installation of Oracle Analytics Server (OAS) 5.5
You have migrated | imported a snapshot (BAR) file from an Oracle Business Intelligence 12c version.

When creating a new data flow, it errors with “Something Went Wrong” and the details display “400 – Bad Request. Please try again in a few moments.”
Note: Data flows were working prior to the BAR import.”

5. Benchmarking calling Oracle Machine Learning using REST

Brendan Tierney writes, “Over the past year I’ve been presenting, blogging and sharing my experiences of using REST to expose Oracle Machine Learning models to developers in other languages, for example Python.

One of the questions I’ve been asked is, Does it scale?”

6. A brief look at the evolution of interface protocols leading to modern APIs

“This article attempts to demystify (to an extend) the origins of modern web-based APIs. This is done by listing and describing in chronological order (as illustrated below) the different interface protocols and standards that in my view have had major influence to modern web-based APIs as we know them today (e.g. SOAP/WSDL based web services, REST, GraphQL, gRPC to name a few).”

7. About Data Warehouse Design Patterns and Lazy Programmers

Dani Schnider blogs about the Workshop with Roelant Vos

He writes about the three topics that were important in his training:

Pattern Based Design,

Persistent Staging Area

Virtual Data Warehouse.

He concludes: “The 3-day course has more than fulfilled my expectations. Although I already used some of the concepts myself (to be honest, most of what Roelant explained was already familiar to me), I really liked the step-by-step construction of a data warehouse architecture using many code examples and live demos. Or as I said as spontaneous feedback at the end of the course: “It was fun”.”

8. Merge vs. Insert-Exception-Update

Marco Mischke starts by saying, “Recently I had a discussion with one of our developers about how to bring new rows in a table or, if the row already exists, update it. His approach was a PL/SQL procedure that first tries to insert a single row and if that fails because the row is already there, catch that exception and do an update instead. I told him, that this approach has at least three issues, that make it slow. First, it does things row-by-row, this is much more inefficient than set operations and it does not scale well. Second, it has lots of context switches between SQL and PL/SQL which are costly. And third, the exception handling is expensive too. My advise was to switch the code to use a single MERGE-statement. And to prove that I am right, I wrote a small example which I’ll share with you.”

9. SQL Monitor flaw

Mohamed Houri begins the blog by writing, “In the following series of articles about the SQL monitor Duration and Elapsed Time:

I’ve explained why we should always rely on the Duration information as it represents the wall clock time of the query. The Elapsed time doesn’t include time spent by Idle session fetching data. And, when a SQL statement runs parallelly, the Elapsed time includes execution time of both the Query Coordinator and all its parallel server slaves.

So, If I tell you that there is no parsing effect in the above query and that there are no fetch calls, you would normally infer that it has really spent 4 seconds to complete; right?

What if I tell you that this query took approximatively 1981 seconds? Will you believe me?”…

10. count(*) – again

Jonathan Lewis starts his blog, “We have a large table with a CLOB column, where the CLOB occupies 85% storage space.
when we use select count(*) from , the DBA says that you should not use count(*) as it uses all columns and as this table contains CLOB it results in high CPU usage, where as if we use count(rowid), this brings us faster and same result.”

This week on Twitter

Performance Architects tweeted about this webinar

Oracle IT Infrastructure shared Enterprise Manager CIS Benchmark Certification Eases Adoption of Secure Database Best Practices

Brendan Tierney posted Is Artificial Intelligence Good?

Stories from, and

Videos such as:

Office Hours – Blockchain, NOLOGGING, COUNT DISTINCT and more

Extract Chatbot User Input with Python and spaCy | Yuli Vasiliev