We all want more experience. The fastest way to get it is by helping solve
other people's problems.
Read the full post at www.gennick.com/database.
We all want more experience. The fastest way to get it is by helping solve other people's problems. I'm talking here of online forums and similar venues in which you can grow in skill by taking your current knowledge and applying it to scenarios others are struggling in. Because those others will present with far more problems in a shorter period of time than you could ever cause or encounter on your own.
Here's a snippet from a recent email I received offering some paid work:
"We would like to have someone whom we can contact who can assist us on occasion with Squarespace and are wondering how much you would charge for occasional help?"
Nice! Isn't it?
Here's another, asking my help on a project:
In the previous post I threw out a couple of options for addressing the requirement to transfer data from one table to another (“cut and paste” rather than just “copy”) without running into odd inconsistency errors. This triggered of a wonderful comment trail of alternatives based on how large the volume might be, how relaxed the concurrency requirements might be, and so on.
A comment by SydOracle1 picked up on my failure to get Oracle working with the “as of SCN” syntax because it kept reporting ORA-08187 and suggested a straightforward use of the VERSIONS strategy. I thought it was quite surprising that this could work given that “as of SCN” didn’t, so I whipped up a quick test to check it – adding a couple of little refinements to the supplied sample – and it worked.
The challenge of coding, is that you sometimes need to be aware of what can be impacted outside of your code to make it appear guilty.
Many of the questions that appear on OTN are deceptively simple until you start thinking carefully about the implications; one such showed up a little while ago:
What i want to do is to delete rows from table where it matches condition upper(CATEGORY_DESCRIPTION) like ‘%BOOK%’.
At the same time i want these rows to be inserted into other table.
The first problem is this: how carefully does the requirement need to be stated before you can decide how to address it? Trying to imagine awkward scenarios, or boundary conditions, can help to clarify the issue.
If you delete before you insert, how do you find the data to insert ?
I had a great time at DOAG 2016. It’s one of the best run conferences I’ve been to! I did a quick cameo during the keynote to talk about performance in Oracle’s cloud. Nothing like being on stage with a guy wearing a tie. :) Thanks Andrew for inviting me to say a few words.
That was fun!
Then I did a couple of technical talks.
One of the things you can do with Pin, is profile memory access. Profiling memory access using the pin tool ‘pinatrace’ is done in the following way:
$ cd ~/pin/pin-3.0-76991-gcc-linux $ ./pin -pid 12284 -t source/tools/SimpleExamples/obj-intel64/pinatrace.so
The pid is a pid of an oracle database foreground process. Now execute something in the session you attached pin to and you find the ‘pinatrace’ output in $ORACLE_HOME/dbs:
This blogpost is an introduction to Intel’s Pin dynamic instrumentation framework. Pin and the pintools were brought to my attention by Mahmoud Hatem in his blogpost Tracing Memory access of an oracle process: Intel PinTools. The Pin framework provides an API that abstracts instruction-set specifics (on the CPU layer). Because this is a dynamic binary instrumentation tool, it requires no recompiling of source code. This means we can use it with programs like the Oracle database executable.
The Pin framework download comes with a set of pre-created tools called ‘Pintools’. Some of these tools are really useful for Oracle investigation and research.
This blogpost is about the Oracle redo log structures and redo efficiency in modern Oracle databases. Actually, a lot of subtle things changed surrounding redo (starting from Oracle 10 actually) which have gone fairly unnoticed. One thing the changes have gone unnoticed for is the Oracle documentation, the description of redo in it is an accurate description for Oracle 9, not how it is working in Oracle 10 or today in Oracle 126.96.36.199.
My test environment is a virtual machine with Oracle Linux 7.2 and Oracle 188.8.131.52.161018, and a “bare metal” server running Oracle Linux 6.7 and Oracle 184.108.40.206.160419. Versions are important, as things can change between versions.
OK, so I’m all over the map, (technology wise) right now. One day I’m working with data masking on Oracle, the next it’s SQL Server or MySQL, and the next its DB2.