Download it NOW

Happy release day! We’re a bit tardy on our 3rd quarter update, but I’m going to blame corporate red tape and perhaps a bit of Cloud World Hangover.

So, what do you need to know?

New Features!

Friendlier, more helpful error messages

The enhanced error messages are here, with links to our new error message portal.

https://docs.oracle.com/en/error-help/db/ora-00937/

CODESCAN now has support for PL/SQL and SQL Coding Guidelines

You can either –

SET CODESCAN ON for interactive feedback, a la –

My code has room for improvement.

Scan an entire directory of your source code.

I exported all the PL/SQL from my ADMIN schema in my 19c Always Free Autonomous instance.

codescan -path c:\users\jdsmith\TJS-PLSQL-SRC -output scan_results.json -format json

I asked for both JSON and TEXT reports, that looks like this –

I’m going to write some python later to generate some nice HTML from that JSON…

The rules are community sourced, you can find them HERE. And there is an option to avoid rules you don’t agree with, more on that in a follow-up post.

Bug fixes

There are many, many bug fixes included in 23.3, but I’m going to highlight just one of those in this post:

IMPORTING AUTONOMOUS (WALLET) CONNECTIONS FROM SQL DEVELOPER FAILS

I have an Always Free Autonomous Database connection using mTLS, and I have a connection defined for my ADMIN account in SQL Developer.

I want to import it, like so –

I could choose one or more, but I’m just doing the one here.

And now I’m going to IMPORT this connection to SQLcl’s connection ‘store’ using the CONNMGR command.

Ok, my connection is now available to SQLcl?

If I run the CONNMGR list command, I can see what’s available, and then make my connection!

Sweeet.

Tip: avoid the HIGH & MEDIUM services unless you really need it. The parallel stuff can get in the way of day-to-day development work.

There’s more to go over here, but we’ll cover that later.

Enjoy the release! Our next update will be 23.4, scheduled for early December 2023.

Author

I'm a Distinguished Product Manager at Oracle. My mission is to help you and your company be more efficient with our database tools.

11 Comments

  1. Hi Jeff,
    Is it possible to disable a specific rule for a specific piece of code (say, one statement), with some special comment? Thanks

  2. Hi, I noticed something I can’t explain when trying sqlcl “build 23.3.0.270.1251” with liquibase.
    When I use “generate-schema” and “update” to apply my changes from one schema to other, everything works fine.
    But in some circuntances I need to bring only part of the changes to production.

    I ‘d tried “diff-changelog” from dev to production and it generated a correct “changes.xml” containing only the changes I want. Good.

    But, when I ran “update”, after the changes where applied, the DATABASECHANGELOG_ACTIONS was not loaded with the corresponding DDL. That was confirmed with “update-sql”.

    Here is my change:

    —-

    And here is “SQL> liquibase update-sql -chf v20231026r1714/changes.xml”:

    –Starting Liquibase at 17:30:58 (version 4.18.0 #5864 built at 2022-12-02 18:02+0000)

    — Loaded 1 change(s)
    — *********************************************************************
    — Update Database Script
    — *********************************************************************
    — Change Log: v20231026r1714/changes.xml
    — Ran at: 10/26/23, 5:30 PM
    — Against: PML_DATA_TLIQUIBASE@jdbc:oracle:thin:@PDB_DES.WORLD
    — Liquibase version: 4.18.0
    — *********************************************************************

    — Lock Database
    UPDATE PML_DATA_TLIQUIBASE.DATABASECHANGELOGLOCK SET LOCKED = 1, LOCKEDBY = ‘A5314F04H (172.17.0.1)’, LOCKGRANTED = SYSTIMESTAMP WHERE ID = 1 AND LOCKED = 0;

    — Changeset v20231026r1714/changes.xml::1698352210917-1::ricardo (generated)
    ALTER TABLE PML_DATA_TLIQUIBASE.URL_SERVICO MODIFY URL_SERVICO VARCHAR2(1000 CHAR);

    INSERT INTO PML_DATA_TLIQUIBASE.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES (‘1698352210917-1’, ‘ricardo (generated)’, ‘v20231026r1714/changes.xml’, SYSTIMESTAMP, 49, ‘8:ce272fb18fbb857080c5aeef643a9a5f’, ‘modifyDataType columnName=URL_SERVICO, tableName=URL_SERVICO’, ”, ‘EXECUTED’, NULL, NULL, ‘4.18.0’, ‘8352268410’);

    — Release Database Lock
    UPDATE PML_DATA_TLIQUIBASE.DATABASECHANGELOGLOCK SET LOCKED = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

    Operation completed successfully.

    SQL>

  3. Saroj Raut Reply

    Hi Jeff,

    Looks like there is a defect which manifests when we generate changeset for database trigger.

    I am using sqlcl 22.3 and generating the change log using command : lb ges -split -sql -syn -gr -co Standard-Release-v1 -la 2023.10.0.

    Changelog is getting generated fine but failing during lb update with error “PLS-00103: Encountered the symbol “ALTER” ”

    I think the problem is in the same same change set there are two statements, first is create trigger and next is alter trigger enable. and plsql block terminator \ is missing.

    Can you please have a look when you have a moment? Please let me know if you need script to replicate this problem.

    Many thanks,
    Saroj Raut

    • Ok in my 23.3 SQLcl, i generated a changeLog for a single trigger, using generate-object

      The SLASH (/) is there between the CREATE OR REPLACE and ALTER statements.

      ...CREATE OR REPLACE EDITIONABLE TRIGGER "HR"."UPDATE_JOB_HISTORY"
      AFTER UPDATE OF job_id, department_id ON employees
      FOR EACH ROW
      BEGIN
      add_job_history(:old.employee_id, :old.hire_date, sysdate,
      :old.job_id, :old.department_id);
      END;
      /
      ALTER TRIGGER "HR"."UPDATE_JOB_HISTORY" ENABLE;...

    • Saroj Raut

      Many thanks for the prompt response Jeff.

      Apologies for the typo. Yes, I meant 23.3.

      Single trigger is working fine for me as well (lb generate-object -object-type trigger -object-name TEAM_BIU) it’s generate schema where the trailing slash is missing (lb ges -split)

  4. Jeff,

    This is an off-topic but need your help in a specific topic. I haven found a way to connect sql developer to the database through tls (not mTLS) using oracle client wallet. Could you please point me to any documentation about it?

    Thanks in advance!

    • Saroj Raut

      Many thanks for the prompt response Jeff.

      Apologies for the typo. Yes, I meant 23.3.

      Single trigger is working fine for me as well (lb generate-object -object-type trigger -object-name TEAM_BIU) it’s generate schema where the trailing slash is missing (lb ges -split)

  5. Hi Jeff,

    Have a question , does SQLcl has possibilities to have colors in statusbar, so instead of having sqlprompt with some alerting color (when connected to important DB) to have ability to color you DBID/USER in statusbar?

Write A Comment