tnsping 시에 나는 오류

 

$ORACLE_HOME\NETWORK\ADMIN\sqlnet.ora 수정

 

NAMES.DIRECTORY_PATH = (TNSNAMES,HOSTNAME,ONAMES)

Posted by Any DB
,

1. listener.ora  (default location = $ORACLE_HOME/network/admin)

 

 LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = linux-single)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

 

SID_LIST_LISTENER=

 (SID_LIST =

  (SID_DESC =

     (ORACLE_HOME=/oracle/app/oracle/product/11.2.0)

    (SID_NAME=LINUXORCL)

  )

)

ADR_BASE_LISTENER = /oracle/app/oracle

 

 

 - LISTENER : 리스너 이름이며 다른 이름으로 설정 가능. SID_LIST_리스너명 항목에서 리스너명과 동일

 - ADDRESS_LIST : ADDRESS들의 모임이며 여러 개의 ADDRESS를 동시에 설정 가능

 - ADDRESS : 데이터베이스 서버의 주소이며 프로토콜, 서버명 및 사용포트로 구성된다.

 - SID_LIST_LISTENER : 리스너가 서비스하는 데이터베이스 정보를 설정하며 SID_LIST_리스너명으로 설정

 - SID_LIST : 해당 리스너 프로세스가 하나 이상의 데이터베이스를 서비스 할 경우에 해당 부분에 여러개의  

                   SID_DESC를 등록한다.

 - GLOBAL_DBNAME : 전역 데이터베이스 이름을 지정하며 생략 가능하다.

 - ORACLE_HOME : 오라클 홈 디렉토리의 위치를 지정한다.

 - SID_NAME : 리스너의 접속을 허용하는 데이터베이스의 SID 명을 지정한다.

 

리스너 파라메터

 - LOG_DIRECTORY_리스너명 : 로그 파일이 저장될 경로 이름을 설정

 - LOG_FILE_리스너명 : 로그가 기록될 파일명 설정

 - LOGGING_리스너명 : 로그 기능의 활성화 여부 설정 (ON 또는 OFF)

 - PASSWORD_리스너명 : 리스너를 중단시킬 경우 필요한 비밀번호를 설정

 

 

 [LINUXORCL]linux-single:/oracle> lsnrctl status   <---리스너 상태체크

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-AUG-2013 00:19:39

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux-single)(PORT=1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
TNS-12541: TNS:no listener
 TNS-12560: TNS:protocol adapter error
  TNS-00511: No listener
   Linux Error: 111: Connection refused

리스너 시작

[LINUXORCL]linux-single:/oracle> lsnrctl start    <-- 리스너 시작

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-AUG-2013 00:22:02

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Starting /oracle/app/oracle/product/11.2.0/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /oracle/app/oracle/product/11.2.0/network/admin/listener.ora
Log messages written to /oracle/app/oracle/diag/tnslsnr/linux-single/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux-single)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux-single)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                02-AUG-2013 00:22:04
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/diag/tnslsnr/linux-single/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux-single)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

리스너 상태체크

[LINUXORCL]linux-single:/oracle> lsnrctl status   <-- 리스너 상태체크

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 02-AUG-2013 00:22:26

Copyright (c) 1991, 2011, Oracle.  All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=linux-single)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                02-AUG-2013 00:22:04
Uptime                    0 days 0 hr. 0 min. 24 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/app/oracle/product/11.2.0/network/admin/listener.ora
Listener Log File         /oracle/app/oracle/diag/tnslsnr/linux-single/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=linux-single)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "LINUXORCL" has 1 instance(s).
  Instance "LINUXORCL", status READY, has 1 handler(s) for this service... 사용준비완료
Service "LINUXORCLXDB" has 1 instance(s).
  Instance "LINUXORCL", status READY, has 1 handler(s) for this service...
The command completed successfully

 

 

2. tnsnames.ora 설정 (location = $ORACLE_HOME/network/admin)

 

 LINUXORCL =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 122.99.166.149)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = LINUXORCL)
    )
  )

 

 

- LINUXORCL : 서비스이름

- DESCRIPTION : 접속하고자 하는 대상 데이터베이스 정보

- ADDRESS : 접속하고자 하는 데이터베이스 서버의 리스너를 호출하기 위한 주소정보

- CONNECT_DATA : SERVICE_NAME 옵션을 이용하여 접속할 리스너 프로세스가 사용하는 서비스 이름을 지정

                          하거나 또는 SID옵션을 이용하여 데이터베이스의 SID명을 지정

 

 

 tnsping test

C:\Users\Boeok>tnsping LINUXORCL

TNS Ping Utility for 32-bit Windows: Version 11.2.0.3.0 - Production on 01-8월 -
2013 16:02:49

Copyright (c) 1997, 2011, Oracle.  All rights reserved.

사용된 매개변수 파일:
F:\app\Boeok\product\11.2.0\client_1\network\admin\sqlnet.ora


별칭 분석을 위해 TNSNAMES 어댑터 사용
(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 122.99.166.149
)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = LINUXORCL)))에 접속하려고 시도
하는 중
확인(30밀리초)  <-- 해당 서버와의 응답시간

C:\Users\Boeok>

 

sqlplus 접속시도


C:\Users\Boeok>sqlplus test/test@LINUXORCL

SQL*Plus: Release 11.2.0.3.0 Production on 목 8월 1 16:05:03 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


다음에 접속됨:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> 클라이어트에서 서버로 접속된 상황

 

 

3. SQLNET.ORA

 

클라이언트와 데이터베이스 서버 양쪽에 존재하는 파일로 오라클 넷을 옵션 설정등을 저장하는 파일.

즉. 오라클 서버로 어떻게 접속할 것인지를 설정하는 파일

 

 SQLNET.AUTHENTICATION_SERVICES= (NTS | none)

클라이언트가 오라클 서버로 접속할 때 오라클이 어떠한 인증 서비스를 사용할 것인가

none : sys 계정으로 로그인할때 비밀번호를 입력해야만 들어 갈수 있게 설정

sqlplus "/as sysdba" 가 안먹힘

 

 NAMES.DIRECTORY_PATH= (TNSNAMES | ONAMES | HOSTNAME)

클라이언트가 디비 접속 시 사용하는 STRING NAME ALIAS를 무엇을 통해 확인할지를 결정하는 것

 

TNSNAME : 로컬네임서버를 확인하겠다는 의미, (TNSNAME.ORA파일 확인)

 

ONAMES : 오라클 네임서버를 확인하겠다는 의미이며 추가적으로 NETWORK ADDRESS를 설정해줘야 함.

 

HOSTNAME : 호스트네임서버를 확인하겠다는 의미이며 TNSNAME.ORA파일은 필요없이 DNS나 WINDOWS의 경우 HOST파일(C:\WINDOWS\SYSTEM32\DRIVERS\ETC)에 등로되어 있으면 된다

주의사항 --> 공백이 절대 존재해선 안된다

NAMES.DIRECTORY_PATH=(TNSNAMES, HOSTNAME) X

NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME) O

 

만약 공백 존재시 다음과 같은 에러가 발생할수 있다.

ORA-12170 : TNS: Connect timeout occured

ORA-12560 : TNS: protocol adapter error

 

tcp.validnode_checking = yes

 

tcp.invited_nodes = (IP1, IP2, IPn)     <- 정의된 IP만 접근 나머지는 모두 접근 거부

tcp.excluded_nodes=(IP1, IP2, IPn)   <- 정의된 IP만 접근거부, 나머지는 모두 접근 가능

sqlnet.expire_time = 10     <-- 세션을 정리하는 시간  10분에 한번씩 신호를 보내서 새션을 정리하는 옵션

 

 

 

Point : 클라이언트와 서버의 접속이 안될때 확인해야할 방법중 가장 우선은 방화벽이 설정되어 있는지 아닌지를 확인해야한다 os에서 방화벽을 실행시켜두면 리스너와 클라이어인트설정이 잘되어도 접속이 되지 않는다.

그 다음으로는 위에서 보여준것과 같이 listener, tnsname, sqlnet.ora에 공백이 존재해서도 안된다.



출처: http://boeok.tistory.com/category/Oracle/Admin?page=2 [Secret]

Posted by Any DB
,

1. 확인

 SQL> SELECT * FROM DBA_PROFILES
  2  WHERE PROFILE='DEFAULT';

PROFILE                        RESOURCE_NAME                    RESOURCE          LIMIT
---------------- ----------------------------------- ---------------    ----------------
DEFAULT                        COMPOSITE_LIMIT                      KERNEL       UNLIMITED
DEFAULT                        SESSIONS_PER_USER                 KERNEL       UNLIMITED
DEFAULT                        CPU_PER_SESSION                     KERNEL       UNLIMITED
DEFAULT                        CPU_PER_CALL                          KERNEL       UNLIMITED
DEFAULT                        LOGICAL_READS_PER_SESSION  KERNEL       UNLIMITED
DEFAULT                        LOGICAL_READS_PER_CALL       KERNEL       UNLIMITED
DEFAULT                        IDLE_TIME                                 KERNEL       UNLIMITED
DEFAULT                        CONNECT_TIME                         KERNEL       UNLIMITED
DEFAULT                        PRIVATE_SGA                            KERNEL       UNLIMITED
DEFAULT                        FAILED_LOGIN_ATTEMPTS          PASSWORD       10
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD       180

PROFILE                        RESOURCE_NAME                      RESOURCE         LIMIT
-------- ------- ------------------------------------ ---------------- -----------------
DEFAULT                        PASSWORD_REUSE_TIME            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_REUSE_MAX            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_VERIFY_FUNCTION   PASSWORD     NULL
DEFAULT                        PASSWORD_LOCK_TIME             PASSWORD     1
DEFAULT                        PASSWORD_GRACE_TIME           PASSWORD      7

16 rows selected.
SQL>

 

 

2. 변경 

SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

Profile altered.

SQL> SELECT * FROM DBA_PROFILES
  2  WHERE PROFILE='DEFAULT';

PROFILE                        RESOURCE_NAME                    RESOURCE          LIMIT
---------------- ----------------------------------- ---------------    ----------------
DEFAULT                        COMPOSITE_LIMIT                      KERNEL        UNLIMITED
DEFAULT                        SESSIONS_PER_USER                 KERNEL        UNLIMITED
DEFAULT                        CPU_PER_SESSION                     KERNEL        UNLIMITED
DEFAULT                        CPU_PER_CALL                          KERNEL        UNLIMITED
DEFAULT                        LOGICAL_READS_PER_SESSION  KERNEL        UNLIMITED
DEFAULT                        LOGICAL_READS_PER_CALL       KERNEL        UNLIMITED
DEFAULT                        IDLE_TIME                                 KERNEL        UNLIMITED
DEFAULT                        CONNECT_TIME                         KERNEL        UNLIMITED
DEFAULT                        PRIVATE_SGA                            KERNEL        UNLIMITED
DEFAULT                        FAILED_LOGIN_ATTEMPTS          PASSWORD       10
DEFAULT                        PASSWORD_LIFE_TIME               PASSWORD    UNLIMITED
PROFILE                        RESOURCE_NAME                      RESOURCE         LIMIT
-------- ------- ------------------------------------ ---------------- -----------------
DEFAULT                        PASSWORD_REUSE_TIME            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_REUSE_MAX            PASSWORD     UNLIMITED
DEFAULT                        PASSWORD_VERIFY_FUNCTION   PASSWORD     NULL
DEFAULT                        PASSWORD_LOCK_TIME             PASSWORD     1
DEFAULT                        PASSWORD_GRACE_TIME           PASSWORD      7

16 rows selected.

 

 

 



출처: http://boeok.tistory.com/category/Oracle/Admin?page=2 [Secret]

Posted by Any DB
,

기존 패스워드 파일 백업 및 삭제

 

패스워드 파일 재생성

orapwd file=/oracle/app/oracle/product/11.2.0/dbs/orapwLINUXORCL(오라클sid)

 

패스워드 파일을 삭제하기 위해서는 rm과 같은 운영체제 명령어를 사용하여 파일을 삭제하면 된다

패스워드 파일을 수정하기 위해서는 데이터베이스를 종료한후 이전 패스워드 파일을 삭제하고 새로 생성한다. 데이터베이스를 재기동하게 되면 새로운 패스워드 파일의 값이 적용된다.



출처: http://boeok.tistory.com/entry/SYS-SYSTEM-PASSWORD를-잃어버려-DB접속을-못할-경우?category=564563 [Secret]

 

Posted by Any DB
,

9i, 10g까지는 대소문자 구분이 없었지만 11g부터는 대소문자 구분을 하게 된다.

 주로 로그인시 대소문자 구분을 위해서 사용된다.

SQL> show parameter sen

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon             boolean     TRUE  << 대소문자사용중(default)
SQL>
SQL>
SQL> alter system set sec_case_sensitive_logon=FALSE;  << 대소문자사용안함 설정

System altered.

SQL> show parameter sen

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon             boolean     FALSE << 설정완료


SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  313860096 bytes
Fixed Size                  1344652 bytes
Variable Size             281021300 bytes
Database Buffers           25165824 bytes
Redo Buffers                6328320 bytes
Database mounted.
Database opened.
SQL> show parameter sen

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
sec_case_sensitive_logon             boolean     FALSE
SQL>

 

SQL> show parameter spfile;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      /oracle/app/oracle/product/11.
                                                 2.0/dbs/spfileLINUXORCL.ora
SQL> 

 

 

- Dos 공격으로부터의 보호

  SEC_PROTOCOL_ERROR_FURTHER_ACTION = CONTINUE (Default)

  SEC_PROTOCOL_ERROR_TRACE_ACTION=NONE,TRACE(Default),LOG,ALERT (모니터링 지정)

 

- Brute Force 공격으로부터의 보호

  SEC_MAX_FAILED_LOGIN_ATTEMPTS = 1 - (Default)



출처: http://boeok.tistory.com/entry/11g-대소문자-구분?category=564563 [Secret]

Posted by Any DB
,

* tnsnames.ora에 WINORCL로 서버 이름을 등록 후 WINDOWS CLIENT에서 접속방법.

 

system 계정으로 접속

C:\Users\Boeok>sqlplus "system/oracle@WINORCL"

SQL*Plus: Release 11.2.0.3.0 Production on 금 8월 2 15:36:24 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


다음에 접속됨:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
winorcl

SQL> exit

 

sys 계정으로 접속

C:\Users\Boeok>sqlplus "sys/oracle@WINORCL as sysdba"

SQL*Plus: Release 11.2.0.3.0 Production on 금 8월 2 15:36:09 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


다음에 접속됨:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> exit

 

 

 

* TNSNAMES.ORA에 WINORCL로 서버 이름을 등록후 LINUX CLIENT에서 접속방법

 

sys 계정으로 접속

 [LINUXORCL]linux-single:/> sqlplus sys/oracle@WINORCL as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Sat Aug 3 00:39:43 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
winorcl

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

system 계정으로 접속
[LINUXORCL]linux-single:/> sqlplus system/oracle@WINORCL

SQL*Plus: Release 11.2.0.3.0 Production on Sat Aug 3 00:39:58 2013

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
winorcl

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[LINUXORCL]linux-single:/>

 

 



출처: http://boeok.tistory.com/entry/Client에서-syssystem-계정으로-Oracle-서버-접속시-명령어?category=564563 [Secret]

Posted by Any DB
,

가끔 오라클은 Start 상태인대 리스너는 no service라는 말을 내뱉으며 db를 인식 못할때가 있다.

db를 아무리 재시작하고 리스너를 내렸다 올려봐도 리스너는 묵묵하다..

그럴땐 db주소를 리스너에 바로 보게끔 파라미터에 입력해 주면 db가 올라오면서 리스너한태 강제로 바라보게 하는 명령어를 주면 된다..

 

 SQL> ALTER SYSTEM SET LOCAL_LISTENER="(ADDRESS=(PROTOCOL=TCP)(HOST=HOSTNAME)(PORT=1521))" SCOPE=SPFILE;

 

 

위의 문장을 입력 후 DB를 SHUTDOWN 한 후 다시 STARTUP 한다



출처: http://boeok.tistory.com/entry/리스너가-db를-인식-못한다고-나올때?category=564563 [Secret]

Posted by Any DB
,

이 패키지를 설정하게 되면 SNP 백그라운드 프로세스가 이 패키지에 설정되어 있는 작업을 수행하게 된다.

SNP 백그라운드 프로세스는 선택적인 프로세스로 초기화 파라미터 파일에 아래의 항목을 설정 한 후 재 시작을 하면 실행 된다.

 

 - job_queue_processes = 1     <-- SNP 프로세스의 개수를 지정한다.

 - job_queue_interval = 60         <-- SNP 프로세스가 Sleep 상태에서 깨어나는 간격을 초로 지정한다.

 

이 패키지는 아래와 같은 다양한 프로시저들을 가지고 있다.

 

submit 

새로운 작업을 job queue 목록에 등록한다 

remove 

job queue에 등록된 job을 제거한다 

change 

job queue에 등록된 job을 변경한다. 

next_date 

job queue에 등록된 job의 작동 시간을 변경한다 

interval 

job queue에 등록된 job의 수행주기를 변경한다 

what 

수행할 procedure or package 변경한다 

run 

등록되어 있는 특정 job을 수동으로 수행한다. 

 

 

 

1. Job 관리하기

 

이 프로시저는 다양한 파라미터의 항목을 가지고 설정 할 수 있다.

 

 - 기본문법

 

 DBMS.JOB.submit (

  job out binary_interger,

 what in varchar2,

 next_date in date default sysdate,

 interval in varchar2 default 'null'

 no_parse in boolean default false

 )

 

 - 주요 파라미터의 의미 

 job

 job 번호로 다른 프로시저에서 호출 될 수 있다. 

what 

 수행할 pl/sql 혹은 procedure or package 이름을 지정한다.

 이곳에 직접 수행하기를 원하는 sql 문장을 써도 된다. 

next_date 

 다음에 수행될 시간을 지정한다. 

interval 

 수행되는 주기를 지정하며 초 단위까지 지정 가능하다. 

no_parse 

 Parse 여부를 지정한다. 기본값은 false로 parse를 수행한다. 

 

 

 

 (1) 새로운 job 등록 테스트

 위에서 살펴본 프로시저들을 사용해서 새로운 job을 등록하는 테스트를 하겠다. 테스트 내용은 job_test01이라느 테이블을 만든 후 1분에 1번씩 해당 테이블에 데이터를 insert 하는 것이다.

 

 step 1. 테스트용 테이블과 sequencem procedure를 생성한다. 

SQL> conn ORACLE_TEST/oracle;
Connected.
SQL>
SQL>
SQL>
SQL> create sequence seq_job_seq1;

Sequence created.

SQL> create table job_test01
  2  (no number,
  3  name varchar2(5)) ;

Table created.

SQL> create or replace procedure insert_job_test01
  2  is
  3   begin
  4   insert into ORACLE_TEST.job_test01
  5   values(seq_job_seq1.nextval , dbms_random.string('a',3));
  6   end;
  7  /

Procedure created.

SQL> 

 

 

 

 step2. job을 등록할 프로시저를 생성한다. 

SQL> !vi job1.sql
begin
 dbms_job.submit (:jno,
  'ORACLE_TEST.insert_job_test01;',
  sysdate,
  'sysdate + 1/24/60' ,     <-- 1분에 한번씩 실행됨
  false);
 end;
/

:wq! 

 

 

 * 참고 : 위 5행의 시간 설정 방법 * 

 - 10분에 한번씩 실행하도록 지정하는 경우

  sysdate + 1/24/6 or sysdate + 1/144

-> 1/24 (1시간-60분)  / 6 : 10분 단위,

    1/144 : 24*6으로 나누어도 같은 의미 입니다. (1일은 1440분이므로)

 

- 1분에 한번으로 지정하는 경우

  sysdate + 1/24/60 or sysdate +1/1440

 

- 5분에 한번으로 지정하는 경우

  sysdate + 5/24/60

 

 - 매일 새벽 2시로 지정하는 경우

  trunc(sysdate) + 1 + 2/24    -> 다음날 새벽 2시를 지정함

 

위 예에서 trunc(sysdate)를 사용한 이유는 trunc를 사용하지 않으면 분 단위까지 나오기 때문입니다.

 

 - 매일 반 11시로 지정하는 경우

  trunc(sysdate) +23/24     -> 오늘 밤 11시를 지정했음

 

 

 

 

 step3. job을 등록한다.

SQL> variable jno number;
SQL>
SQL> @job1.sql

PL/SQL procedure successfully completed.

SQL> print jno;

       JNO
----------
        21                                        <-- 현재 할당된 job 번호를 확인한다. 이번호는 random으로 지정됨

SQL> commit;                                <-- 이 시간부터 job이 수행된다. 즉 commit이 안되면 수행되지 않는다

Commit complete.

SQL>
SQL>
 

 

 

 

 step4. 수행되고 있는 job 내용을 확인한다.

SQL> set line 200
SQL> col what for a50
SQL> select what, job, next_date, next_sec, failures, broken
  2  from user_jobs
  3  where what ='ORACLE_TEST.insert_job_test01;';

 WHAT                                                      JOB   NEXT_DATE    NEXT_SEC    FAILURES  B
---------------------------------------- ------ -------------  -----------   ----------  -
ORACLE_TEST.insert_job_test01;                    21   29-OCT-13        18:29:24            0         N

SQL>

 

 

 

 step5. 실제 테이블에 데이터가 입력되는지 확인한다.

 SQL> select * from job_test01;

        NO NAME
---------- -----
         1 zgy
         2 skA
         3 jCl
         4 Akc
         5 FLw

SQL>

 

 

 

(2) 등록되어 있는 job 삭제하기

SQL> select what, job, next_date, next_sec, failures, broken
  2  from user_jobs;

WHAT                                                      JOB  NEXT_DATE    NEXT_SEC           FAILURES B
------------------------------------- -------- ------------ -------------- -     --------- ---
ORACLE_TEST.insert_job_test01;                   21   29-OCT-13    18:33:25                  0            N

SQL> exec dbms_job.remove(21);

PL/SQL procedure successfully completed.

SQL>  select what, job, next_date, next_sec, failures, broken
  2  from user_jobs;

no rows selected

SQL> 

 

 

 

 (3) 등록되어 있는 job 수정하기

SQL> select what, job, next_date,next_sec,interval
  2  from user_jobs;


WHAT                                      JOB    NEXT_DATE            NEXT_SEC                       INTERVAL
------------------------------ ---- ------------------- ---------------             ------------------ORACLE_TEST.insert_job_test01;   22    29-OCT-13             18:37:16                       sysdate + 1/24/60
 

 

 

 수행시간을 1분마다에서 5분마다 1회 수행으로 변경함.

 

 SQL> exec dbms_job.change(:jno,'ORACLE_TEST.insert_job_test01;',sysdate,'sysdate+5/24/60');

PL/SQL procedure successfully completed.

 

SQL> select what, job, next_date,next_sec,interval
  2  from user_jobs;

WHAT                                       JOB       NEXT_DATE                NEXT_SEC                   INTERVAL
------------------------------- ----      -------------             ----------------     ----------------
ORACLE_TEST.insert_job_test01;    22        29-OCT-13                  18:38:35                  sysdate+5/24/60

SQL>

 

 



출처: http://boeok.tistory.com/category/Oracle/Admin [Secret]

 

Posted by Any DB
,

$ORACLE_HOME/network/admin/listener.ora 에서 다음 명령어를 추가해준다.

 

맨 마지막줄

ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON

DIAG_ADR_ENABLED_LISTENER=OFF

LOG_FILE_LISTENER=listener_etc.log    <<--- LOG로 남길 파일

LOG_DIRECTORY_LISTENER=/tmp        <<--- LOG가 저장될 위치

 

wq!

 

lsnrctl reload

 

원복방법

위의 3줄 삭제후 저장


 

Posted by Any DB
,