Nedaudz par SQL*Plus

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:

  • SQL*Plus® Quick Reference
  • SQL*Plus® User’s Guide and Reference
  • 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.

    Komentēt