Oracle Trigger 트리거

삭제
        DROP TRIGGER trigger_name;


 비활성화
        ALTER TRIGGER trigger_name DISABLE;

 활성화
        ALTER TABLE trigger_name ENABLE;

 특별한 테이블에 대한 모든 트리거의 활성/비활성화
        ALTER TABLE table_name ENABLE ALL TRIGGERS;
        ALTER TABLE table_name  DISABLE ALL TRIGGERS;


 특정 문구가 들어간 트리거 조회

        SELECT * FROM all_source WHERE text LIKE '%FW%';


 트리거 내용 조회

        SELECT line, text FROM all_source WHERE name = '트리거네임' ORDER BY line;


Spfile 사용하는 상태에서 아카이브 모드 설정

SQL> alter system set log_archive_dest_1='LOCATION=/home/oracle/oradata/ORCL/ArchiveLog1' scope=spfile;
SQL> alter system set log_archive_dest_2='LOCATION=/home/oracle/oradata/ORCL/ArchiveLog2' scope=spfile;
SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;


DB 재구동


SQL> shutdown immediate;
SQL> startup mount;


아카이브 사용 설정

SQL> alter database archivelog;
SQL> alter database open;


Oracle 캐릭터 셋 확인 쿼리

SELECT parameter,value FROM nls_database_parameters WHERE parameter like '%CHAR%';

특정 파티션에 공간이 없을때 데이터 파일의 이동

해당테이블 스페이스 offline

> ALTER TABLESPACE tablespace OFFLINE;


OS에서 datafile copy

> ALTER TABLESPACE tablespace RENAME DATAFILE '예전filename' TO '새filename';


해당 테이블스페이스 online

> ALTER TABLESPACE tablespace ONLINE;


* system 같이 offline 이 안되는 경우.

 - DB를 내리고, OS 명령으로 복사 한후에, startup mount 단계에서 rename 지정


오라클 DB의 리스너 포트 변경하는 법

리스너 포트가 listener.ora 파일만 변경한다고 해서 변경 되는게 아닙니다.

이것 때문에 얼마나 고생을 했는지....


근데 오라클 메뉴얼에 있다는게 함정....


먼저 lsnrctl stop 으로 리스너를 중지합니다
그리고 listener.ora에서 1521 포트를 변경하고자하는 포트로 변경합니다.


LISTENER =
   (DESCRIPTION_LIST =
      (DESCRIPTION =
         (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
         (ADDRESS = (PROTOCOL = TCP)(HOST = DB서버호스트네임 or ip)(PORT = 1523))
      )
   )


이렇게 설정해주고 나서 lsnrctl start 명령으로 재시작 합니다.


오라클로 접속한 다음에


$ sqlplus / as sysdba

SQL> ALTER SYSTEM SET LOCAL_LISTENER = "(ADDRESS=(PROTOCOL=TCP)(HOST=DB서버호스트네임 or ip)(PORT=1523))";

SQL> ALTER SYSTEM REGISTER;


ex for RAC)

SQL> ALTER SYSTEM SET LOCAL_LISTENER = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DB1서버호스트네임 or ip)(PORT=2521))(ADDRESS=(PROTOCOL=TCP)(HOST=DB2서버호스트네임 or ip)(PORT=2521)))" scope=both;



lsnrctl status 명령과 netstat -nlp | grep 1523 으로 확인해보면 정상 변경이 확인 될 겁니다.

아파치 톰캣에서 오라클 연동

오라클을 DB로 사용 하는 홈페이지들이 가장 많이 사용하는게 아마도 톰캣이 아닐까 싶네요.


web서버와 DB서버가 분리 되어 있을때,


server.xml 파일에서 오라클 서버의 접속 정보를 잡아주는데요.

일반적으로 아래와 같은 형식을 접속 정보로 사용 합니다.


jdbc:oracle:thin:@db서버ip:리스너포트:ORACLE_SID


재밌는건 딱히 오라클 클라이언트를 설치 하지 않아도, tnsnames.ora 파일이 없어도 리스너로 접속이 되더군요.


웹서버 쪽에 JDK와 톰캣을 설치 하고나서 오라클에서 특정 파일을 복사해 줘야 하는데요.


(Tomcat 설치폴더)\lib\
(JDK 설치폴더)\lib\ext\


에 해당 파일을 설치 해주면 됩니다.


classes12.jar 나 ojdbc14.jar 등등의 파일이 오라클 설치 폴더 내에 있습니다.

오라클 설치 폴더내에 JDBC/lib 이나 JRE같은 자바 관련 경로를 뒤져보면 있습니다.

버전마다 다 달라서..

ojdbc 뒤에 붙은 숫자에 따라 오라클이나 톰캣 지원 버전이 좀 다른걸로 알고 있습니다.

맞는걸 찾아서 설치 복사 해주면 됩니다.

login.sql

터미널을 이용해서 오라클에 접속했을때 일반적으로 오라클의 프롬프트가


SQL>


이렇게 표시되는데 이것을 사용자의 계정으로 변경해 줄수 있습니다.


oracle 계정의 홈 폴더에 (주로 홈폴더에서 sqlplus / as sysdba 명령을 이용해 로그인하기 때문에)

login.sql 을 생성 해주고

set sqlprompt "_USER>"


를 넣어주면 유저명으로 된 프롬프트를 사용 할수 있어, 어떤 계정으로 로그인해서 사용중인지 편히 볼수 있습니다.


$ sqlplus /as sysdba 로그인시

SYS>


> conn scott/tiger 으로 로그인시

SCOTT>


프롬프트로 보여 줍니다.


그밖에 set line, set pagesize 등의 자주 쓰는 옵션을 지정해주면, 접속시 자동으로 적용 해줍니다.


ex>


set line 200

set pagesize 50

set sqlprompt "_USER>"



SYS 계정 암호 묻도록 설정

GUI 모드에서 netca를 실행하여 '이름 지정 방법'을 설정 해주면
sqlnet.ora 파일 생성 됩니다.

$ vi sqlnet.ora

sqlnet.authentication_services=(none)  <- 줄을 추가

$ sqlplus sys/passwd (dbca 설치시 사용한 암호)


OrapwSID <- 암호파일


삭제 되었을시 올바른 계정과 암호를 넣어도 접속이 되질 않습니다.

dbs] $ orapw file = $ORACLE_HOME/dbs/orapwSID
Enter password for SYS : 압호 입력

<패스워드 복구> : 반드시 설치 폴더내 dbs 폴더 아래 생성.

'ORACLE > Operation & Admin' 카테고리의 다른 글

아파치 톰캣에서 오라클 연동  (0) 2013.02.01
login.sql  (0) 2013.01.23
SYS 계정 암호 묻도록 설정  (0) 2013.01.23
10g 에서 11g로 업그레이드  (0) 2012.11.27
일반적으로 사용자 계정에 주는 권한  (0) 2012.11.27
exp/imp 사용자 계정 권한 주기  (0) 2012.09.24