oug_scot: SQLcl the next generation of SQLPlus Presentation
I have two last debuts from the Scotland OUG meeting – the presentations.
First, the SQLcl presentation and the demo.sql file to run the things I showed there.
I thank everybody who found the time to come hear me talk and I hope you enjoyed the presentation.
Direct access on SlideShare: http://www.slideshare.net/zohare/sqlcl-the-next-generation-of-sqlplus
Embedded:
alias cdcl='cd /u01/app/oracle/sqlcl/bin/'
cdcl
-- ## connection
sql /nolog
connect hr/hr
connect hr/hr@[tab]
connect hr/hr@192.168.56.102:1521/pdb1
show jdbc
-- ## object completion and easy edit
select * from [tab]
select * from j[tab] --> job --> [s;]
>> return to the star --> [tab] --> get column list
select job_id, job_title from jobs;
break line after from
[ctrl+s] to jump to the end of the script
run it
-- ## history
[up arrow key] scroll back in history commands
history
history [n] choose a number to load
run the command
history usage
run the command
history usage
history full -> shows multi-line commands
history clear session (doesnt work yet) but history clear
-- ## describe, info, info+
desc JOBS -> regular
info JOBS => table
info EMP_DETAILS_VIEW => show table info
info HR_SEQ => show sequence info
info ADD_JOB_HISTORY => code (procedure)
info+ JOBS => shows column statistics (if available)
-- ## repeat
alter session set nls_date_format='dd/mm/yyyy hh24:mi:ss';
select sysdate from dual;
repeat 10 0.5
-- Jeff's example with tail -f
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;
repeat 20 0.5
--> second window:
alter system switch logfile
--> first window changes with switch log
-- ## ddl and dbms_metadata
ddl JOBS => table
problem: no terminate at the end of command:
exec dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SQLTERMINATOR', TRUE);
exec dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SEGMENT_ATTRIBUTES', false);
ddl JOBS => table
ddl employees => tables, indexes, triggers etc.
ddl EMP_DETAILS_VIEW => show table info
ddl HR_SEQ => show sequence info - same as info
ddl ADD_JOB_HISTORY => shows actual data types
ddl UPDATE_JOB_HISTORY => trigger
-- ## alias
alias sqlterm=exec dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SQLTERMINATOR', TRUE);
alias 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;
/
alias to show aliases.
-- run aliases:
tables => list of tables
tables2 => list of tables and size
locks 275 => locks for session 275
-- ## ctas
ctas jobs jobs_new
-- show problem with terminator at the middle of command
-- ## sqlpath
show sqlpath
@demo -> error
cd /u01/app/oracle/scripts
show sqlpath
@demo -> okay
[oracle@lnx-oracle66-db12c bin]$ cat /u01/app/oracle/scripts/demo.sql
select * from jobs where job_id = 'AC_ACCOUNT';
-- ## bridge
select * from user_db_links; --> empty, no dblinks
bridge b_dwh_11g as "jdbc:oracle:thin:zohar/zohar@192.168.56.101:1521/orcldg"(select * from zohar.dwh);
select * from b_dwh_11g; -- rows from 11g db
drop table b_dwh_11g; -- remove bridged data
-- ## output
select * from employees;
set sqlformat ansiconsole --> better formatting
set sqlformat html
spool /tmp/emps.html
select * from employees;
spool off
-- use firefox to open /tmp/emps.html
-- show responsiveness, show search bar (not working? **need to check it with dev team**)
set sqlformat --> clear format
select /*html*/ * from employees;
-- get data to applications:
select * from regions;
set sqlformat json
select * from regions;
set sqlformat xml
select * from regions;
set sqlformat fixed
select * from regions;
set sqlformat loader
select * from regions;
set sqlformat insert
select * from regions;
--
-- export data as csv
set sqlformat csv
spool /tmp/jobs.csv
select * from jobs;
spool off
set sqlformat
--> edit the file and remove first lines
-- ## load
load jobs_load /tmp/jobs.csv
-- last thing if we have time:
-- color table:
CREATE TABLE "COLORS"
( "LOOK_AT_THE_PRETTY_COLORS" VARCHAR2(100)
) ;
CREATE OR REPLACE EDITIONABLE SYNONYM "COLOURS" FOR "COLORS";
REM INSERTING into COLOURS
SET DEFINE OFF;
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|red,bold,underline This is red,bold,underline|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|NEGATIVE_ON This is negative|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|INTENSITY_FAINT This is faint|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|INTENSITY_BOLD This is my bold|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|ITALIC This is italic|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|UNDERLINE This is underline|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|BLINK_SLOW This is blink_slow|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|BLINK_FAST This is blink_fast|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|CONCEAL_ON This is conceal|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|black This is black|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|green This is green|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|yellow This is yellow|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|blue This is blue|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|magenta This is magenta|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|cyan This is cyan|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|white This is white|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|bg_red This is bg_red|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|bg_black This is bg_black|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|bg_green This is bg_green|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|bg_yellow This is bg_yellow|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|bg_blue This is bg_blue|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|bg_magenta This is bg_magenta|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|bg_cyan This is bg_cyan|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|bg_white This is bg_white|@');
Insert into COLOURS (LOOK_AT_THE_PRETTY_COLORS) values ('@|bg_red This is bg_red|@');
set sqlformat
select * from colours;
set ansiconsole
select * from colours;
-- don't gorget to say it is also works with emoji in osx




Trackbacks & Pingbacks
[…] I talked about the In Memory Option and it was awesome (until the fire alarm went off) and about SQLcl (a session which ACE Director Oded Raz later presented at a bigger event: DOAG). Since then I […]
Leave a Reply
Want to join the discussion?Feel free to contribute!