오라클을 sqlplus에서 작업을 하다보면 특수문자 때문에 힘들때가 있다. 예를들어서 프로시져 실행할때 &나 특수문자 치환때문에 쓰는 여러가지 단어때문에 힘들게 되는데 이때는 특수문자로 치환해서 넣기도 하는데.. 아예 아래와 같이 "set define OFF" 명령어를 넣게 되면 특수문자를 입력 할 수 있다. 참고로 한글을 입력이 제대로 안먹히면 사용자의 환경변수를 잘 확인해서 아래와 같이 넣을 수도 있다. "export NLS_LANG=KOREAN_KOREA.AL32UTF8"
개발 DB에서 배포 스크립트를 만들려고 할때 각 스크립트가 필요하다. 인터넷에서 찾아보니 아래와 같이 하나씩 물어보는데.. 음.. 이건 내가 원하는 명령어가 아니였다. 어떻게 아래와 같이 하나씩 찾아서 할 수가 있을까? -- 오라클 테이블 스크립트 추출 select dbms_metadata.get_ddl('TABLE','테이블명') from dual; -- 오라클 프로시져 스크립트 추출 select dbms_metadata.get_ddl('PROCEDURE','프로시져명') from dual; -- 오라클 VIEW 스크립트 추출 select dbms_metadata.get_ddl('VIEW','VIEW명') from dual; -- 오라클 INDEX 스크립트 추출 select dbms_metadata.g..
오라클 12c가 참 많이 변경 힘들게 한다. ㅎㅎ 하이튼 사용자를 생성하기 위해서 CREATE USER test IDENTIFIED BY VALUES "test123" 와 같은 명령어를 쳤더니 아래와 같은 메시지를 만나게 되었다. ORA-02153: VALUES 비밀번호 문자열이 부적당합니다. 또는 ORA-02153 : invalid VALUES password string 우선 해결 방안은 패스워드에 특수문자가 있으면 "를 꼭 붙여주고 그게 아니면 패스워드 만들때 12C에 맞는 구문을 쳐주어야 한다. 예를들어 나같은 경우에는 아래와 같이 쳤는데 여기에서 VALUES를 적었기 때문에 오류가 발생 되었다. [오라클 11g] CREATE USER test IDENTIFIED BY VALUES "test123..
웹개발자가.. 고객사의 유지보수를 하다보면 갑자기 tnsnames.ora를 변경해야 할 때가 있는데 내가 설치 하지 않는 서버라면.. oracle의 tnsnames.ora 파일 위치를 찾기가 어렵다. 꼭 오라클을 기본경로에 설치하라는 법은 없지 않는가? ㅎㅎ 이때 찾은 명령어가 lsnrctl status이다. 우선 su - oracle 명령어로 오라클 계정으로 접속 후 lsnrctl status 치면 아래와 같이 나오게 되는데 이때 Listener Paramter File에 가면 딱 tnsnames.ora 파일이 있다. 덤으로 Listener Log File 파일 위치도 알 수 있어좋다. [oracle]$ lsnrctl status LSNRCTL for Linux: Version 12.1.0.2.0 - ..
오랜만에 오라클 12c 사용자 계정을 만들려고 하니깐 모든게 다 막힌다. ㅎㅎ sqlplus로 접속해서 conn "/as sysdba"를 만든후 create user test identified by test123; 라고 치니깐.. 아래와 같은 메시지를 만나게 되었다. ORA-65096: 공통 사용자 또는 롤 이름이 부적합니다. 또는 ORA-65096: invalid common user or role name in oracle. 오라클 12C로 넘어가면서 오라클 사용자 명칭이 보안때문에 변경이 되었다. 예를 들어서 사용자를 생성시 C##을 붙여야 한다. create user c##username identified by password; 그게 싫으면 아래와같은 스크립트를 먼저 치고 해야 한다. ALTE..
유지보수 하다가.. ORA-01652 : unable to extend temp segment by 128 in temp space 오류 메시지가 발견되었다. 답이 없다..ㅜ.ㅜ 해당 오류는 시간을 두면 전체 솔류션에 영향을 시키기 때문에 빨리 해결해야 했다. 우선 사용자에게 테이블 스페이스 용량을 확인 했다. [쿼리] SELECT A.tablespace_name, Round(A.bytes_alloc / 1024 / 1024, 2) CURRENT_SIZE, Round(Nvl(B.bytes_free, 0) / 1024 / 1024, 2) FREE_SIZE, Round(( A.bytes_alloc - Nvl(B.bytes_free, 0) ) / 1024 / 1024, 2) USED_SIZE, Round(( ..
별거 아니여도 막상 안보고 쿼리를 칠려고 하면....어렵다. --오라클 unixtime 일반시간으로 표현 select to_char(to_date('19700101090000', 'YYYYMMDDHH24MISS') +( unixtimeColumn /86400),'MM/DD HH24:MI:SS') from dual --오라클 unixtime 오늘 날짜 구하기 select round((sysdate - TO_DATE('19700101', 'YYYYMMDD')) * 86400 - 32400)-300 from dual --오라클 unixtime 비교 unixtime 컬럼을 to_char로 해서 변환해서 비교하면 안될까? to_char(to_date('19700101090000', 'YYYYMMDDHH24MISS..
고객사에 가서 프로시져 및 함수를 배포 하는데 아래와 같은 오류(ORA-38824)가 발생했다. 내부적으로 개발 서버에서는 이상이 없는데 고객사에서만 나는 오류이다. 구글에서 찾아보면 EDITIONABLE 옵션을 프로시져 및 함수명 앞에 쓰면 된다고 하는데... 잘 안되는 것 같다. ORA-38824: A CREATE OR REPLACE command may not change the EDITIONABLE property of an existing object. Cause: An attempt was made to replace an existing object with a different value for the EDITIONABLE property. Action: Switch the EDITIONA..
개발을 하다보면 벨리데이션 체크때문에 글자의 바이트수가 중요한데.. DB 마다 인식하는 것을 다르다.그래서 오라클에서 어떻게 byte를 인식하는지 찾아보았는데 오라클에서 제공하는 VSIZE() 함수를 사용하면 문자열의 byte 크기수를 확인 할 수 있다.[예시]select vsize('안') as byteSize from dual;참고로 oracle 12c에서는 기본적으로 한글을 3byte로 인식한다.개발 한지 8년이 넘어가는데 아직도 이런 함수도 제대로 모르는 내 자신이 싫다. ㅎㅎㅎ
- Total
- Today
- Yesterday
- 토드
- 파주여행
- 대관령양떼목장
- 정동지
- PPTX
- java api
- 이클립스
- 덤프
- oracle
- 오라클
- 부천역
- 보성녹차밭
- 제주도여행
- 밀리세컨드
- 맛집
- 가평여행
- 임자도
- 인천여행
- 테라로사
- jdk
- 가평팬션
- 담양 죽녹원
- 인스타그램
- 인천
- pdf ms워드 변환
- 산외한우마을
- ora-01940
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |