October 2015

When others then null - Push those errors somewhere

There are so many sites out there, that specializes in certain areas, and do it really good.

One of those sites is Airbrake.io, that can correlate your application errors into one dashboard, for easy reporting. It also integrates with GitHub so you can track errors related to your releases.

So I have decided to write an integration (using their offcial api) that enables us to report exceptions directly into the Airbrake dashboard.

Depending on which plan you select, you will be able to create different projects (applications), and group errors accordingly. For this demo purpose, I have created a free account and in that you only have the option for one project.

Read Consistency

I posted a note a few days ago about read consistency, the Cross Session PL/SQL Function Result Cache, deterministic functions, and scalar subqueries. The intent of the article was to make clear the point that while you might think that declaring a PL/SQL function to be deterministic or in the PL/SQL Result Cache might make a query that calls the function perform faster, if that function contained its own SQL statement then your code might not be producing self-consistent results and (even worse) if you had used the Result Cache option your code might actually cause other session to get wrong results if you tried to “set transaction read only” or “alter session set isolation_level = serializable”

Passing parameters

I had an interesting question from a previous work colleague. She had a need to perform a query on attribute pairs. For the sake of discussion, we’ll assume that pairs are a shopping centre name, and a checkout aisle in that shopping centre.

So for example, on screen, a user may say:

Show me the sales coming through the following checkout aisles:

Perth,17
Wembley,32
Floreat,11

She had the beginnings of a package to solve the problem, but got stuck at when it come to referencing the two sets of attributes

Sound an alarm: Sharding in the next release of Oracle Database 12c!

There is very little—if anything—about NoSQL that is incompatible with the relational model, the RDBMS vendors will eventually absorb the innovations of the NoSQL camp. Sharding is the perfect example and Oracle will announce support for it an Oracle OpenWorld 2015.(read more)

Internet Communities Are Selfish. Deal with it!

The Community?

I was reading Heli‘s blog post called The Oracle Community this morning, which directed me to posts by Jari Laine and Denes Kubicek. I think everyone that is involved in any type of community hits this issue at some point. For internet communities, it’s probably a much quicker realisation.

Auto SGA Management Impacts the Default Value of DB_FILE_MULTIBLOCK_READ_COUNT

The database engine determines the maximum disk I/O size used during multiblock reads (for example, full table scans or index fast full scans) by multiplying the values of the db_block_size and db_file_multiblock_read_count initialization parameters. The db_file_multiblock_read_count initialization parameter can be set explicitly, or, as of version 10.2, it’s also possible to instruct the database engine to automatically configure it. For the latter, simply don’t set it.

About the value which is automatically determined by the database engine the Oracle Database 12c Reference Guide gives us the following information:

Why I love working on AskTom

Today a question came in, and Swapnasis provided a nice simple test case, which makes my job so much easier.  Here’s a snippet from it


SQL> create table TTT(
  2    testid integer not null,
  3    value integer not null,
  4    time timestamp not null,
  5    unique(testid, time)
  6  );

Table created.

See line 5 ?

I’ve been working with Oracle for (well…I’d rather not say Smile) but lets just says “a number of years” dating back to version 6 of the database.  But in all of that time, I never knew that you could just write “unique”.  I have always done “constraint MY_CONSTRAINT unique (col1, col2)”.

PL/SQL Functions

Assuming everything else has been tuned to perfection, what’s the best you can do while calling PL/SQL functions from SQL ? Here’s a little code to create a table with some data, and a function that we can use to start an investigation:

IT operations made easier!

What kinds of things keep a IT ops person up at night?

What kinds of things make IT Ops people have to work over the weekends?

What keeps me up:

  • outages
  • performance problems
  • running out of disk space
  • corruption requiring recovery

These things are stressful.

One the most stressful things is recovering from corruption. Usually when there is a corruption, some important data and/or system is not accessible and won’t be until I recover the data. Now data recovery is not something I typically do everyday, so when I have to so it under pressure and using backups that probably haven’t even been tested for viability, then it’s a hugely stressful situation.

Characterset Changes

October 9, 2015 In 2006 I did a bit of experimentation with an Oracle characterset that supports Unicode (AL32UTF8 if I remember correctly) using Oracle Database 10.2.0.2.  That test, performed on a desktop computer with a bit less than 1GB of RDRAM (Rambus) memory, was a huge failure, and not just because the computer did not […]