Sign in

SQLDaily

@sqldaily.bsky.social
346 followers 3 following 434 posts

Daily Oracle SQL tips from the Oracle Developer Advocates for SQL

PostsRepliesMedia
SQLDaily @sqldaily.bsky.social · 14h
Get a #JSON description of Oracle Database tables, views, and indexes with DBMS_DEVELOPER.GET_METADATA This is a simple and fast way to get their details Control the detail with the level parameter BASIC => Essential info TYPICAL => Standard ALL => Comprehensive
dbms_developer.get_metadata (23.7 backported to 19.28)

Get a JSON object describing a TABLE, VIEW or INDEX

Example of the metadata returned for a table
010
SQLDaily @sqldaily.bsky.social · 01/10/2026
Running Oracle Databases older than 19c? As @mikedietrichde.com says You must upgrade to 19c or 26ai. Period. ... If not, this is dangerous There are many CVEs fixed recently LLMs enable anyone to build exploits without any coding knowledge Keep your data safe! buff.ly/PJu13pB
buff.ly
Patching recommendations: Which route is the best? RUs, MRPs, n-1??
Be aware, this is a longer Monday blog post. Upfront, I am not the master of patching. And I clearly see that many of you struggle with the current situation. Not only regarding Oracle software but…
000
SQLDaily @sqldaily.bsky.social · 30/09/2026
Primary keys have the these properties: UNIQUE NOT NULL IMMUTABLE You can define them using Natural keys => external unique identifiers Surrogate keys => generated values @vladmihalcea.bsky.social discusses the pros and cons of each buff.ly/USEnDa0 What's your take?
buff.ly
A beginner's guide to natural and surrogate database keys - Vlad Mihalcea
Types of primary keys All database tables must have one primary key column. The primary key uniquely identifies a row within a table therefore it’s bound by the following constraints: UNIQUE NOT NULL…
011
SQLDaily @sqldaily.bsky.social · 29/09/2026
NULL indicates the absence of a value in #SQL It's used for many reasons, so you need to learn its quirks @winand.at covers Comparisons Mapping to and from null Expressions propagation Aggregate functions Grouping Sorting Unique constraints buff.ly/V6S9wAL
buff.ly
Modern SQL: NULL — purpose, comparisons, NULL in expressions, mapping to/from NULL
SQL’s NULL indicates absent data. NULL propagates through expressions and needs distinct comparison operators.
021
SQLDaily @sqldaily.bsky.social · 28/09/2026
Define what kind of JSON values you can store in Oracle AI Database with: <col> JSON ( OBJECT | ARRAY | SCALAR ) You can also set The maximum size in bytes The max number of elements in an array The type (NUMBER, DATE, ...) of array elements or scalar values Added in RU 23.8
JSON type modifier (23.8)

Restrict JSON columns to only store OBJECT, ARRAY, or SCALAR values

Example creating a table with columns to store only JSON objects, arrays, or scalars
000
SQLDaily @sqldaily.bsky.social · 24/09/2026
Talk to your Oracle Databases via LLMs with the SQLcl MCP server But how do you do this securely? Rafal Grzegorczyk shows you how to Create a user with the DB_DEVELOPER_ROLE Grant SELECT privileges on the target schema Configure SQLcl access level buff.ly/1rGG8gK
buff.ly
How to securely connect MCP to the database (using Oracle DB 26AI and SQLcl) ?
What should we do to be sure of what AI can do using the SQLcl MCP server and what data is accessible to it? Are there any extra security precautions we could take in case AI go crazy? That's exactly
000
SQLDaily @sqldaily.bsky.social · 23/09/2026
Oracle constraints can be in these states ENABLE VALIDATE => all data is valid ENABLE NOVALIDATE => existing data may be invalid DISABLE NOVALIDATE => all data may be invalid DISABLE VALIDATE => all data is valid, new changes blocked! Harris Fungwi demos buff.ly/l1Q292U
buff.ly
About Constraint States -
Constraint states affect the enforcement and data validation properties of constraints in a Oracle Database. See examples of each of these.
020
SQLDaily @sqldaily.bsky.social · 22/09/2026
Want to see exactly what's going on in an Oracle #SQL query calling a view? Pass it to DBMS_UTILITY.EXPAND_SQL_TEXT This merges view queries into the main select, giving you the complete statement @connormcd.bsky.social made a script to make calling it simple buff.ly/IXMBiuq
buff.ly
Tip: Expanding a SQL statement
In all recent versions of the database you can call DBMS_UTILITY.EXPAND_SQL_TEXT to get the “true” version of a SQL that the database will run. It takes your SQL as input and returns a …
020
SQLDaily @sqldaily.bsky.social · 21/09/2026
Starting in release 23.26.2, you can nest WITH clauses/CTEs inside each other in Oracle #SQL: WITH cte1 AS ( WITH cte2 AS ( WITH cte3 AS ( ... ) SELECT * FROM cte3 ) SELECT * FROM cte2 ) SELECT * FROM cte1
Nested WITH clause (23.26.2)

Use the WITH clause inside WITH; can join to columns defined in ancestor WITH clauses

Query to find the total sal/department of those who earn more than the first two people hired in their department
020
SQLDaily @sqldaily.bsky.social · 17/09/2026
Struggling to streamline your Oracle Database & #orclAPEX changes and deployments? Check out SQLcl Projects This feature of Oracle SQLcl works with Git to capture changes and build releases Get started with this cheat sheet by @bsky-matt.0code.io buff.ly/OJUUNp4
buff.ly
SQLcl Projects Reference
This is a Quick Reference / Cheat Sheet take your pick. SQLcl Projects is a feature in Oracle's SQLcl tool that helps manage and automate database changes and deployments for Oracle Database and APEX…
000
SQLDaily @sqldaily.bsky.social · 16/09/2026
There are many ways you can define STATUS columns in Oracle SQL e.g. mark a row COMPLETE you could store a Descriptive string Single character Numeric value NULL value Boolean flag @chandlerdba.bsky.social covers storage and performance considerations for each buff.ly/a4ZjsqH
buff.ly
“Status” columns in Oracle
What’s the best way to represent status/flag low cardinality columns in Oracle
021
SQLDaily @sqldaily.bsky.social · 15/09/2026
Protect data at the source with Oracle Deep Data Security This uses simple #SQL to define End users in the app Data roles these users have Data grants controlling which rows and columns they can see @anders-swanson.bsky.social explains buff.ly/MPyu01O
buff.ly
Deep Data Security: row and column level RBAC - andersswanson.dev
Implement row and column level RBAC with Deep Data Security: flexible, server-side security context with user grants.
021
SQLDaily @sqldaily.bsky.social · 14/09/2026
Compiling PL/SQL packages with global vars causes: ORA-04068: existing state of packages has been discarded in other sessions accessing the package Even if the functions don't rely on state! Avoid this by declaring packages RESETTABLE To auto-rerun package initialization
PL/SQL RESETTABLE clause (23.26.0)

Add resettable to avoid ORA-04068 errors after compiling PL/SQL with state: if it's safe to do so!

Example showing how recompiling package with global variables causes ORA-4068 errors in other sessions

Then changing the package to RESETTABLE avoids this
000
SQLDaily @sqldaily.bsky.social · 10/09/2026
There are many ways to find the difference between two datetimes in Oracle #SQL 23.26.1 adds another: DATEDIFF ( <unit>, <dt1>, <dt2> ) Despite the name, this this counts the <unit> boundaries crossed from dt1 to dt2 @connormcd.bsky.social explores the methods buff.ly/4Xd6f15
buff.ly
Deciphering Date Differences with DATEDIFF
(Try saying that 5 times quickly in a row) :-) There’s an old saying that’s gone around for years in IT circles which is “If you have a text parsing problem you can use a regular …
000
SQLDaily @sqldaily.bsky.social · 09/09/2026
Detect unwanted join duplicates in Oracle #SQL with: left_tab JOIN TO ONE ( right_tab ON ... ) If the result repeats any row from left_tab, the database raises an error Added in 23.26.2, @andrejsql.bsky.social highlights this and other differences to classic joins buff.ly/JrjASBB
buff.ly
Oracle 26ai: A Closer Look at JOIN TO ONE
A closer look at Oracle 26ai JOIN TO ONE: what the new syntax promises, how it works under the hood, and what it means for data warehouses.
010
SQLDaily @sqldaily.bsky.social · 08/09/2026
Want to see what happens when you run a query in Oracle AI Database? @ora600pl.bsky.social has built OraCity - a visualisation of the process as a 3D city Follow the steps the query goes through from parsing, to planning, to running through its plan buff.ly/8Hfog2x
buff.ly
OraCity · Oracle internals in motion
OraCity is an evidence-led interactive model of Oracle Database internals.
020
SQLDaily @sqldaily.bsky.social · 07/09/2026
Struggling to get the logic to add/subtract durations to datetime values right in Oracle #SQL? Release 23.26.3 simplifies this with: DATEADD ( <unit>, <value>, <datetime> ) This function works for: - DATEs and TIMESTAMPs - Any time unit from YEARs right down to NANOSECONDs
DATEADD (23.26.3)

Add or subtract time units from years down to nanoseconds from datetime values

Example adding/subtracting units from milliseconds up to years
010
SQLDaily @sqldaily.bsky.social · 03/09/2026
Want a detailed visual report of Oracle Database activity? That you can save locally for later reference or sharing? @chandlerdba.bsky.social shows how you can do it by calling DBMS_PERF.REPORT_PERFHUB Note: it requires and Oracle Diagnostics Pack license to run buff.ly/h9dEueL
buff.ly
Performance Report – REPORT_PERFHUB
Generating a little used but amazing performance report from Oracle…
031
SQLDaily @sqldaily.bsky.social · 02/09/2026
Calculating a running total and moving average with the same window in #SQL? The naive way duplicates the PARTITION BY and ORDER BY clauses Better: define them once in the WINDOW SELECT SUM OVER w, AVG OVER w ... WINDOW w AS ( ... ) Harris Fungwi buff.ly/JfCQ5VE
buff.ly
The WINDOW Clause in Oracle SQL -
Background One of the best resources for anyone who’s into oracle tech is this site called the devgym. It contains games, quizzes, classes and workouts all designed to help build developers’ Oracle…
010
SQLDaily @sqldaily.bsky.social · 01/09/2026
Change an Oracle table to be insert-only with ALTER TABLE ... BECOME IMMUTABLE NO DROP ... NO DELETE ... This then blocks UPDATEs to the rows You can only remove - rows older than the NO DELETE setting - the table if there's no new rows since the NO DROP setting
Change table to IMMUTABLE (23.26.2)

Convert a table to insert-only

Example:

create table t ( c1 int );
insert into t values ( 1 );
commit;
-- Make table immutable to prevent UPDATE/DELETE
alter table t 
  become immutable 
  no drop until 0 days idle
  no delete until 16 days after insert
  use ( systimestamp ) for row creation time
  version v2;

update t set c1 = 0;
ORA-05715: operation not allowed on the blockchain or immutable tabledelete t;
ORA-05715: operation not allowed on the blockchain or immutable table
000
SQLDaily @sqldaily.bsky.social · 31/07/2026
We're taking a break from the SQL tips over the summer UPDATE sql_tips SET next_post = DATE'2026-09-01' See you in September!
010
SQLDaily @sqldaily.bsky.social · 30/07/2026
Ensure AI agents only run trusted queries with #SQL Reports These use Oracle Cloud Infrastructure Database Tools MCP servers @icodealot.com has built a guide showing you how to: Develop the Query Create the SQL Report Create the Toolset Test the SQL Report
buff.ly
Build Relational Guardrails for Agents with SQL Reports - ICODEALOT
In this post we will look at one approach to bringing constraints to AI agents that interact with a database running in the cloud. We will take on the role of an MCP server administrator or developer…
140
SQLDaily @sqldaily.bsky.social · 29/07/2026
There are many ways you can write top-n/group with ties queries @lukaseder.bsky.social compares joining subqueries LEFT JOIN to ( SELECT ... RANK() OVER ( PARTITION BY ... ORDER BY ... ) ) OUTER APPLY to ( SELECT ... ORDER BY ... FETCH FIRST N ROWS WITH TIES )
buff.ly
How to Write Efficient TOP N Queries in SQL
A very common type of SQL query is the TOP-N query, where we need the “TOP N” records ordered by some value, possibly per category. In this blog post, we’re going to look into a v…
010
SQLDaily @sqldaily.bsky.social · 28/07/2026
You can create enums in Oracle AI Database 26ai with CREATE DOMAIN color_e AS ENUM ( red, orange, ... ) This maps the names to values from 1 (red = 1, orange = 2, ...) @pdevisser.bsky.social shows how you can use these as Table columns Readable constants in SQL
buff.ly
Oracle 23ai, Domains, Enums and Where-Clauses.
TL;DR: In Oracle23ai, the DOMAIN type is a nice addition to implement more sophisticated Constraints. Someone suggested the DOMAIN of type ...
030
SQLDaily @sqldaily.bsky.social · 27/07/2026
Omit rows from the window function results with OVER ( ORDER BY ... EXCLUDE ... ) CURRENT ROW => this row GROUP => current row + others with same value TIES => others with the same value as the current row NONE => no rows (default) This enables you to skip duplicate values
New in 21c: Enhanced Analytic Functions (ISO SQL Standard)

Omit values from window function calculations with the SQL standard EXCLUDE clause
TIES = others with same value; GROUP = all with same value; CURRENT ROW = this row

Example showing how these work:

WITH rws ( n ) AS ( VALUES ( 1 ), ( 1 ), ( 2 ), ( 2 ), ( 3 ) )
SELECT n,
  SUM ( n ) OVER ( w ROWS UNBOUNDED PRECEDING EXCLUDE TIES ) ex_tie,
  SUM ( n ) OVER ( w ROWS UNBOUNDED PRECEDING EXCLUDE GROUP ) ex_grp,
  SUM ( n ) OVER ( w ROWS UNBOUNDED PRECEDING EXCLUDE CURRENT ROW ) ex_curr,
  SUM ( n ) OVER ( w ROWS UNBOUNDED PRECEDING EXCLUDE NO OTHERS ) ex_none
FROM rws WINDOW w AS ( ORDER BY n );
000
SQLDaily @sqldaily.bsky.social · 24/07/2026
With online stats gathering, Oracle AI Database captures stats when you use CREATE TABLE AS SELECT A direct path INSERT INTO ... SELECT into an empty table @andrejsql.bsky.social investigates its evolution And finds many restrictions are lifted 26ai
buff.ly
Online Statistics Gathering: Update 2024
Here is an overview of some improvements to Online Statistics Gathering in Oracle Releases 19c-23ai
021
SQLDaily @sqldaily.bsky.social · 23/07/2026
You can use assertions in Oracle AI Database to enforce temporal data integrity @salvis.com shows how to use these to: Prohibit overlapping periods Define temporal foreign keys => the parent row must be valid while the child is valid
buff.ly
Using SQL Assertions to Enforce Temporal Data Integrity - Philipp Salvisberg's Blog
Learn how SQL assertions enforce temporal integrity in Oracle AI Database by preventing overlaps and detecting gaps in temporal relationships.
021
SQLDaily @sqldaily.bsky.social · 22/07/2026
Turn natural language into #SQL on Oracle AI Database with SELECT AI <your query> But how do you ensure the SQL is "good"? Mark Hornick gives best practices: Add schema comments & annotations Assist joins with foreign keys Make views for common queries
buff.ly
000
SQLDaily @sqldaily.bsky.social · 21/07/2026
SELECT ... FOR UPDATE statements lock the rows you're querying If another process has these locked it must wait To get an instant error instead, use: SELECT ... FOR UPDATE NOWAIT @vladmihalcea.bsky.social shows how do this with JPA and Hibernate
buff.ly
The best way to use SQL NOWAIT - Vlad Mihalcea
Learn what is the best way to use the amazing SQL NOWAIT feature that allows us to avoid blocking when acquiring a row-level lock.
000
SQLDaily @sqldaily.bsky.social · 20/07/2026
Make named windows for analytic functions with the WINDOW clause: SELECT fn (...) OVER ( w1 ) ... WINDOW w1 AS ( ... ) This simplifies #SQL when many functions have the same OVER clause You can also chain window definitions: w1 AS ( ... ), w2 AS ( w1 ... ), w3 AS ( w2 ... )
WINDOW clause (ISO SQL Standard)

Reuse common window definitions by naming them in the SQL standard window_clause
Use in the OVER clause 

Example using defining windows for a splitting by department and sorting by hire date within a department
000
SQLDaily @sqldaily.bsky.social · 17/07/2026
The next version of the #SQL standard is in progress Peter Eisentraut reports on the features that have been accepted into the upcoming version QUALIFY INSERT BY NAME SELECT list EXCLUDE JOIN TO ONE Work in progress: Key joins buff.ly/cW1ZSlv
buff.ly
Waiting for SQL:202y: Stockholm (BMA) meeting report
The most recent meeting of ISO/IEC JTC1 SC32 WG3 “Database Languages” took place from the 15th to the 19th of June 2026 in Stockholm. “WG3”, as we call it, works on standardizing the database…
000
SQLDaily @sqldaily.bsky.social · 16/07/2026
"Constraints are the foundation of trustworthy data" Harris Fungwi argues why it's important to use tools the database provides for reliable data, including: Data types as constraints NOT NULL Uniqueness Check constraints Assertions
buff.ly
About Database Constraints -
Most data problems don’t come from bad SQL — they come from bad assumptions. And the worst one is believing that constraints can be “handled in the application.” They can’t. They never could. The…
010
SQLDaily @sqldaily.bsky.social · 15/07/2026
ORDS 26.2 it out This adds MCP server over streaming HTTPs support Enabling to you define API AI agents can use to talk to your Oracle Databases Authenticate with OAuth2.0, JWT @thatjeffsmith.com gives the details
buff.ly
ORDS: now a streaming HTTP MCP Server for Oracle Database
Oracle REST Data Services (ORDS) now supports running as a remote MCP Server! Read all about how this works in ORDS version 26.2.
140
SQLDaily @sqldaily.bsky.social · 14/07/2026
You can manage #SQL plans with profiles & baselines in Oracle AI Database But what's the difference? Profile => outline hints, plans can still vary Baseline => accepted plans, the optimizer chooses one of these Nigel Bayliss explains buff.ly/o93KZfu
buff.ly
000
SQLDaily @sqldaily.bsky.social · 13/07/2026
Find the first or last date in a time period with the start/end functions in Oracle AI Database 23.26.1 e.g. CALENDAR_YEAR_START_DATE FISCAL_QUARTER_END_DATE FISCAL_MONTH_START_DATE RETAIL_WEEK_END_DATE You can set a custom year start for fiscal periods to match your company
Calendar functions (23.26.1)

Find the CALENDAR, FISCAL or RETAIL start/end dates for input, add units, or X unit of Y
RETAIL uses National Retail Federation calendar; define your own FISCAL year start

Examples showing fiscal start/end date and addition function calls
000
SQLDaily @sqldaily.bsky.social · 10/07/2026
Trying to tune a transaction in Oracle AI Database? Run a #SQL trace to capture runtime stats and plans This shows what's slowest and why @ddfdba.bsky.social lists how to do this using DBMS_MONITOR And parse the traces to readable form using TKPROF
buff.ly
Just A Trace
There comes a time in every DBA’s career where session traces need to be executed, primarily for performance tuning. Oracle offers several ways to accomplish this, but be aware that raw trace…
000
SQLDaily @sqldaily.bsky.social · 09/07/2026
Detect unwanted join duplicates in Oracle AI Database with t1 JOIN TO ONE ( t2 ) This uses foreign keys to define the join But what if the constraints are DISABLE or NOVALIDATE? @danischnider.bsky.social shows it runs but has performance implications
buff.ly
JOIN TO ONE and Constraints
The new JOIN TO ONE syntax extension seems to be very useful for queries on star schemas. But before we can use it, we have to prove how they can be combined with different types of constraint defi…
001
SQLDaily @sqldaily.bsky.social · 08/07/2026
You can undo part of a transaction with <DML 1> SAVEPOINT sp; <DML 2> ROLLBACK TO SAVEPOINT sp; and the database only reverts <DML 2>; it keeps <DML 1> changes But DML 2 still holds locks in Oracle AI Database @jloracle.bsky.social investigates the subtleties
buff.ly
Savepoint Funny
Here’s an example that makes perfect sense if you know how Oracle handles data locking. It’s one that I thought I’d published years ago, but it’s not on the blog and the onl…
030
SQLDaily @sqldaily.bsky.social · 07/07/2026
LATERAL joins enable you to join to the left table in a subquery FROM lt LATERAL ( SELECT ... FROM rt WHERE lt.col = rt.col ) As @connormcd.bsky.social argues, these give you a procedural approach to writing #SQL And enable options like correlated top-N searches
buff.ly
I'm loving LATERAL joins more and more
When it comes to simplifying JOIN syntax, and being able to take a human step-to-step approach to the set based theories of relational databases, the LATERAL join is making so many queries easier to…
010
SQLDaily @sqldaily.bsky.social · 06/07/2026
Format dates into standard year/quarter/month/week/day text for these calendars Gregorian Fiscal Retail With a suite of calendering functions in Oracle AI Database 23.26.1 These use the calendar name and unit, e.g.: CALENDAR_YEAR ( dt ) FISCAL_MONTH ( dt ) RETAIL_DAY ( dt )
Calendar functions (23.26.1)

Get formatted CALENDAR, FISCAL, or RETAIL year/quarter/month/week for dates
RETAIL uses National Retail Federation calendar; define your own FISCAL year start
011
SQLDaily @sqldaily.bsky.social · 03/07/2026
Combine detective skills and #SQL to solve Agatha Christie murder mysteries in Query the Murder Select the suspects, check the events, and find out who the culprits are buff.ly/2xj8SIB
buff.ly
Fun SQL Games & Cases | Query the Murder
Fun SQL games and SQL mysteries. Pick easy, medium, or hard cases. Fun SQL practice with queries—solve mysteries, learn SQL.
020
SQLDaily @sqldaily.bsky.social · 02/07/2026
There's much more to defining primary keys than using surrogate id columns @winand.at introduces Structured Primary Keys These are based on foreign keys plus the columns needed for uniqueness Using these can give big performance and functional benefits
buff.ly
Structured Primary Keys
Structured primary keys prevent contradiction and perform better than surrogate keys
061
SQLDaily @sqldaily.bsky.social · 01/07/2026
If you try and add: A mandatory column Without a default To a table containing data It's null for every row => you'll get an error @nakdimon.bsky.social checks how Oracle AI Database optimises this to error instantly ...and notes an edge case to be aware of
buff.ly
Optimization of NOT NULL Constraint Creation - @DBoriented
Several years ago I wrote a series of 8 posts about constraint creation optimization. I think it’s time to add some more posts to the series. I showed there, among other things, that Oracle does a…
011
SQLDaily @sqldaily.bsky.social · 30/06/2026
It's common to deploy #SQL with "good enough" performance But small inefficiencies in queries run thousands or millions times daily add up Stressing your system and degrading performance @craigmullins.bsky.social argues you should keep reviewing SQL for efficiency
buff.ly
The Cost of 'Good Enough' SQL in a High-Volume Database Environment
In many environments, there is a quiet compromise that gets made every day. It rarely shows up in project plans or architecture diagrams. No one formally approves it. But it happens, nonetheless.…
020
SQLDaily @sqldaily.bsky.social · 29/06/2026
Joins can add lead to duplicating rows in the results by mistake Ensure rows from the left table in are processed once with: left_tab JOIN TO ONE ( right_tab ON ... ) This raises a runtime error if the result duplicates a row in left_tab Added in Oracle AI Database 23.26.2
JOIN TO ONE (23.26.2)

The left table is the subject or row widening table for the query; its rows must be processed once
If the result duplicates rows of the left table, it raises an error

Examples joining departments to employees (error), the employees to departments (valid)
020
SQLDaily @sqldaily.bsky.social · 26/06/2026
Like #SQL? Like chess? Play Quack-mate A chess engine by @swingbit.bsky.social built in pure #SQL! Play it at
buff.ly
Quack-mate
This will clear the current board and history.
120
SQLDaily @sqldaily.bsky.social · 25/06/2026
From Oracle AI Database 23.9 you can use SELECT ... GROUP BY ALL And the database automatically generates the grouping Note if you have SELECT c1 || FN ( c2 ) it won't work - it only applies to aggregate free expressions @connormcd.bsky.social explores
buff.ly
GROUP BY ALL – Is it ALL you ever need?
You have probably seen a couple of cool GROUP BY features that came with Oracle Database 26ai. You can check out the short video below but since you’re on a blog, here’s the TL;DR ̵…
000
SQLDaily @sqldaily.bsky.social · 24/06/2026
You can stop a user writing to Oracle AI Database with ALTER USER ... READ ONLY This overrides their granted privileges Queries are allowed All other DML or DDL which changes the db errors Allow writes with ALTER USER ... READ WRITE @oraclebase.bsky.social demos
buff.ly
Read-Only PDB Users in Oracle Database 23ai/26ai
Oracle database 23ai/26ai allows us to make PDB users read-only, which makes a connected session act like the database is opened in read-only mode, preventing the session from performing write…
010
SQLDaily @sqldaily.bsky.social · 23/06/2026
Coding agents write better #SQL when you provide details of your schema @anders-swanson.bsky.social shows how to do this in Oracle AI Database with schema annotations and comments CREATE TABLE ... ( ... ) ANNOTATIONS ( ... ) COMMENT ON TABLE ...
buff.ly
Get More Out of Your Coding Agents (as an Oracle Developer) - andersswanson.dev
Get more out of your coding agents as an Oracle AI Database developer with skills, MCP, and an understanding of best practices.
021
SQLDaily @sqldaily.bsky.social · 22/06/2026
State whether #database constraints are included in #JSON schemas with PRECHECK - include NOPRECHECK - exclude Include to map constraints to JSON schema, enabling app validation Omit this and the database determines its value automatically Available in Oracle AI Database 26ai
JSON PRECHECK constraints (23.4)

State whether constraints are included in JSON schemas for validation by app 

Example creating table with [NO]PRECHECK constraints
010