Advertisement · 728 × 90

Posts by Philipp Salvisberg

10 Relational Database Mistakes, Ranked
10 Relational Database Mistakes, Ranked YouTube video by Decomplexify

youtube.com/watch?v=mD1g...
My favorites: #10 and #1.
But all are spot on.

1 day ago 3 2 1 0
Preview
Enforcing Acyclic Hierarchies With SQL Assertions - Philipp Salvisberg's Blog Explore SQL Assertions in Oracle AI Database and learn how to enforce hierarchy integrity by detecting cycles with declarative constraints.

Loops in hierarchical data are a pain

Easy to add
Hard to prevent

@salvis.com shows Oracle AI Database 23.26.1 gives a simple solution

Create an assertion limiting the maximum depth to N

Do this by joining the hierarchy N+1 times in the assertion

4 days ago 1 1 0 0
Preview
Mixing APEX Universal Theme Colors with the mix-color function Lighten or darken APEX Universal Theme colors with the mix-color function to create custom colors for your APEX applications.

New blog post on how to use the color mix function to create new colors that are derived from the Universal Theme colors.
#orclAPEX

hartenfeller.dev/blog/apex-mi...

5 days ago 5 2 0 0

Congrats to the winners of the #OracleACE assertions bounty!

1st Enforcing Acyclic Hierarchies With Assertions @salvis.com
2nd Temporal Assertions @anthony-harper.bsky.social
3rd Assertions for data integrity on a less-than-ideal data model @kibeha.dk

Details at blogs.oracle.com/sql/assertio...

1 week ago 5 2 0 1
Post image

Your Java CLI runs locally.

But can someone install it with one command?

Here’s how to ship it properly:
Maven → Fat JAR → JReleaser → GitHub Release → JBang install

End-to-end tutorial:
buff.ly/TaWDWkK

#Java #DevTools #OpenSource #CLI

2 weeks ago 10 5 0 1
Post image

Reasons why SELECT * is bad for SQL performance:

An old blog (with Oracle-specific examples) with a whole range of reasons why. It's not only about network traffic and SQL plan execution, but client side processing and memory usage as well.

tanelpoder.com/posts/reason...

2 weeks ago 21 5 4 2

I actually considered taking my portable monitor with me.

2 weeks ago 1 0 0 0
Advertisement

Started almost 10 minutes late due to projector issues. They were solved for the next session. Luckily most participants had their laptops ready so I could share my screen via an adhoc Teams conference. Was fun.

2 weeks ago 4 0 1 0
Post image

Great to see Mister #Oracle 26ai Autoupgrade @dohdatabase.com at the @soug.ch Swiss Oracle Group Meeting in #Switzerland #Bern // @salvis.com - it‘s all about community! @oracleace.bsky.social

2 weeks ago 10 1 1 0
Preview
Using SQL Assertions to Enforce Temporal Data Integrity Introduction More than twelve years ago, I described the multi-temporal features of Oracle Database in this blog post. In the conclusion, I wrote that I missed a temporal DML API, temporal integrity c...

How do you enforce temporal data integrity?

With SQL Assertions in Oracle AI Database, we can now implement constraints such as:

✅ Non-overlapping validity periods
✅ Temporal referential integrity

Here's a practical example using an extended DEPT-EMP model.

www.salvis.com/blog/2026/03...

3 weeks ago 5 3 0 0
Preview
Assertions for data integrity on a less-than-ideal data model 25-30 years ago I worked a lot with the Danish developed ERP system called Concorde XAL. It ran on top of a database (choice of several, mos...

Assertions for data integrity on a less-than-ideal data model.

www.kibeha.dk/2026/03/asse...

Or "How I could have used assertions 25 years ago when I worked with Concorde XAL"...

#OrclDB #SQL #Assertions #OracleACE

3 weeks ago 7 5 2 1

OK, I'll consider submitting something more towards the end of the period.

1 month ago 1 0 0 0
SQL statement:
select use_cases from assertions where creator = 'Oracle ACE'
order by real_world_applicability + complexity + novelty desc
fetch first 3 rows only

SQL statement: select use_cases from assertions where creator = 'Oracle ACE' order by real_world_applicability + complexity + novelty desc fetch first 3 rows only

We're still looking for interesting assertions use cases

Just over two weeks left for #OracleACE to get your entries in

Bounty closes 15th March

For full details read blogs.oracle.com/sql/assertio...

1 month ago 4 3 2 0

You've got one from me. Do you want more?

1 month ago 0 0 1 0

I added a variant with ELK Layout, handDrawn Look, neutral Theme. Unfortunatelly ELK layout is not supported by GitHub. But in VS Code it works.

1 month ago 2 0 0 0
Advertisement
Preview
ERD example with Mermaid ERD example with Mermaid. GitHub Gist: instantly share code, notes, and snippets.

see gist.github.com/PhilippSalvi...

You can skip columns entirly, keep just PK/FK columns or PK/FK columns with some important columns.

1 month ago 3 1 1 0

I usually start with pencil and paper. For small models, I like Mermaid: text-only and ideal for embedding in Markdown. For larger models, where I want to control the layout, I still use SQL Developer Data Modeler where I can distinguish between ERD and server models.

1 month ago 1 0 1 0
Preview
Enforcing Acyclic Hierarchies With SQL Assertions Introduction Referential integrity constraints have been available since version 7 of the Oracle Database. While these constraints ensure that referenced rows exist, they cannot express more complex i...

Hierarchies should be trees and not loops.

Learn how SQL Assertions in Oracle AI Database 23.26.1 can help prevent cycles in hierarchical data.

www.salvis.com/blog/2026/02...

1 month ago 8 3 0 0
Preview
Assertions used in arc-relationship TL;DR: A simple use-case for SQL-Assertions: Adding a data-related constraint to an arc-relation. Demo using the Emp-Dept schema. Summary u...

SQL-Assertions...
I could not resist experimenting.

simpleoracledba.blogspot.com/2026/02/draf...

1 month ago 7 3 0 0

The recording for this session is now avaiable

www.youtube.com/watch?v=ulLy...

1 month ago 2 1 0 0

Java CLIs in 2026:

- scaffold with PicoCLI picocli.info
- style with Tamboui tamboui.dev
- launch with JBang www.jbang.dev
- release with JReleaser jreleaser.org

1 month ago 15 7 0 0

After a decade of planning, editing, delays due to my own busyness, further editing and waiting for 23c, the release of 26ai and my pre-retirement finally unblocked the situation. I have agreed with Apress to publish the third edition of Troubleshooting Oracle Performance in 2026. #TOP3

1 month ago 32 5 7 0

Good news. I'm looking forward to the update!

1 month ago 1 0 0 0

Finally! Very excited that GitHub is now letting us have controls over who can open PRs on repos.

https://github.blog/chan

1 month ago 17 2 0 0
Preview
Arch Linux (Omarchy) — 8 Months Later: The Good, the Bad, and the Fixable After 15 years on macOS, I switched to Arch Linux with Omarchy. 8 months in, here's what replaced my Apple apps, which hardware I chose, and what actually broke — and how I fixed it.

I wrote part 2 about what I learned from eight months with Omarchy, especially after switching from macOS after 15 years.

I documented which apps I use now on Linux compared to before. Maybe it helps someone here, too. www.ssp.sh/blog/linux-...

1 month ago 9 1 4 1
Advertisement
Post image

Another successful Saturday morning build... :)

#Oracle #AI #Database #26ai #Free #Docker

1 month ago 7 1 0 0
Examples of valid and invalid time periods when checking for overlapping ranges with respect to a reference period

Examples of valid and invalid time periods when checking for overlapping ranges with respect to a reference period

Preventing overlapping start-end dates in history tables is a common challenge

Oracle AI Database gives you two ways to do this:

Guarantee consecutive ranges with foreign keys
Stop overlapping ranges with assertions

Find out how in my latest post blogs.oracle.com/sql/how-to-s...

1 month ago 6 1 1 0
Rules

Interested in the example? See dblinter.app/ords/r/dblin...

1 month ago 0 0 0 0
ORA-08673 - Database Error Messages This page describes the ora-08673 Oracle Database Error Messages, also known as ora08673, ora-8673 or ora8673

Playing with OracleDB assertions. Learning new error messages.

ORA-08673: Equijoin "E"."DEPARTMENT_ID"="D"."DEPARTMENT_ID" found does not meet the criteria to do a FAST validation.

Good explanation on docs.oracle.com/en/error-hel...

1 month ago 1 1 1 0
Cross table constraints with SQL assertions
Cross table constraints with SQL assertions YouTube video by Oracle Developers

www.youtube.com/watch?v=dNvI...

2 months ago 7 4 0 0