오라클 스크립트

스크립트란? SQL 내용을 지닌 파일을 의미

스크립트의 실행

text 파일로 저장하여 sqlplus 접속한 후 @경로/파일명 으로 실행

ex > sql > @D:\DBSQL\MIGTableCreate.sql

  

 1. SQL명령문을 stud.sql이라는 파일로 저장하고 저장된 파일을 실행하여라!

저장 SQLed C:\stud.sql

내부적으로 정의한 편집기를 이용하여 stud.sql 내용을 입력 저장 할 수 있습니다.

Unix 에서 이용 시 :  vi 에디터

윈도우 :  메모장

편집을 완료하고 저장 하시면 자동으로 PL*SQL화면으로 돌아 옴

 

실행 SQL> @@C:\stud.sql

@@는 기본디렉토리의 해당파일을 실행 합니다.

 

 2.stud.sql 파일을 실행한 후, 실행결과를 stud.txt에 저장하여라.

SQL>    spool C:\stud.txt

SQL>    @@C:\stud.sql

SQL>    ...

SQL>    ...

SQL>   spool off

이렇게 하시면 될 듯 합니다.

 

 3. student 테이블에서 모든 데이터를 출력하여라. 단 한 학생씩의 정보는 한라인에 출력되도록 칼럼 폭을 조정하여라.

SQL> set pagesize 1000   -- 한페이지 최대라인수를 1000 줄로 함

-- pagesize의 default는 14이며 그대로 하면 14줄마다 1줄씩 공백이 생기므로 그런 현상을 방지하기 위해

SQL> set linesize 500       -- 한줄(linesize)의 길이를 500컬럼으로 함(record 길이만큼 지정하여 아래로 구분되지 않도록)

> select *  from student;


 * 기타 옵션들

-- header가 display되지 않고 데이터만 display됩니다. 
SQL>SET HEADING OFF


-- 명령이 display되지 않도록 합니다.
SQL>SET ECHO OFF


-- 조회 결과가 화면에 나오지 않도록 합니다. 
SQL>SET TERM OFF


참조 : http://blog.daum.net/kk241321/7338311

        http://mystarlight.tistory.com/entry/sqlplus-%EC%97%90%EC%84%9C-%EC%8B%A4%ED%96%89%ED%95%9C-%EC%BB%A4%EB%A6%AC%EA%B2%B0%EA%B3%BC-spool-%EB%A1%9C-%EC%A0%80%EC%9E%A5%ED%95%98%EA%B8%B0

Posted by airlueos
,

오라클 연결을 위해 ojdbc.jar 파일이 필요한데 Maven에서 제공하는 jar 사용하면 계속

Missing artifact ojdbc:ojdbc:jar:14:compile 오류가 발생한다. 

오류 이유는 저작권 때문이라 함

(출처 : http://www.jroller.com/mert/entry/oracle_s_ojdbc14_jar_mesir)


해결 

pom.xml 을 연 후 

1. 저장소를 추가한다. 

<repository>

<id>mesir-repo</id>

         <url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>

</repository>  


2. <dependency> 를 추가한다. 

<dependency>

<groupId>com.oracle</groupId>

       <artifactId>ojdbc14</artifactId>

       <version>10.2.0.4.0</version>

</dependency>   

Posted by airlueos
,

오라클 9i 정규식 표현(REGEXP_~)

문제

오라클 정규식 표현은 10g부터 지원됨.

오라클 9i 정규식 표현(REGEXP_~) 인식 안되는 현상 발생.

해결

오라클 내장함수인 length()함수를 통해 문자 정렬 로 해결

Posted by airlueos
,

NVL함수는 NULL값을 원하는 값으로 바꾸어 사용하게 하는 함수 이다.

문자, 숫자, 날짜 형태의 모든 데이터에 사용이 가능하다.

NVL(column명, value)


예를 들어 NVL(ex, 0) 이라고 한다면 ex컬럼의 값이 null인경우에는 0으로 나타나게 된다.


NVL2함수는 오라클9i에서 추가된 함수 이다.
정의되어 있는 컬럼의 값이 null이 아니면 값1로 나타내고, null일 경우 값2로 나타낸다.

NVL2(column명, value1, value2)

예를 들어 NVL2(ex, ok, no) 라고 한다면 ex컬럼의 값이 null이 아니면 ok를 null이면 no를  나타낸다.

Posted by airlueos
,

Cannot load JDBC driver class ‘oracle.jdbc.driver.OracleDriver’

1. /WEB-INF/lib/ oracle 드라이버(ojdbc.jar) 넣기

2.  oracle JDBC 드라이버를 Tomcat/common/lib/ 밑에 넣기


위와 같은 에러는 /WEB-INF/lib/ 에 있는 oracle 드라이버(ojdbc.jar)Tomcat이 제대로 읽지 못해서

발생하는 문제이다. oracle JDBC 드라이버를 Tomcat/common/lib/ 밑으로 복사해준다

그리고 Tomcat 재실행 해주면 잘 될것이다 =)


[출처]  http://barnabas.kr/index.php/archives/111

Posted by airlueos
,


ORA-00911: 문자가 부적합합니다

     : 주로 쿼리문 문법 에러!!


대개는 문자를 '로 둘러싸지 않았거나 해서 나는 에러지만,  

iBatis 계열 (sqlmap) 등을 사용할 때 위와 같은 에러가 난다면,

혹은 아무리 봐도 SQL 문구 자체에는 이상이 없을 경우엔?


SQL 맨 마지막에 ; (세미콜론)을 붙이지 않았나 확인해 보라.


[출처] [Oracle] ORA-00911 에러

Posted by airlueos
,

V$SESSION

  • 세션에 대한 전반적인 내용을 보여줌
    ColumnValueDescription
    SADDR070000050F9798E0오라클 메모리의 세션 주소
    SID9542세션 식별자 ( 세션 관련 뷰는 SID컬럼과 조인이 가능 )
    SERIAL#5865세션 시리얼 번호
    AUDSID86855884감사 세션 아이디( AUD$의 SESSIONID 컬럼과 조인 가능)
    PADDR07000004FD0771A8이 세션을 소유한 프로세스의 메모리 주소( V$PROCESS의 ADDR 컬럼과 조인 가능)
    USER#361오라클 사용자 식별자( DBA_USERS의 USER_ID 컬럼과 조인 가능)
    USERNAMERAXSOFT오라클 사용자 이름
    COMMAND3현재 수행되고 있는 명령문의 타입이 기록된다( AUDIT_ACTIONS의 ACTION 컬럼과 조인 가능)
    OWNERID2147483644Migratable session을 소유한 사용자의 식별자를 포함. 병렬 실행의 경우, 상위 2바이트는 Query Coordinator의 인스턴스의 ID, 하위 2바이트는 세션 번호를 포함. 그러나, 이 값이 2147483644의 값을 가진다면 의미 없다.
    TADDR07000004B519BE58트랜잭션 상태 객체의 주소( V$TRANSACTION의 ADDR컬럼과 조인 가능)
    LOCKWAIT Lock의 주소( V$LOCK의 ADDR컬럼과 조인 가능)
    STATUSACTIVE세션의 상태
    SERVERDEDICATED서버의 타입
    SCHEMA#361스키마 사용자 아이디
    SCHEMANAMERAXSOFT스키마 사용자 이름
    OSUSERhopefullyOS 클라이언트 사용자 이름
    PROCESS1436:648OS 클라이언트 프로세스 ID
    MACHINEHQ10-NE2256OS Machine 이름
    TERMINALHQ10-NE2256OS 터미널 이름
    PROGRAMSQL*PLUSOS 프로그램 이름
    TYPEUSER세션 타입
    SQL_ADDRESS0700000502F77800현재 수행되고 있는 SQL문의 구별을 위한 주소 ( V$SQLAREA의 ADDRESS컬럼과 조인 가능)
    SQL_HASH_VALUE156003993현재 수행되고 있는 SQL문 구별을 위한 Hash 값( V$SQLAREA의 HASH_VALUE컬럼과 조인 가능)
    SQL_IDgdwxvqw4nsvnt 
    SQL_CHILD_NUMBER0 
    PREV_SQL_ADDR070000043907DF38가장 최근에 수행되었던 SQL문의 구별을 위한 주소( V$SQLAREA의 ADDRESS컬럼과 조인 가능)
    PREV_HASH_VALUE3851972948가장 최근에 수행되었던 SQL문 구별을 위한 Hash 값( V$SQLAREA의 HASH_VALUE컬럼과 조인 가능)
    PREV_SQL_IDcg9wzx3kthwan 
    PREV_CHILD_NUMBER0 
    PLSQL_ENTRY_OBJECT_ID  
    PLSQL_ENTRY_SUBPROGRAM_ID  
    PLSQL_OBJECT_ID  
    PLSQL_SUBPROGRAM_ID  
    MODULESQL*PLUS현재 실행되고 있는 모듈의 이름
    MODULE_HASH2468076772모듈의 Hash 값
    ACTION3.1.5 (Build:5)현재 실행되고 있는 Action의 이름
    ACTION_HASH775161987Action의 Hash 값
    CLIENT_INFO 클라이언트의 정보 값
    FIXED_TABLE_SEQUENCE429762060데이터베이스에 콜을 하고, 다이나믹 퍼포먼스 테이블(Dynamic Perfomance Table)을 조회할 때마다 값이 증가된다.
    ROW_WAIT_OBJ#341579락으로 인해 기다리고 있는 로우가 속한 오브젝트 번호를 보여준다.( DBA_OBJECTS뷰의 OBJECT_ID 컬럼과 조인 가능)
    ROW_WAIT_FILE#329락으로 인해 기다리고 있는 로우가 속한 파일의 번호를 보여준다.( DBA_DATA_FILES의 FILE_ID, V$DATAFILE의 FILE# 컬럼들과 조인 가능)
    ROW_WAIT_BLOCK#335700락으로 인해 기다리고 있는 로우가 속한 블락 번호를 보여준다.
    ROW_WAIT_ROW#0락으로 인해 기다리고 있는 블락내의 로우 번호를 보여준다.
    LOGON_TIME2008-03-06 오후 2:39:34세션이 로그온한 시간을 나타낸다.
    LAST_CALL_ET409세션의 가장 최근의 DB Call이후 지난 시간을 보여준다.
    PDML_ENABLEDNO이 컬럼은 PDML_STATUS로 바뀌었음.
    FAILOVER_TYPENONE 
    FAILOVER_METHODNONE 
    FAILED_OVERNO 
    RESOURCE_CONSUMER_GROUP 세션의 현재 Resource Consumer Group을 보여준다.( DBA_RSRC_CONSUMER_GROUPS뷰의 CONSUMER_GROUP컬럼과 조인 가능 )
    PDML_STATUSDISABLED세션의 현재 Parallel DML의 상태를 보여준다.
    PDDL_STATUSENABLED세션의 현재 Parallel DDL의 상태를 보여준다.
    PQ_STATUSENABLED세션의 현재 Parallel Query의 상태를 보여준다.
    CURRENT_QUEUE_DURATION0 
    CLIENT_IDENTIFIER Global Application Context에서 이용한다.
    BLOCKING_SESSION_STATUSUNKNOWN 
    BLOCKING_INSTANCE  
    BLOCKING_SESSION  
    SEQ#19373 
    EVENT#116 
    EVENTdb file sequential read 
    P1TEXTfile# 
    P1329 
    P1RAW149 
    P2TEXTblock# 
    P2335700 
    P2RAW0000000000051F54 
    P3TEXTblocks 
    P31 
    P3RAW1 
    WAIT_CLASS_ID1740759767 
    WAIT_CLASS#8 
    WAIT_CLASSUser I/O 
    WAIT_TIME0 
    SECONDS_IN_WAIT0 
    STATEWAITING 
    SERVICE_NAMESYS$USERS 
    SQL_TRACEDISABLED 
    SQL_TRACE_WAITSFALSE 
    SQL_TRACE_BINDSFALSE 

V$PROCESS

  • 기술 예정
    ColumnValueDescription
    ADDR07000001D6C79EB8프로세스의 메모리 주소
    PID2프로세스 ID
    SPID3064180OS 프로세스 ID
    USERNAMERAXSOFTOS 유저 이름
    SERIAL#1세션 시리얼 번호
    TERMINALUNKNOWNOS 터미널 이름
    PROGRAMoracle@ (PMON)OS 프로그램 이름
    TRACEID Trace ID
    BACKGROUND1Background일 때 1
    LATCHWAIT Latch Wait 일때 메모리 주소
    LATCHSPIN Latch Spinning 일때 메모리 주소
    PGA_USED_MEM329394 
    PGA_ALLOC_MEM580290 
    PGA_FREEABLE_MEM0 
    PGA_MAX_MEM580290 


출처 : http://www.gurubee.net/display/CORE/Dynamic+View


Posted by airlueos
,

자주 참조하는 딕셔너리(출처: 마소지 2003.09)
분류성능뷰 / 딕셔너리딕셔너리
세션과 관련된 정보V$SESSION세션에 대한 전반적인 정보를 보여준다
V$SESSSTAT세션의 현황에 대한 통계정보를 보여준다
V$SESSION_WAIT세션의 WAITING 통계정보를 보여준다
V$SESSION_EVENT세션의 현재 WATING EVENT를 보여준다
V$SESS_IO세션의 IO현황을 보여준다
V$STATNAMESESSSTAT의 STATUS의 이름을 보여준다.
성능 관련 정보V$SYSTAT시스템 전반의 성능 통계 정보를 보여준다
V$SYSTEM_EVENT시스템의 WATING EVENT별 통계정보를 보여준다
V$LIBRARYCACHE라이브러리 캐쉬 사용 정보를 보여준다.
V$ROWCACHE데이터 딕셔너리의 사용정보를 보여준다
V$LATCHLATCH에 대한 정보를 보여준다
V$LOCKLOCK에 대한 정보를 보여준다
V$LOCKED_OBJECTLOCK이 걸린 오브젝트에 대한 정보를 보여준다
V$SQLAREASQLAREA에 대한 정보를 보여준다
V$WAITSTAT시스템의 현재 Waiting현황을 보여준다
SQL관련V$SQLParse된 SQL문장을 보여줌
V$SQLTEXT라인별로 SQL문장을 보여줌
V$SQLTEXT_WITH_NEWLINESNewLine을 포함하여 SQL문장을 보여줌
시스템V$SGASGA 의 정보를 보여준다
V$PARAMETERInitSID.ora 등에서 설정된 파라메터, 즉 데이터베이스의 구동되었을 때의 환경 파라메터 정보이다
V$CONTROLFILEControl 파일에 대한 정보를 보여준다.
V$DATAFILE데이터 파일에 대한 정보를 보여준다.
V$LOG, V$LOGFILE리두 로그에 대한 정보를 보여준다.
USERDBA_USERS데이터베이스 USER에 대한 정보를 보여준다
권한DBA_ROLESROLE에 대한 정보를 보여준다.
DBA_TAB_PRIVS테이블에 대한 권한이 설정된 정보를 보여 준다
DBA_SYS_PRIVSSYSTEM 권한이 설정된 정보를 보여준다
DBA_ROLE_PRIVSROLE에 대한 권한이 설정된 정보를 보여 준다.
DBA_COL_PRIVS컬럼 단위로 권한이 설정된 정보를 보여준다.
세그먼트&오브젝트DBA_SEGMENTS세그먼트(저장공간이 있는 오브젝트)에 대한 정보를 보여준다.
DBA_OBJECTS모든 오브젝트에 대한 정보를 보여준다.
테이블 V$TABLESPACE테이블 스페이스에 대한 정보를 보여준다.
DBA_TABLESPACES테이블 스페이스에 대한 정보를 보여준다.
DBA_DATA_FILES테이블스페이스를 구성하고 있는 데이터 파일에 대한 정보를 보여준다.
DBA_FREE_SPACE아직 사용되지 않은 영역에 대한 정보를 보여준다.
DBA_EXTENTS할당된  EXTENT의 정보를 보여준다.
DBA_TS_QUOTASQUOTA가 설정된 정보를 보여준다
테이블DBA_TABLES테이블에 대한 정보를 보여준다.
DBA_TAB_COLUMNS테이블을 구성하는 컬럼에 대한 정보를 보여준다
DBA_TAB_COMMENTS테이블의 설명에 대한 정보를 보여준다
DBA_PART_TABLES파티션 테이블에 대한 정보를 보여준다.
DBA_PART_KEY_COLUMNS파티션을 구성하는 기준 컬럼에 대한 정보를 보여준다
DBA_COL_COMMENTS컬럼에 대한 설명에 대한 정보를 보여 준다
인덱스DBA_INDEXES인덱스에 대한 정보를 보여준다.
DBA_PART_INDEXES파티션된 인덱스에 대한 정보를 보여준다
DBA_IND_COLUMNS인덱스를 구성하는 컬럼에 대한 정보를 보여준다
CONSTRAINTDBA_CONSTRAINTS테이블에 걸려있는 제약조건을 보여준다.
DBA_CONS_COLUMNS제약조건을 구성하는 컬럼에 대한 조건을 보여준다.
DBA_VIEWSVIEW를 정의한 정보를 보여준다.
시노님DBA_SYNONYMS시노님에 대한 정보를 보여준다.
시퀀스DBA_SEQUENCES시퀀스에 대한 정보를 보여준다.
DB LINKDBA_DB_LINKSDB 링크에 대한 정의를 보여준다
트리거DBA_TRIGGERS트리거에 대한 정의를 보여준다.
DBA_TRIGGER_COLS컬럼 단위로 작성된 트리거에 대한 정의를 보여준다.
ROLLBACKDBA_ROLLBACK_SEGS롤백세그먼트에 대한 정보를 보여 준다.
FUNCTION, PROCEDURE,DBA_SOURCEFUNCTION, PROCEDURE,PACKAGE를 구성하는 PL/SQL 소스코드를 보여준다
PACKAGE

출처 : Tong - sejongman님의 ORACLE통

Posted by airlueos
,

[oracle] exp/imp 방법

oracle 2013. 4. 1. 13:27

출처 : http://blog.naver.com/egg45pig/80055553825

참고 : http://blog.naver.com/keypush/10076745763

 

== exp ==

1.tablespace data위치 확인

sql> select t.name, d.status, d.name from v$tablespace t, v$datafile d where t.ts#=d.ts#;

 

2.user 확인

sql> select tablespace_name from dba_tablespaces;

 

3.exp 백업

# exp your_user/your_pass file='백업파일명'

 

== imp ==

1.user / tablespace 확인. 있을시 삭제

sql> drop user your_user cascade;

--> user접속으로 인하여 삭제 안될때 확인 : select sid, serial# from v$session where username='your_user';

sql> drop tablespace your_tablespace_data including contents;

sql> drop tablespace your_tablespace_idx including contents;

sql> drop tablespace your_tablespace_temp including contents;

 

2.tablespace dbf 파일 삭제(확인된 위치의 tablespace 삭제)

sql> select t.name, d.status. d.name from v$tablespace t, v$datafile d where t.ts# = d.ts#;

 

3.tablespace 생성

sql> create tablespace your_tablespace_data datafile '/oracle/oradata/your_tablespace_data.dbf' size 300m autoextend on;

sql> create tablespace your_tablespace_idx datafile '/oracle/oradata/your_tablespace_idx.dbf' size 200m autoextend on;

sql> create tablespace your_tablespace_temp datafile '/oracle/oradata/your_tablespace_temp.dbf' size 200m autoextend on;

 

4.user 생성

sql> create user your_user identified by your_pass default tablespace your_tablespace_data temporary tablespaceyour_tablespace_temp;

 

5.user 권한

sql> grant connect, dba, resource, exp_full_database, imp_full_database to your_user;

 

6.imp

# imp your_user/your_pass file='백업파일명'

[출처] oracle exp/imp 방법|작성자 아작

Posted by airlueos
,