Savā pirmajā rakstā nedaudz pastāstīšu par to, kā padarīt darbu ar Oracle SQL*Plus ērtāku, bet pirms tam atbildēšu uz jautājumu – kādēļ tas vispār vajadzīgs?
SQL*Plus ir standarta rīks darbam ar Oracle datu bāzēm un kā tāds, tas ir pieejams visās Oracle klienta un servera instalācijās. Ne vienmēr jums būs pieejams kāds no ierastajiem izstrādes vai administrēšanas rīkiem, tādēļ iesaku apgūt vismaz pašus SQL*Plus pamatus, lai nenonāktu situācijā, kad nepieciešams steidzami veikt kādu darbu, bet, piemēram, PL/SQL Developer instalācijas trūkuma dēļ to nevariet paveikt.
Vairāk par SQL*Plus pamatiem variet atrast šeit:
Un tagad – pie lietas!
1) Optimizējam piekļuvi saviem iecienītajiem skriptiem
Regulāriem SQL*Plus lietotājiem bieži vien ir izveidojusies kolekcija ar skriptiem, kas tiek lietoti ikdienā – procesu, sesiju, ieplānoto darbu, tabulvietu parlūkošanai un administrēšanai. Ja lietojat SQL*Plus Windows versiju (sqlplusw.exe), tad skriptus var izsaukt divos veidos – izmantojot File -> Open izvēlnes vai līdzīgi kā komandrindas SQL*Plus (sqlplus / sqlplus.exe) norādot skripta nosaukumu aiz “@” zīmes, piemēram:
SQL> @/export/home/san/scripts/oracle/skripts.sql
Ja izsaucamie SQL skripti atrodas SQL*Plus darba direktorijā, tad nav nepieciešams rakstīt pilnu ceļu skripta nosaukumā:
SQL> @skripts.sql
Parasti gan SQL*Plus darba direktorija sakrīt ar konsoles darba direktoriju, bet sqlplusw.exe gadījumā tā ir direktorija, no kuras pēdējo reizi ar File -> Open izvēlnes palīdzību tika izsaukti skripti. Lai padarītu skriptu izsaukšanu pēc iespējas ērtāku, ieteicams izmantot vides mainīgā SQLPATH sniegtās priekšrocības. Ar SQLPATH palīdzību var definēt SQL*Plus darba direktoriju:
bash$ pwd
/
bash$ export SQLPATH=/export/home/san/scripts/oracle/
bash$ sqlplus ‘/ as sysdba’
— ar šo komandu tiek izsaukts tas pats skripts.sql,
— kas atrodas /export/home/san/scripts/oracle/,
— tikai daudz ērtāk un ātrāk
SQL> @skripts
Windows vidē mainīgo SQLPATH var uzstādīt nospiežot Win+Break, aizejot uz Advanced tab’u -> Environment variables -> New …
Unix/Linux to var ierakstīt savā .profile failā un dzīvot laimīgi.
2) Modificējam SQL*Plus vidi
Droši vien katram, kas ikdienā strādā ar vairāk par vienu DB, kādreiz ir sanācis nejauši veikt kādas darbības nepareizajā datu bāzē. Ja tas ir update vai pat delete, tad bēda maza – gandrīz vienmēr var glābt rollback. Ar nodropotiem objektiem jau ir nopietnākas problēmas.
Šādas kļūdas nevar pilnībā novērst, bet samazināt to iespējamību gan var viegli.
Šīm mērķim es izmantoju login.sql:
REM modify sqlplus prompt
set termout off
define gname=idle
column global_name new_value gname
select lower(user) || ‘@’ ||
substr(global_name, 1, decode (dot, 0, length(global_name), dot-1)) global_name
from (select global_name, instr(global_name, ‘.’) dot from global_name);
set sqlprompt ‘&gname> ‘
set termout on
Un rezultāts:
sqlplus ‘/ as sysdba’
SQL> — tagad izpildīšu login.sql …
SQL> @login.sql
sys@TEST>
sys@TEST> — kā redzams, SQL> nomainījās pret sys@TEST>,
sys@TEST> — kas parāda, ka esmu pieslēdzies TEST bāzei kā SYS lietotājs
sys@TEST>
Šādi man vienmēr ir redzams, kurai bāzei esmu pieslēdzies un pastāv mazāka iespēja, ka pārslēdzoties starp vairākiem logiem izpildīšu kādu komandu nepareizā sesijā.
Ja login.sql ievieto direktorijā uz kuru norāda SQLPATH vides mainīgais, tad šīs skripts izpildīsies automātiski pie SQL*Plus palaišanas:
bash$ sqlplus ‘/ as sysdba’
SQL*Plus: Release 9.2.0.5.0 – Production on Wed Oct 10 21:37:06 2007
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.5.0 – 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.5.0 – Production
sys@TEST>
Un pēdējais komentārs par login.sql – ja nokonfigurējat sistēmu tā, lai šis skripts izpildītos automātiski pie SQL*Plus palaišanas, tad ir ērti to papildināt ar vēl dažiem ierakstiem, piemēram:
set linesize 200
column object_name format a30
column segment_name format a30
column file_name format a75
define _editor=vi
utt.