좋아하는 SQLPLUS 팁과 요령
많은 경우 SQLPLUS가 작업을 처리하는 Oracle DB에 대한 빠른 연결이 필요합니다.
사람들이 Oracle을 사용하기 시작할 때 가장 먼저해야 할 일은 Toad 또는 SQLDeveloper를 설치하는 것입니다. 그렇더라도 간단한 쿼리를 수행하는 경우 도구가로드 될 때까지 기다리지 않으려는 경우가 있습니다.
쉘을 시작할 때 실행하는 스크립트가 있으므로 더 나은 경험을 얻을 수 있습니다.
SET pagesize 2000
SET LONG 10000
SET linesize 1000
COLUMN last_name format a20
COLUMN total format 999,999,999
SET feedback ON
alter session set nls_date_format = 'yyyy-mm-dd hh:mi:ssPM';
이 예에서는 "COLUMN"설정을 잘라 냈지만 기본적으로 데이터를 화면에 맞추는 데 도움이됩니다.
날짜 형식을 설정하면 날짜 처리가 매우 간단 해집니다.
Windows에서 명령 창이 열리면 스크롤, 더 넓은 창 등을 가질 수 있도록 창 레이아웃 속성을 설정하고 향후 창에 대한 설정을 저장할 수 있습니다.
다른 사람이 매일 SQLPLUS를 사용합니까? 팁이 있습니까?
rlwrap 을 사용 하여 sqlplus에 readline 지원을 추가 할 수 있습니다 . 다음과 같이 sqlplus를 실행하십시오.
$ rlwrap -c sqlplus username@database
이제 위 / 아래로 명령 내역을 스크롤합니다. ctrl-r을 사용하여 히스토리 등을 뒤로 검색합니다. 이렇게하면 sqlplus를 견딜 수 있습니다.
또한 이것을 login.sql에 추가하여 터미널의 너비에 관계없이 linesize를 설정하십시오.
HOST echo "set linesize" $(stty -a|head -n1|cut -f7 -d' '|cut -f1 -d';') > .tmp.sql
@.tmp.sql
HOST rm -f .tmp.sql
이 두 팁은 모두 유닉스에서만 작동합니다.
예, 저는 Toad 또는 SQL Developer보다 SQL Plus를 매일 사용합니다 (데이터베이스 검색에도 SQL Developer를 사용하지만).
내 login.sql 스크립트에 다음이 있습니다 (SQL Plus가 자동으로 실행 됨).
1) 기본 편집기 (메모장)를 내 선택 중 하나로 대체합니다.
define _editor = "C:\Program Files\TextPad 5\TextPad.exe"
2) 내가 어디에 있는지 알 수 있도록 SQL 프롬프트에 데이터베이스 이름을 표시합니다 (이에 대해 Tom Kyte에게 감사드립니다).
COLUMN global_name new_value gname
SET TERMOUT OFF
SELECT LOWER(USER) || '@' || global_name||CHR(10)||'SQL> ' AS global_name
FROM global_name;
SET SQLPROMPT '&gname'
SET TERMOUT ON
... 그리고 당신과 유사한 다른 설정.
또한 Tom Kyte의 print_table 프로 시저가 매우 유용하다는 것을 알게되었습니다 .
SQL * Plus를 시작할 때마다 자동으로 실행되는 login.sql 스크립트에 이러한 설정을 넣을 수 있습니다. 더 찾아 봐.
이것에 대한 깔끔한 점은 10g 이후로이 스크립트는 SQL * Plus를 처음 실행할 때가 아니라 연결할 때마다 실행된다는 것입니다.
SQL> conn apc
Enter password:
Connected.
Running login script
Session altered.
SQL> conn scott
Enter password:
Connected.
Running login script
Session altered.
SQL>
Oracle과 함께 작업하기 위해 SQL * Plus를 독점적으로 사용합니다. 다른 답변은 이미 매우 편리한 login.sql 내용을 제공합니다.
이것은 내 login.sql
. Tom Kyte와 William Robertson의 제안을 거기에 복사했습니다. 사용하고 싶은 것을 찾을 수도 있습니다.
set termout off
set serveroutput on size unlimited
set pagesize 50000
set linesize 135
set long 50000
set trimspool on
set tab off
def _editor = "C:\Progra~1\Notepad++\Notepad++.exe"
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> '
alter session set nls_date_format = 'dd-mm-yyyy hh24:mi:ss'
/
var sid number
var serial# number
var tracefile VARCHAR2(200)
DECLARE
v_audsid v$session.audsid%TYPE;
BEGIN
SELECT sid, serial#, audsid
INTO :sid, :serial#, v_audsid
FROM v$session
WHERE audsid = SYS_CONTEXT('USERENV','SESSIONID');
SELECT par.value ||
CASE WHEN par.value LIKE '%/%' THEN '/' ELSE '\' END ||
LOWER(th.instance) ||
'_ora_' || LTRIM(TO_CHAR(pro.spid,'fm99999')) || '.trc' AS filename
INTO :tracefile
FROM v$process pro
, v$session se
, v$parameter par
, v$thread th
WHERE se.audsid = v_audsid
AND pro.addr = se.paddr
AND par.NAME = 'user_dump_dest';
END;
/
BEGIN
IF :sid IS NULL THEN
SELECT sid
INTO :sid
FROM v$mystat
WHERE rownum = 1;
END IF;
END;
/
set termout on
set feedback off
exec DBMS_OUTPUT.PUT_LINE('Sessie: ' || :sid || CASE WHEN :serial# IS NULL THEN ' (no access to V$ tables)' ELSE ',' || :serial# END)
exec IF :tracefile IS NOT NULL THEN DBMS_OUTPUT.PUT_LINE('Eventueel trace-bestand: ' || :tracefile); END IF
prompt
set feedback on
오프라인에서 sqlplus를 사용하고 싶습니다.
sqlplus -S user/password @query.sql> file.txt
query.sql은
set feedback off verify off heading off pagesize 0
...here goes a query...
quit;
/
따라서 Windows 또는 Unix의 bat / script 파일에있는 데이터베이스에서 정보를 얻을 수 있습니다.
I find it is handy to use SQL*Plus column variables within directives - for example, I'm often in a session and want to spool to a new file name to avoid overwriting another log that may already exist and do this (first three statements through an @file):
SQL> column spr new_value spoolref
SQL> select user||'_'||abs(dbms_random.random) spr from dual;
SQL> spool &spoolref
... do work here ...
SQL> spool off
I'll then find the new log by sorting by time - you could always use some strategy other than the random number if you prefer.
참고URL : https://stackoverflow.com/questions/1439203/favorite-sqlplus-tips-and-tricks
'IT TIP' 카테고리의 다른 글
SQL 주석 헤더 예 (0) | 2020.12.04 |
---|---|
TypeCasting의 성능 (0) | 2020.12.04 |
C ++에서 클래스를 다른 클래스에서 상속하는 것으로 앞으로 선언 할 수 있습니까? (0) | 2020.12.04 |
Java의 열거 형에 함수를 추가 할 수 있습니까? (0) | 2020.12.04 |
상속을 사용하는 이유는 무엇입니까? (0) | 2020.12.04 |