[Oracle] ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

Oracle/Oracle Programming 2013. 9. 25. 16:01







 listener.ora(수정 전)

# listener.ora Network Configuration File: C:\Oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\Oracle\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.70.40)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = C:\Oracle



 listener.ora(수정 후)

# listener.ora Network Configuration File: C:\Oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\Oracle\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\Oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.30.70.40)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = C:\Oracle




http://blog.naver.com/PostView.nhn?blogId=rookieangel&logNo=140123979566 참조

[Oracle] ORA-12638 : 신용 검색에 실패했습니다.

Oracle/Oracle Programming 2013. 8. 16. 11:48



■ Oracle ORA-12638 : 신용 검색에 실패했습니다.




01. Oralce 사용자 계정에 접근중 『 ORA-12638 : 신용 검색에 실패했습니다. 』 라는 에러가 발생하였다.






02. ORACLE 설치 경로의 ~\NETWORK\ADMIN 경로에 위치한 Ssqlnet.ora 파일을 텍스트 편집기로 실행한다.






03. SQLNET.AUTHENTICATION_SERVICES= (NTS)

      #을 붙여 주석처리하면 해결할 수 있다.






[Oracle] 전일, 전주, 전월, 전분기, 전반기, 전년도 구하기

Oracle/Oracle Programming 2013. 8. 7. 14:43

01. 일간


입력값 : 20130228


전일 : SELECT TO_CHAR(TO_DATE('20130228', 'YYYYMMDD') -1, 'YYYYMMDD') FROM DUAL;





02. 주간 


입력값 : 20130228


현재주 : SELECT TO_CHAR(TO_DATE('20130228', 'YYYYMMDD'), 'YYYY')||TO_CHAR(TO_DATE('20130228', 'YYYYMMDD'), 'WW') FROM DUAL;



지난주 : SELECT TO_CHAR(TO_DATE('20130228', 'YYYYMMDD') -7, 'YYYY')||TO_CHAR(TO_DATE('20130228', 'YYYYMMDD') -7, 'WW') FROM DUAL;





03. 월간


입력값 : 201301


지난 월 : SELECT TO_CHAR(TO_DATE('201301', 'YYYYMM') -1, 'YYYYMM') FROM DUAL;




04. 분기


입력값 : 201304


현재 분기 : SELECT TO_CHAR(TO_DATE('201304', 'YYYYMM'),'YYYY')||LPAD(TO_CHAR(TO_DATE('201304', 'YYYYMM'), 'q'), 2, '0') FROM DUAL;


지난 분기 : SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201301', 'YYYYMM'), -1),'YYYY')

               ||LPAD(TO_CHAR(TO_DATE('201301', 'YYYYMM') -1, 'q'), 2, '0') FROM DUAL;




05. 반기 


입력값 : 201307


현재 반기 : SELECT TO_CHAR(TO_DATE('201307', 'YYYYMM'),'YYYY')||LPAD(CEIL(TO_CHAR(TO_DATE('201307', 'YYYYMM'), 'q') / 2), 2, '0') FROM DUAL;


지난 반기 : SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201307', 'YYYYMM'), -1),'YYYY')

                ||LPAD(CEIL(TO_CHAR(TO_DATE('201307', 'YYYYMM') -1, 'q') / 2), 2, '0') FROM DUAL;





06. 년도


입력값 : 2013


지난 년도

SELECT TO_CHAR(ADD_MONTHS(TO_DATE(:CLO_YM, 'YYYY'), -12), 'YYYY') FROM DUAL;




[Oracle] ORA-01950 : 테이블스페이스 'USERS'에 대한 권한이 없습니다.

Oracle/Oracle Programming 2013. 5. 8. 10:20

Oralce 11g에서 새롭게 만든 테이블에 INSERT문을 실행하는 도중


'ORA-01950 : 테이블스페이스 'USERS'에 대한 권한이 없습니다.'


라고 뜨는 에러가 발생하였다.



※ 해결방법


01. 터미널을 실행한다.


02. 시스템 계정으로 Oracle을 실행한다.


03. 아래와 같이 입력한다.

 설명 : alter user 테이블명 default tablespace users quota unlimited on users;

 실행 예 : alter user bookshelf default tablespace users quota unlimited on users;





※아래와 같이 실행하면 해결된다.




[Oracle] 문자 처리 함수

Oracle/Oracle Programming 2013. 2. 11. 18:06

■ 문자 처리 함수

함 수

설              명

 UPPER

 -. 대문자로 변환시킨다.

 LOWER  -. 소문자로 변환시킨다.
 INITCAP  -. 이니셜만 대문자로 변환시킨다.
 LENGTH  -. 문자열의 길이를 알려준다.
 INSTR  -. 특정문자가 출현하는 위치를 알려준다.
 SUBSTR  -. 문자의 일부분을 추출한다.
 LPAD  -. 오른쪽 정렬 후 왼쪽에 생긴 빈 공백에 특정 문자를 채운다.
 RPAD

 -. 왼쪽 정렬 후 오른쪽에 생긴 빈 공백에 특정 문자를 채운다.

 LTRIM  -. 왼쪽에서 특정 문자를 삭제한다.
 RTRIM -. 오른쪽에서 특정 문자를 삭제한다.


01) 대문자로 변환하는 UPPER 함수

UPPER 함수는 문자열을 모두 대문자로 변경한다.

SQL> SELECT UPPER('Welcome to oracle 10g')
         FROM dual;


특정칼럼을 모두 대문자로 출력한다.

SQL> SELECT UPPER(ename), UPPER(job)
         FROM emp;



02) 소문자로 변환하는 LOWER 함수

LOWER 함수는 문자열을 모두 소문자로 변경한다.

SQL> SELECT LOWER('Welcome to oracle 10g')
         FROM dual;


특정칼럼을 모두 소문자로 출력한다.

SQL> SELECT LOWER(ename), LOWER(job)
         FROM emp;



03) 이니셜만 대문자로 변환하는 INITCAP 함수

INITCAP 함수는 이니셜만 대문자로 변경합니다.

SQL> SELECT INITCAP('Welcome to oracle 10g')
         FROM dual;


② 사원명의 맨 처음 문자만 대문자로 출력하는 예제

SQL> SELECT INITCAP(ename), INITCAP(job)
         FROM emp;



04) 문자열의 길이를 알려주는 LENGTH 함수
① LENGTH 함수는 컬럼에 저장된 데이터 값이 몇 개의 문자로 구성되었는지 길이를 알려주는 함수

SQL> SELECT LENGTH('Welcome to oracle 10g')
         FROM dual;


② 사원의 이름이 몇 자인지 출력하는 예제

SQL> SELECT ename, LENGTH(ename)
         FROM emp;



05) 특정문자가 출현하는 위치를 알려주는 INSTR 함수
 -. INSTR 함수는 특정 컬럼에서 특정 문자가 나타나는 위치를 알려준다.


① 위치값을 선정하지 않고 문자 'o'를 찾는 경우

SQL> SELECT INSTR('Welcome to oracle 10g', 'o', 3, 2)

         FROM dual;


② 검색 시작 위치와 몇 번째 나오는 위치를 지정하고 문자 'o'를 찾는 경우

SQL> SELECT INSTR('Welcome to oracle 10g', 'o', 3, 2)
         FROM dual;


③ 이름에 'A'자가 몇 번째에 위치하는지 출력하는 예제

SQL> SELECT ename, INSTR(ename, 'A')
         FROM emp;



06) 문자의 일부분을 추출하는 SUBSTR 함수

 -. 문자열 내에서 문자열 일부만 추출해 내는 함수이다.


① 문자 'Welcome to oracle 10g'에서 4부터 시작해서 문자 3개를 추출한다.

SQL> SELECT SUBSTR('Welcome to oracle 10g', 4, 3)

         FROM dual;


사원이 몇 년도에 입사했는지 알기 위해서 입사 일(Hiredate)에서 연도만을 추출하는 예제

SQL> SELECT ename, hiredate, SUBSTR(hiredate 1, 2)

         FROM emp;


③ 두 번째 인자 값을 음수로 지정한 경우

SQL> SELECT ename, SUBSTR(ename, -3, 2)
         FROM emp;



07) 오른쪽 정렬 후 특정 문자를 왼쪽에 채우면서 삽입하는 LPAD 함수

LPAD 함수는 문자열이 일정한 크기가 되도록 왼쪽 빈공간에 지정한 문자를 삽입하는 함수이다.

    (지정한 문자가 없을 경우에는 공백으로 채워진다.)

SQL> SELECT LPAD('Oracle 10g', 20, '#')
         FROM DUAL;



08) 왼쪽 정렬 후 특정 문자를 왼쪽에 채우면서 삽입하는 RPAD 함수

RPAD 함수는 문자열이 일정한 크기가 되도록 오른쪽 빈공간에 지정한 문자를 삽입하는 함수이다.

    (지정한 문자가 없을 경우에는 공백으로 채워진다.)

SQL> SELECT RPAD('Oracle 10g', 20, '#')
         FROM dual;



09) 오른쪽에서 특정 문자를 삭제하는 RTRIM 함수

① RTRIM 함수는 문자열의 오른쪽(뒤)의 문자들을 삭제한다.

SQL> SELECT RTRIM('aaaOracle 10gaaa', 'a')
         FROM dual;


② 인자값을 주지 않은경우 RTRIM 함수는 문자열의 오른쪽(뒤)의 모든 공백을 삭제한다.

SQL> SELECT RTRIM('   Oracle 10g   ')
         FROM dual;



10) 왼쪽에서 특정 문자를 삭제하는 LTRIM 함수

① LTRIM 함수는 문자열의 왼쪽(앞)의 문자들을 삭제한다.

SQL> SELECT LTRIM('aaaOracle 10gaaa', 'a')
         FROM dual;


② 인자값을 주지 않은경우 LTRIM 함수는 문자열의 왼쪽(앞)의 모든 공백을 삭제한다.

SQL> SELECT LTRIM('   Oracle 10g   ')
         FROM dual;



11) 앞뒤에서 특정 문자를 삭제하는 TRIM 함수

 -. TRIM 함수는 문자열의 앞뒤에서 특정 문자를 삭제하는 문법이다.

    (RTRIM과 LTRIM과는 다르므로 주의한다.)


① 직원들 이름에서 문자열 앞뒤의 'A'를 삭제하는 예제

    (RTRIM과 LTRIM과는 다르게 from이라는 키워드가 사용된다.)

SQL> SELECT ename, TRIM('A' from ename)
         FROM emp;

※ 문자열 뒤에 'A'를 가지고 있는 값이 없음으로 본 예제는 뒤에서 'A'가 삭제 되었음을 확인 할 수 없지만 실제로는 삭제된다.