This week I was doing research for one of our internal knowledge session when I stumbled across an interesting piece of history. I was tracing the history of computer security when I found an interview from Wired from the first people who implemented passwords as a security measure. They interviewed technicians like Fred Schneider and Fernando Corbató who worked at MIT back in the 60’s. http://www.wired.com/2012/01/computer-password/ The article centers on a system (CTSS) (more...)
I remember on a flight to the UKOUG, I was doing what all presenters typically do on a plane. They enter the cabin with the thought of "OK, I’ll spend most of the flight getting those slides just right". Then…a set of broadcast advertisements, safety messages, hot face towels, exit row briefings, beverage services, coffee services, and before you know it you’ve burned 2 hours without touching the laptop…and then the meal service (more...)
People ask me from time to time what are some good SQL tuning books. It’s a tough question to answer. There are some seminal books such as “SQL Tuning” by Dan Tow and “Cost Based Optimizer Fundamentals” by Jonathan Lewis, but these are advanced books that few I know have actually read from cover to cover. If you are looking for practical SQL tuning cookbooks you might want something a little less advanced. For a practical (more...)
If you take a look at the "alter user" command in the old 9i documentation, you’ll see this:
DEFAULT ROLE Clause
Specify the roles granted by default to the user at logon. This clause can contain only roles that have been granted directly to the user with a
GRANT statement. You cannot use the
ROLE clause to enable:
- Roles not granted to the user
- Roles granted through other roles
- Roles managed by an external (more...)
My mate Scott Wesley, whose specialty is Apex, is currently at Kscope having the time of his life (well, I hope so ). He tweeted this picture last night of his conference badge, mainly about the “I love Apex” buttons, but something else struck me.
Take a look at the last two ribbons attached to his badge. I’ve known Scott for many years, and was even fortunate enough be a mentor (more...)
photo by Tom Woodward
Summary of responses to questions from Solarwinds #datachat back in the fall.
1. Why do performance issues happen?
Performance issues happen mainly because of bad design. Performance issues occasionally happen because of hardware undersizing (IO, CPU, Memory, Network) but that’s the 20 (or less) of 80/20.
At IOUG a last year someone tweeted out a slide that said 80% of performance problems were from IO and Kevin Closson tweeted the other 80% are (more...)
It’s that time of year again; Kscope time, and I’m sure you are as excited as we are. You are most likely spending every moment of your free time reading the never-ending list of sessions trying to decide which ones to attend. Although there are over 300 to choose from, it’s time to bite the bullet and make decisions, because schedules must be made. To help you on your way, Mia, AuraPlayer’s CEO, has compiled a (more...)
I’m still working on resolving the issues caused by bug 13914613.
Oracle support recommended that we apply a parameter change to resolve the issue but that change requires us to bounce the database and I was looking for a resolution that does not need a bounce. The bug caused very bad shared pool latch waits when the automatic memory management feature of our 22.214.171.124 database expanded the shared pool. Oracle support recommending setting _enable_shared_pool_durations=false (more...)
In this blogpost I’ll try to explain on a very basic level what functional programming (FP) is about. look at is as an introduction to the amazing world of FP. FP is already here for quite a few decades. It was mostly used in the academic world and specialized industries. Since the coming of Scala http://www.scala-lang.org, FP became more and more mainstream.
So what is functional programming?
(from Wikipedia http://en.wikipedia.org/wiki/Functional_programming) (more...)
I hacked together a query today that shows the overall I/O performance that a database is experiencing.
The output looks like this:
End snapshot time number of IOs ave IO time (ms) ave IO size (bytes)
------------------- ------------- ---------------- -------------------
2015-06-15 15:00:59 359254 20 711636
2015-06-15 16:00:59 805884 16 793033
2015-06-15 17:00:13 516576 13 472478
2015-06-15 18:00:27 471098 6 123565
2015-06-15 19:00:41 201820 9 294858
2015-06-15 20:00:55 117887 5 158778
2015-06-15 21:00:09 85629 1 79129
After the last 16 years in the contracting and consulting world, for dozens of clients in Australia and other countries around the world, its time for a change of direction. Whilst doing work with Oracle systems has always been (and continues to be) rewarding, I realised that a lot of the motivation for being at client sites was the sharing of information with developers and DBA’s at those clients so they could get the (more...)
For almost as long as I can remember, the optimizer has had a nifty little trick when you (in effect) try to combine two different usage models within a single SQL. To explain that, I’m referring to the common scenario of: "If a bind value is provided by the caller, then use it, otherwise it shouldn’t limit the result set. So we commonly see queries like:
where COL1 = (more...)
The past few weeks were dedicated to the useful array methods. However these methods have been implemented in ECMAScript 5 and are therefore not available in older browsers such as IE8 and sometimes we have to support legacy browsers.
Oracle support says we have hit bug 13914613. Here is what our wait events looked like in an AWR report:
Top 5 Timed Foreground Events
||Avg wait (ms)
||% DB time
|latch: shared pool
|latch: row cache objects
|db file sequential read
|library cache: mutex X
Recently I used DBMS_RESOURCE_MANAGER.calibrate_io to measure disk I/O performance using a call like this:
DBMS_RESOURCE_MANAGER.calibrate_io (num_physical_disks => 10,
max_latency => 20,
max_iops => l_iops,
max_mbps => l_mbps,
actual_latency => l_latency);
DBMS_OUTPUT.put_line('Max IOPS = ' || l_iops);
DBMS_OUTPUT.put_line('Max MBPS = ' || l_mbps);
DBMS_OUTPUT.put_line('Latency = ' || l_latency);
Using this call I have a surprising result. This test returns very different results when (more...)
I’ve been using VMware Fusion on my Mac but it costs about $60. Not that much but Virtualbox is free, so I also have Virtualbox as well.
For my VMs I use DHCP and this has caused some problems but mainly on Virtualbox. With VMware Fusion (and VMware Workstation) everything works fine.
With VMware, under “Edit Hardware Settings” then “Network Adaptor” I just set the network
- Mac: “Share with MAC”
- PC: NAT
This causes (more...)
The past weeks we dived in the wonderful world of array methods. Previously we already discussed forEach, filter, some and every, and map. Today we’ll take a look at the reduce method. While being extremely useful, its concept can be hard to grasp.
Also known as fold (in this case foldLeft) in other functional programming languages, reduce kan be used to combine all elements of an array into one single return value. That return (more...)
In pre-12c database releases, VARCHAR2, NVARCHAR2 data types were limited to 4000 bytes and RAW data type was limited to 2000 bytes. If there is a need to store more data in VARCHAR2 column, you can in 12c after setting the parameter MAX_STRING_SIZE to EXTENDED. With setting MAX_STRING_SIZE to EXTENDED, you can store up to […]