Wednesday, 22 February 2023
With Oracle RDBMS: Everything is SQL
Tuesday, 11 October 2022
You Should Speak at Conferences. #JoelKallmanDay
Conferences are Great - you should go (and Speak)
Instead of some geek-content, This is a call-to-speakers. The trigger for this post is two-fold: 1) the Joel-Kallman-Day inititative from Tim Hall, and 2) the fact that some IT conferences are still searching for relevant, new/local speakers.
So..
Conferences are Great, and You Should go + Speak!
And the best way to get to a conference is ... to do a Presentation.
Especially when I had to "ask my boss", it would always Greatly help if I could say: "I'm Speaking at XYZ, can you please budget the trip+time" (maybe more on that later).
So... What to Speak about?
Here is one of my best 3-step tricks to find a topic:
1. Find the biggest Obstacle you had at work in the last 12 months (e.g. learning python, creating K8s pods, Designing your Datamodel, arguing with your architect..). That can be your Topic.
2. Now write down what you want to Tell / Warn / Laugh to others about (The Quirks of Python, Yaml/Ansible-syntax, how to manipulate the architect). This will be your "Message".
3. Turn that into slides notably with a clear Conclusion. Give your listeners a "Take Home Lesson" at the end. (I do max 25 slides, but your style may vary).
There you are!
My reasoning behind this is multiple:
First, you will be a better speaker if you have a grain of Passion, a Mission. Something you Really Want to Communicate. And even better: something you have Experienced Yourself.
Secondly, you probably were not the only one with whatever challenge you had. Others will have been in the same situation and will recognise it. Those will be your Audience, and they will spark the discussion afterwards.
Thirdly: Because you are "On a Mission" to convey your learnings, you will be better motivated, and you will more easily overcome any stage-fright your may have.
There is more to speaking, but you will learn in the process of Doing!
A good source of information is also the MASH program (link). And there are the practicalities, things like:
Avoid boring slides (important, but less important than Your Mission)
How to work towards the conclusion (important, but less important than your intrinsic Motivation)
Use of Clip-art and moderate humour (important, not Essential to your Message)
How to determine your Tempo, Timing. Your first presentation will run-over, that is normal, and not a problem: Organizers will keep-time, or not. And getting late to other talks is (partly) the problem of the audience. Truly Motivated listeners may even remain behind, and harass you with Questions. The secret to not run over is.. a) do the presentation a few times, and b) remove irrelevant content (this can be hard - especially if you want to tell a "whole story")
Note: running-over is Totally Impolite because it creates problems for audience, for other speakers, and for organizers. If an experienced speaker goes over time, you can tell him off. But every beginner-speaker should be allowed to run-over (once, just once :-) ). If a "sales-pitch-speaker" runs over time: Ban Him (that is 99% of cases a him) and Shame his Product.
Oh, and about that food+drink: After the event, tell the organizers how good or bad their catering was. Some will learn, some wont.
Now go out and Enjoy!
footnote: Another reason to Re-Shout this message is that, notably in the Ora-sphere, and in some of the dev-rel oriented conferences, the nr of speakers seems to decrease,` and I see a lot of "habitués" and company-sponsored professional Dev-Rel ppl (pre-sales in disguise) repeating their messages. Some are Great People, and I love to discuss with them, but some others are ...
foot-footnote: (deleted, too Rant-ty, NSFW)
Thursday, 10 October 2019
OGB Appreciation Day: Efficiency with Partitions.
What I like best about Partitioning is the "life cycle feature". You can remove large amounts of (old) data with a single statement in the blink of an eye, and with very little Redo incurred.
If you want, you can also Add or Move data around in the blink of an eye as well.
Google for :
Alter table Drop Partition
Alter table Add Partition
Use Partitioning for Fast and Efficient Data Manipulation (notably Deletes)
The main "successful" use I've seen from partitioning is this: (Re)Moving large amounts of data in the blink of an eye, without incurring Undo+Redo for the total amount of data, and without locking.
Very little Redo (it is a DDL operation, not DML)
No Locking.
No Index Rebuilding (e.g. only local indexes).
Fast!
Efficient!
Your Mission, should you choose to accept it:
Verify this for yourself!
Here is your homework.
- Create a partitioned table with at least 2 partitions.
- Insert data into both partitions, at least 100K records (and commit)
- generate statistics, verify the approx row-counts in each partition.
- set Autotrace on
- set timing on
- Delete all the data in 1 partition with a "Delete from ... Where ..."
- Note the time and the amount of Redo involved.
- commit (just dont forget...)
- Re-generate stats and verify the row-counts, your data is deleted ?
Now for the Partition-operation...
- Re-create the same table, same partitions, with same data (commit!)
- generate + verify stats...
- Set autotrace + timing again
- Drop a partition: Alter table ... drop partition ;
- note: the implicit commit... this is a DDL operation.
- Note the time and the amount of redo.
- Verify the data is gone.. (trust-no-1....)
QED.
Now how cool is that?
And so Simple...
Go ahead, do it, and et us know the differences in Time and Redo in the comments...
My (not quite conform) example script is here
And if You can Do this:
Congratulations! You are on your way to Master the use of Partitioning.
Now, there is a lot more to Partitioning, of course.
My opinion in Short, rather simplified statements.
- You need to "design" partitioning from the start. A "bolt on" to an existing data-model will 99/100 fail.
- Use (only) automatic interval partitioning, prevent yourself from having to pre-create partitions regularly (you will forget...)
- Every SQL to Ever Access that table needs a partition-key in the where-clause.
- Avoid global indexes if possible.
NB2: Kuddos to Hermann (dot) Baer (at oracle dot com), a.ka. @sdjh2000 for constantly improving the capabilities of the partitioning option. Good Work on a Great Feature.
That's all for now folks.
With a Large Kuddos to Tim Hall (@oraclebase) for the Yearly OGB-appreciation day (link). Makes me blog at least once per year...
OGB-appreciation day was f.k.a. the OTN-Appreciation-Day,
re-branded as the ODC-Appreciation day,
re-branded as the OGB-Appreciation Day.
Who knows what next year will bring - Oracle Cloud Dev-Ops (OCD) Appreciation day?
And if you got this far, a word of warning:
Do Not Ever Make Fun of Oracle Buzzwords or Hashtags.
Humour and Oracle only work if it is Oracle-Approved humour.
(mandatory buzzword compliant content...)
Remember: We all work for Larry, Only some of us dont know it yet.
CU at some event, at some webinar or next year on this blog-event.
Hashtag : #ThanksOGB
Wednesday, 10 October 2018
ODC Appreciation Day..
This year, I'll pick Oracle Golden Gate
Short story: if you need to replicate data, GG is one of your easy choices.
Slightly Longer story:
I was lucky: customer choose GG to replicate data for one country to another in major move of IT systems and data (yes, to the cloud, to those large Remote Database Systems in AWSome land...).
GG helped us run in sync for a number of weeks, and the final cutover was a breeze.
GG also (sort of) kept open a replica back to our original datacenter, so management felt they could potentially chicken out and move back to the old provider.
The whole process was easier than I expected,
and a Large Tip of the Hat to Golden Gate is appropriate.
(the issues, the problems, the quirks.. Later)
The reason for this post Tim Hall
https://oracle-base.com/blog/2018/10/11/odc-appreciation-day-effective-evangelism-staying-positive/
The link to Golden Gate (Hi Bobby!)
https://www.oracle.com/middleware/data-integration/goldengate/
Friday, 5 January 2018
What is SmartDB
By following logical Reasoning, with the knowledge and technology available, we can explain how each requirement is addressed in what is the most efficient way known to us.
To finalize, we create a list of Recommendations (if not: Directives!), on how to implement SmartDB. The recommendations should, at first, not be connected to any particular database or programming language. Those details can be filled in later. Each "vendor" should do this for his own product, and hopefully stay within the concept of SmartDB.
I am that old. I recall how this Oracle Flexible Architecture was created and "explained" (OFA was the mother of all Oracle Standards - link needed).
Tuesday, 2 January 2018
Quick notes on SmartDB (temporary post)
Smart-DB is, in my view:
A concept where an IT system is built In the DataBase.
Constructed so that most of the work (and processing, and maintenance)
is done IN THE DATABASE.
This makes for a single point where all (99%) of the logic can be found, and where all (99%) of the code can be found and maintained.
Maximum logic/work/processing on the DB.
Minimum processing in front-end-tier (browser?).
Eliminate other layers and components.
Key point, in my view: Eliminate layers, eliminate components, and eliminate sources of problems.
note: SmartDB is more then just using PL/SQL or pl/pgsql, but those "stored procedure" constructs are an essential part of the SmartDB concept. Hence the focus often shifts to these tools.
Keep in mind the overall goal:
A Working and Sustainable IT system (to process data for some end-user-business purpose).
Data and Data-model tends to survive the tools and even the "processes" of the system.
SmartDB methodology, as i was taught years ago, would go more or less like this....
- define the goal of your system: why will this system exist and who are the users, “consumers” ?
Use/sale of Tools or Products is not a goal
Use/sale of Cloud is not a goal
Use/sale of "big data" is not a goal.
Use/sale of UX / Microservices / ClientServer / Cobol / R-sharp / Dockernetis / etc... is not a goal...


