SlideShare a Scribd company logo
Oded Raz & Zohar Elkayam
Brillix
www.realdbamagic.com
Twitter: @realmgic
SQLcl:
The Next Generation of SQL*Plus?
About Oded Raz
http://brillix.co.il2
• Founder of Brillix and co-CEO
• Oracle ACE Director since 2010
• Over 20 years of experience as DBA
• Identity & Access solution specialist
About Zohar Elkayam
• CTO at Brillix
• Oracle ACE Associate since 2014
• DBA, team leader, Oracle University instructor and a senior
consultant for over 17 years
• Editor of ilDBA – Israel Database Community website
• Blogger – www.realdbamagic.com
http://brillix.co.il3
Agenda
• SQL*Plus and what is it good for
• Introducing SQLcl
• How to install and how to use SQLcl
• SQLcl new features and demo
• Q&A
http://brillix.co.il4
SQL*Plus
• Introduced in Oracle 5 (1985)
• Looks very simple but has tight integration with other Oracle
infrastructure and tools
• Very good for reporting, scripting, and automation
• Replaced old CLI tool called …
UFI (“User Friendly Interface”)
http://brillix.co.il5
What’s Wrong With SQL*Plus?
• Nothing really wrong with SQL*Plus – it is being updated constantly
but it is missing a lot of functionality
• SQL*Plus forces us to use GUI tools to complete some basic tasks
• Easy to understand, a bit hard to use
• Not easy for new users or developers
http://brillix.co.il6
Introducing SQLcl
• SQLcl is a new command line interface (CLI) for SQL users and
DBAs
• It is part of the SQL Developer suite – developed by the same
team: Oracle Database Development Tools Team
• Can do most of what SQL*Plus does and much more
• Minimal installation, minimal requirements
http://brillix.co.il7
Introducing SQLcl (cont.)
• It’s still in the early adopter version (current version:
4.2.0.15.121.1046, May 4, 2015)
• Uses Java, one version for Windows, Linux and OS X
• Planned to be shipped out with Oracle Database 12cR2
http://brillix.co.il8
Current Status
• Early Adopter version
• QA still logging bugs from SQL*Plus regression tests
• Adding support for existing SQL*Plus commands/syntax
• Adding new commands
• But can it do...?
• Yes
• Not yet
• No
http://brillix.co.il9
Installing
• Download from: SQL Developer Download page
• Unzip the file
• Run it
http://brillix.co.il10
Prerequisites
• Very small footprint: 11MB
• Needs Java 7/8 runtime environment (no need for JDK)
• No need for installer or setup
• No need for any other additional software or licence
http://brillix.co.il11
Connecting to the Database
• No need for Oracle Client
• Thin connection: EZConnect connect style out of the box
connect host:port/service
• Support TNS, Thick and LDAP connection when Oracle home detected
• Auto-complete connection strings
• Can show JDBC for connection information
http://brillix.co.il12
Object Completion and Easy Edit
• Use the tab key to complete commands
• Can be used to list tables, views or other queriable objects
• Can be used to replace the * with actual column names
• Use the arrow keys to move around the command
• Use CTRL+W and CTRL+S to jump to the beginning/end of
commands
http://brillix.co.il13
Command History
• 100 command history buffer
• Commands are persistent between sessions (watch out for security!)
• Use UP and DOWN arrow keys to access old commands
• Usage:
history
history usage
History script
history full
History clear [session?]
• Load from history into command buffer:
history <number>
http://brillix.co.il14
Describe, Information and info+
• Describe lists the column of the tables just like SQL*Plus
• Information shows column names, default values, indexes and constraints.
• In 12c database information shows table statistics and In memory status
• Works for table, views, sequences, and code objects
• Info+ shows additional information regarding column statistics and column
histograms
http://brillix.co.il15
Repeat
• Repeats the current SQL or PL/SQL in the buffer the specified
number of times with specified sleep intervals
• Looks like the “watch” command in Linux
• Usage:
repeat <iterations> <sleep>
http://brillix.co.il16
Repeat as “tail -f alert.log”
• Jeff Smith (@thatjeffsmith) had a cool implementation for the
repeat command on Oracle 12c:
• tail –f on the alert log
SELECT
To_Char(Originating_Timestamp, 'DD-MON-YYYY HH24:MI:SSxFF')
Time_Entry, substr(trim(message_text), 0, 75) || '...'
ABBR_MESSAGE_TEXT
FROM X$dbgalertext
ORDER BY Originating_Timestamp DESC, indx desc
fetch FIRST 15 ROWS ONLY;
http://brillix.co.il17
DDL and DBMS_METADATA
• Extract DDL of objects using a single command
DDL <object name>
• Uses DBMS_METADATA.GET_DDL to extract the object
• We can modify the output using TRANSFORM_PARAM:
exec dbms_metadata.set_transform_param
(dbms_metadata.session_transform, 'SEGMENT_ATTRIBUTES',
false);
http://brillix.co.il18
Alias
• Alias is a command which allows us to save a SQL, PL/SQL or
SQL*Plus scripts, and assign it a shortcut command.
• Command can receive parameters using bind variables
• Aliases are session persistent and being saved
• Usage:
• alias - for list of aliases
• alias list <aliasName> - for definition
• Setting an alias:
• alias my_command=sql; (terminate with ;)
• alias my_code=begin command; end; (terminate with /)
http://brillix.co.il19
Alias Example
• We want to show the DDL command without the segment part but the
transformation is on the session level.
• We set this alias:
alias ddl_fix_output=begin
dbms_metadata.set_transform_param
(dbms_metadata.session_transform, 'SQLTERMINATOR', TRUE);
dbms_metadata.set_transform_param
(dbms_metadata.session_transform, 'SEGMENT_ATTRIBUTES', false);
end;
/
http://brillix.co.il20
CTAS
• Extract DDL for a table and use it to recreate another table
using select * from
• Useful when we want to copy a table with partitions or a
primary key
• Might not stay in the final version – have a lot of small and
annoying issues
• Usage:
ctas table new_table
http://brillix.co.il21
SQLPATH
• SQLPATH is the order in which the CLI is looking for sql scripts
(both in SQL*Plus and SQLcl)
• Running a script not from the path requires full path location
• Default search order is:
1. Current cd directory
2. Current running directory
3. The rest of the sqlpath
• Show SQLPATH will show that current search path
http://brillix.co.il22
CD command
• When we want to change the path in SQL*Plus, we usually can’t.
• SQLcl comes with CD command to change that path and make it
easier to run scripts:
• Usage:
cd /u01/app/oracle/scripts
Show SQLPATH
http://brillix.co.il23
Bridge
• Used mainly to script data move between two connections
from the client (no server direct server connections)
• The following functionality is available:
1. Query tables in other connections
2. Query tables in multiple connections in the same statement
3. Insert data from one connection into another
4. Create a table and insert data into it from another connection
http://brillix.co.il24
Bridge (cont.)
• Uses JDBC connection string to connect our client to the remote
connection.
• Creates a table with the results in the database
• Usage:
BRIDGE <targetTableName> as "<jdbcURL>"(<sqlQuery>);
• Example:
BRIDGE dept_remote as
“jdbc:oracle:thin:scott/tiger@localhost:1521/orcl"(
select * from dept);
http://brillix.co.il25
SQL*Plus Output
• SQL*Plus output is generated as text tables
• We can output the data as HTML but the will take over
everything we do in SQL*Plus (i.e. describe command)
• We can’t use colors in our output
• We can’t generate other types of useful outputs (CSV is really
hard for example)
http://brillix.co.il26
Generating Pretty Output
• Outputting query results becomes easier with the “set
sqlformat” command (also available in SQL Developer)
• We can create a query in the “regular” way and then switch
between the different output styles:
• ANSIConsole
• Fixed column size output
• XML or JSON output
• HTML output generates a built in search field and a responsive
html output for the result only
http://brillix.co.il27
Generating Other Useful Outputs
• We can generate loader ready output (with “|” as a delimiter)
• We can generate insert commands
• We can easily generate CSV output
• Usage:
set sqlformat { csv,html,xml,json,ansiconsole,insert,
loader,fixed,default}
http://brillix.co.il28
Load Data From CSV File
• Loads a comma separated value (csv) file into a table
• The first row of the file must be a header row and the file must
be encoded UTF8
• The load is processed with 50 rows per batch
• Usage:
LOAD [schema.]table_name[@db_link] file_name
http://brillix.co.il29
Conclusion
• We talked about SQL*Plus and SQLcl differences
• We saw how to start working with SQLcl
• We tried some of its new features
• There are more new features coming and since it's and EA
version, more bug fixes to come
http://brillix.co.il30
Q&A
http://brillix.co.il31
Useful Resources
• Kris Rice (@krisrice) manage Oracle SQL Developer
Blog: http://krisrice.blogspot.com/
• Jeff Smith (@thatjeffsmith) Oracle SQL Developer Product
Manager at Oracle
Blog: http://www.thatjeffsmith.com/
• Barry McGillin (@bamcgill) – Oracle
Blog: http://barrymcgillin.blogspot.com/
http://brillix.co.il32
Thank You
Zohar Elkayam
twitter: @realmgic
Zohar@Brillix.co.il
www.realdbamagic.com
http://brillix.co.il33

More Related Content

What's hot (20)

PDF
Oracle Database Performance Tuning Advanced Features and Best Practices for DBAs
Zohar Elkayam
 
PDF
PL/SQL New and Advanced Features for Extreme Performance
Zohar Elkayam
 
PDF
Docker Concepts for Oracle/MySQL DBAs and DevOps
Zohar Elkayam
 
PDF
Oracle Database Advanced Querying
Zohar Elkayam
 
PDF
Things Every Oracle DBA Needs to Know about the Hadoop Ecosystem
Zohar Elkayam
 
PDF
Things Every Oracle DBA Needs To Know About The Hadoop Ecosystem
Zohar Elkayam
 
PPTX
Introduction to Oracle Data Guard Broker
Zohar Elkayam
 
PDF
An introduction into Oracle VM V3.x
Marco Gralike
 
PDF
The InnoDB Storage Engine for MySQL
Morgan Tocker
 
PDF
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
Dave Stokes
 
PDF
Oracle 12.2 sharded database management
Leyi (Kamus) Zhang
 
PDF
[B14] A MySQL Replacement by Colin Charles
Insight Technology, Inc.
 
PDF
Oracle 21c: New Features and Enhancements of Data Pump & TTS
Christian Gohmann
 
PDF
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Ted Wennmark
 
PDF
An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3
Marco Gralike
 
PDF
InnoDB Architecture and Performance Optimization, Peter Zaitsev
Fuenteovejuna
 
PPT
Rajnish singh(presentation on oracle )
Rajput Rajnish
 
PPTX
Ogh Ace Case, Part 1 and 2, Oracle Xml Database, Marco Gralike
Marco Gralike
 
PDF
DOAG - Oracle Database Locking Mechanism Demystified
Pini Dibask
 
PPTX
Oracle Database 12c - New Features for Developers and DBAs
Alex Zaballa
 
Oracle Database Performance Tuning Advanced Features and Best Practices for DBAs
Zohar Elkayam
 
PL/SQL New and Advanced Features for Extreme Performance
Zohar Elkayam
 
Docker Concepts for Oracle/MySQL DBAs and DevOps
Zohar Elkayam
 
Oracle Database Advanced Querying
Zohar Elkayam
 
Things Every Oracle DBA Needs to Know about the Hadoop Ecosystem
Zohar Elkayam
 
Things Every Oracle DBA Needs To Know About The Hadoop Ecosystem
Zohar Elkayam
 
Introduction to Oracle Data Guard Broker
Zohar Elkayam
 
An introduction into Oracle VM V3.x
Marco Gralike
 
The InnoDB Storage Engine for MySQL
Morgan Tocker
 
MySQL 5.7 NEW FEATURES, BETTER PERFORMANCE, AND THINGS THAT WILL BREAK -- Mid...
Dave Stokes
 
Oracle 12.2 sharded database management
Leyi (Kamus) Zhang
 
[B14] A MySQL Replacement by Colin Charles
Insight Technology, Inc.
 
Oracle 21c: New Features and Enhancements of Data Pump & TTS
Christian Gohmann
 
Upgrade to MySQL 5.7 and latest news planned for MySQL 8
Ted Wennmark
 
An introduction into Oracle Enterprise Manager Cloud Control 12c Release 3
Marco Gralike
 
InnoDB Architecture and Performance Optimization, Peter Zaitsev
Fuenteovejuna
 
Rajnish singh(presentation on oracle )
Rajput Rajnish
 
Ogh Ace Case, Part 1 and 2, Oracle Xml Database, Marco Gralike
Marco Gralike
 
DOAG - Oracle Database Locking Mechanism Demystified
Pini Dibask
 
Oracle Database 12c - New Features for Developers and DBAs
Alex Zaballa
 

Viewers also liked (8)

PPTX
SQLcl overview - A new Command Line Interface for Oracle Database
Jeff Smith
 
PDF
Oracle SQLcl
Barry McGillin
 
PDF
Exadata and the Oracle Optimizer: The Untold Story
Enkitec
 
PPTX
Advanced SQL Webinar
Ram Kedem
 
PPTX
Oracle SQL Developer Top 10 Tips & Tricks
Jeff Smith
 
PPTX
PL/SQL All the Things in Oracle SQL Developer
Jeff Smith
 
PPTX
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & Tricks
Jeff Smith
 
PPTX
Debugging PL/SQL with Oracle SQL Developer
Jeff Smith
 
SQLcl overview - A new Command Line Interface for Oracle Database
Jeff Smith
 
Oracle SQLcl
Barry McGillin
 
Exadata and the Oracle Optimizer: The Untold Story
Enkitec
 
Advanced SQL Webinar
Ram Kedem
 
Oracle SQL Developer Top 10 Tips & Tricks
Jeff Smith
 
PL/SQL All the Things in Oracle SQL Developer
Jeff Smith
 
Pennsylvania Banner User Group Webinar: Oracle SQL Developer Tips & Tricks
Jeff Smith
 
Debugging PL/SQL with Oracle SQL Developer
Jeff Smith
 
Ad

Similar to SQLcl the next generation of SQLPlus? (20)

PDF
Oracle 12c New Features For Better Performance
Zohar Elkayam
 
PPTX
android sqlite
Deepa Rani
 
PPT
ow.ppt
ssuser96a63c
 
PPT
kjdiakdnfdifjadsjkjklljlldasgjdjdljgfldjgldjgldjgl.ppt
Brahamam Veera
 
PPTX
Tanel Poder Oracle Scripts and Tools (2010)
Tanel Poder
 
PPT
ow-123123123123123123123123123123123123123
DngHong855117
 
PPT
Plantilla oracle
Uriel Barrales Garrido
 
PDF
Access Data from XPages with the Relational Controls
Teamstudio
 
PDF
Oracle sql developer_slides
Krishna Murthy
 
PDF
COUG_AAbate_Oracle_Database_12c_New_Features
Alfredo Abate
 
PPTX
20180929 jssug 10_a5_sql_mk2
Kunihisa Abukawa
 
PPTX
Inside sql server in memory oltp sql sat nyc 2017
Bob Ward
 
PPTX
Products.intro.forum version
sqlserver.co.il
 
PDF
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
Dave Stokes
 
PPTX
slides about : Introduction_to_SQL.pptx
DrMarwaElsherif
 
PPTX
Ten query tuning techniques every SQL Server programmer should know
Kevin Kline
 
PPTX
SQLite - Overview
Emanuele Bartolesi
 
PPTX
SQL PPT.pptx
Kulbir4
 
Oracle 12c New Features For Better Performance
Zohar Elkayam
 
android sqlite
Deepa Rani
 
ow.ppt
ssuser96a63c
 
kjdiakdnfdifjadsjkjklljlldasgjdjdljgfldjgldjgldjgl.ppt
Brahamam Veera
 
Tanel Poder Oracle Scripts and Tools (2010)
Tanel Poder
 
ow-123123123123123123123123123123123123123
DngHong855117
 
Plantilla oracle
Uriel Barrales Garrido
 
Access Data from XPages with the Relational Controls
Teamstudio
 
Oracle sql developer_slides
Krishna Murthy
 
COUG_AAbate_Oracle_Database_12c_New_Features
Alfredo Abate
 
20180929 jssug 10_a5_sql_mk2
Kunihisa Abukawa
 
Inside sql server in memory oltp sql sat nyc 2017
Bob Ward
 
Products.intro.forum version
sqlserver.co.il
 
MySQL Baics - Texas Linxufest beginners tutorial May 31st, 2019
Dave Stokes
 
slides about : Introduction_to_SQL.pptx
DrMarwaElsherif
 
Ten query tuning techniques every SQL Server programmer should know
Kevin Kline
 
SQLite - Overview
Emanuele Bartolesi
 
SQL PPT.pptx
Kulbir4
 
Ad

More from Zohar Elkayam (13)

PDF
Oracle Advanced SQL and Analytic Functions
Zohar Elkayam
 
PDF
Things Every Oracle DBA Needs to Know About the Hadoop Ecosystem 20170527
Zohar Elkayam
 
PDF
Things Every Oracle DBA Needs to Know About the Hadoop Ecosystem (c17lv version)
Zohar Elkayam
 
PDF
Rapid Cluster Computing with Apache Spark 2016
Zohar Elkayam
 
PDF
OOW2016: Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
PPTX
Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
PPTX
Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
PDF
Advanced PLSQL Optimizing for Better Performance
Zohar Elkayam
 
PDF
The Hadoop Ecosystem for Developers
Zohar Elkayam
 
PDF
Big data for cio 2015
Zohar Elkayam
 
PDF
Intro to Big Data
Zohar Elkayam
 
PDF
Oracle Data Guard A to Z
Zohar Elkayam
 
PDF
Oracle Data Guard Broker Webinar
Zohar Elkayam
 
Oracle Advanced SQL and Analytic Functions
Zohar Elkayam
 
Things Every Oracle DBA Needs to Know About the Hadoop Ecosystem 20170527
Zohar Elkayam
 
Things Every Oracle DBA Needs to Know About the Hadoop Ecosystem (c17lv version)
Zohar Elkayam
 
Rapid Cluster Computing with Apache Spark 2016
Zohar Elkayam
 
OOW2016: Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
Exploring Advanced SQL Techniques Using Analytic Functions
Zohar Elkayam
 
Advanced PLSQL Optimizing for Better Performance
Zohar Elkayam
 
The Hadoop Ecosystem for Developers
Zohar Elkayam
 
Big data for cio 2015
Zohar Elkayam
 
Intro to Big Data
Zohar Elkayam
 
Oracle Data Guard A to Z
Zohar Elkayam
 
Oracle Data Guard Broker Webinar
Zohar Elkayam
 

Recently uploaded (20)

PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 

SQLcl the next generation of SQLPlus?

  • 1. Oded Raz & Zohar Elkayam Brillix www.realdbamagic.com Twitter: @realmgic SQLcl: The Next Generation of SQL*Plus?
  • 2. About Oded Raz http://brillix.co.il2 • Founder of Brillix and co-CEO • Oracle ACE Director since 2010 • Over 20 years of experience as DBA • Identity & Access solution specialist
  • 3. About Zohar Elkayam • CTO at Brillix • Oracle ACE Associate since 2014 • DBA, team leader, Oracle University instructor and a senior consultant for over 17 years • Editor of ilDBA – Israel Database Community website • Blogger – www.realdbamagic.com http://brillix.co.il3
  • 4. Agenda • SQL*Plus and what is it good for • Introducing SQLcl • How to install and how to use SQLcl • SQLcl new features and demo • Q&A http://brillix.co.il4
  • 5. SQL*Plus • Introduced in Oracle 5 (1985) • Looks very simple but has tight integration with other Oracle infrastructure and tools • Very good for reporting, scripting, and automation • Replaced old CLI tool called … UFI (“User Friendly Interface”) http://brillix.co.il5
  • 6. What’s Wrong With SQL*Plus? • Nothing really wrong with SQL*Plus – it is being updated constantly but it is missing a lot of functionality • SQL*Plus forces us to use GUI tools to complete some basic tasks • Easy to understand, a bit hard to use • Not easy for new users or developers http://brillix.co.il6
  • 7. Introducing SQLcl • SQLcl is a new command line interface (CLI) for SQL users and DBAs • It is part of the SQL Developer suite – developed by the same team: Oracle Database Development Tools Team • Can do most of what SQL*Plus does and much more • Minimal installation, minimal requirements http://brillix.co.il7
  • 8. Introducing SQLcl (cont.) • It’s still in the early adopter version (current version: 4.2.0.15.121.1046, May 4, 2015) • Uses Java, one version for Windows, Linux and OS X • Planned to be shipped out with Oracle Database 12cR2 http://brillix.co.il8
  • 9. Current Status • Early Adopter version • QA still logging bugs from SQL*Plus regression tests • Adding support for existing SQL*Plus commands/syntax • Adding new commands • But can it do...? • Yes • Not yet • No http://brillix.co.il9
  • 10. Installing • Download from: SQL Developer Download page • Unzip the file • Run it http://brillix.co.il10
  • 11. Prerequisites • Very small footprint: 11MB • Needs Java 7/8 runtime environment (no need for JDK) • No need for installer or setup • No need for any other additional software or licence http://brillix.co.il11
  • 12. Connecting to the Database • No need for Oracle Client • Thin connection: EZConnect connect style out of the box connect host:port/service • Support TNS, Thick and LDAP connection when Oracle home detected • Auto-complete connection strings • Can show JDBC for connection information http://brillix.co.il12
  • 13. Object Completion and Easy Edit • Use the tab key to complete commands • Can be used to list tables, views or other queriable objects • Can be used to replace the * with actual column names • Use the arrow keys to move around the command • Use CTRL+W and CTRL+S to jump to the beginning/end of commands http://brillix.co.il13
  • 14. Command History • 100 command history buffer • Commands are persistent between sessions (watch out for security!) • Use UP and DOWN arrow keys to access old commands • Usage: history history usage History script history full History clear [session?] • Load from history into command buffer: history <number> http://brillix.co.il14
  • 15. Describe, Information and info+ • Describe lists the column of the tables just like SQL*Plus • Information shows column names, default values, indexes and constraints. • In 12c database information shows table statistics and In memory status • Works for table, views, sequences, and code objects • Info+ shows additional information regarding column statistics and column histograms http://brillix.co.il15
  • 16. Repeat • Repeats the current SQL or PL/SQL in the buffer the specified number of times with specified sleep intervals • Looks like the “watch” command in Linux • Usage: repeat <iterations> <sleep> http://brillix.co.il16
  • 17. Repeat as “tail -f alert.log” • Jeff Smith (@thatjeffsmith) had a cool implementation for the repeat command on Oracle 12c: • tail –f on the alert log SELECT To_Char(Originating_Timestamp, 'DD-MON-YYYY HH24:MI:SSxFF') Time_Entry, substr(trim(message_text), 0, 75) || '...' ABBR_MESSAGE_TEXT FROM X$dbgalertext ORDER BY Originating_Timestamp DESC, indx desc fetch FIRST 15 ROWS ONLY; http://brillix.co.il17
  • 18. DDL and DBMS_METADATA • Extract DDL of objects using a single command DDL <object name> • Uses DBMS_METADATA.GET_DDL to extract the object • We can modify the output using TRANSFORM_PARAM: exec dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SEGMENT_ATTRIBUTES', false); http://brillix.co.il18
  • 19. Alias • Alias is a command which allows us to save a SQL, PL/SQL or SQL*Plus scripts, and assign it a shortcut command. • Command can receive parameters using bind variables • Aliases are session persistent and being saved • Usage: • alias - for list of aliases • alias list <aliasName> - for definition • Setting an alias: • alias my_command=sql; (terminate with ;) • alias my_code=begin command; end; (terminate with /) http://brillix.co.il19
  • 20. Alias Example • We want to show the DDL command without the segment part but the transformation is on the session level. • We set this alias: alias ddl_fix_output=begin dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SQLTERMINATOR', TRUE); dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SEGMENT_ATTRIBUTES', false); end; / http://brillix.co.il20
  • 21. CTAS • Extract DDL for a table and use it to recreate another table using select * from • Useful when we want to copy a table with partitions or a primary key • Might not stay in the final version – have a lot of small and annoying issues • Usage: ctas table new_table http://brillix.co.il21
  • 22. SQLPATH • SQLPATH is the order in which the CLI is looking for sql scripts (both in SQL*Plus and SQLcl) • Running a script not from the path requires full path location • Default search order is: 1. Current cd directory 2. Current running directory 3. The rest of the sqlpath • Show SQLPATH will show that current search path http://brillix.co.il22
  • 23. CD command • When we want to change the path in SQL*Plus, we usually can’t. • SQLcl comes with CD command to change that path and make it easier to run scripts: • Usage: cd /u01/app/oracle/scripts Show SQLPATH http://brillix.co.il23
  • 24. Bridge • Used mainly to script data move between two connections from the client (no server direct server connections) • The following functionality is available: 1. Query tables in other connections 2. Query tables in multiple connections in the same statement 3. Insert data from one connection into another 4. Create a table and insert data into it from another connection http://brillix.co.il24
  • 25. Bridge (cont.) • Uses JDBC connection string to connect our client to the remote connection. • Creates a table with the results in the database • Usage: BRIDGE <targetTableName> as "<jdbcURL>"(<sqlQuery>); • Example: BRIDGE dept_remote as “jdbc:oracle:thin:scott/tiger@localhost:1521/orcl"( select * from dept); http://brillix.co.il25
  • 26. SQL*Plus Output • SQL*Plus output is generated as text tables • We can output the data as HTML but the will take over everything we do in SQL*Plus (i.e. describe command) • We can’t use colors in our output • We can’t generate other types of useful outputs (CSV is really hard for example) http://brillix.co.il26
  • 27. Generating Pretty Output • Outputting query results becomes easier with the “set sqlformat” command (also available in SQL Developer) • We can create a query in the “regular” way and then switch between the different output styles: • ANSIConsole • Fixed column size output • XML or JSON output • HTML output generates a built in search field and a responsive html output for the result only http://brillix.co.il27
  • 28. Generating Other Useful Outputs • We can generate loader ready output (with “|” as a delimiter) • We can generate insert commands • We can easily generate CSV output • Usage: set sqlformat { csv,html,xml,json,ansiconsole,insert, loader,fixed,default} http://brillix.co.il28
  • 29. Load Data From CSV File • Loads a comma separated value (csv) file into a table • The first row of the file must be a header row and the file must be encoded UTF8 • The load is processed with 50 rows per batch • Usage: LOAD [schema.]table_name[@db_link] file_name http://brillix.co.il29
  • 30. Conclusion • We talked about SQL*Plus and SQLcl differences • We saw how to start working with SQLcl • We tried some of its new features • There are more new features coming and since it's and EA version, more bug fixes to come http://brillix.co.il30
  • 32. Useful Resources • Kris Rice (@krisrice) manage Oracle SQL Developer Blog: http://krisrice.blogspot.com/ • Jeff Smith (@thatjeffsmith) Oracle SQL Developer Product Manager at Oracle Blog: http://www.thatjeffsmith.com/ • Barry McGillin (@bamcgill) – Oracle Blog: http://barrymcgillin.blogspot.com/ http://brillix.co.il32
  • 33. Thank You Zohar Elkayam twitter: @realmgic [email protected] www.realdbamagic.com http://brillix.co.il33