create tablespace gass_table datafile 'c:\oracle\product\11.2.0\dbhome_1\oradata\gass\gass_table.dbf' size 100m;
create user muse identified by password default tablespace gass_table profile default quota unlimited on gass_table account unlock;
grant resource, connect to muse;
grant create view, create synonym to muse;
2017년 7월 10일 월요일
2016년 9월 16일 금요일
ORA-12638: 신용 검색에 실패했습니다
ORA-12638: 신용 검색에 실패했습니다
C:\oracle\product\11.2.0\client_1\network\admin\sqlnet.ora 파일에 대한 권한을 Authenticated Users 에 모든 권한을 준다
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
C:\oracle\product\11.2.0\client_1\network\admin\sqlnet.ora 파일에 대한 권한을 Authenticated Users 에 모든 권한을 준다
#SQLNET.AUTHENTICATION_SERVICES= (NTS)
2016년 6월 1일 수요일
bit check for installed oracle
%ORACLE_HOME%\inventory\ContentsXML\comps.xml
PLAT="NT_AMD64" : 64 bit.
PLAT="NT_X86" : 32 bit.
PLAT="NT_AMD64" : 64 bit.
PLAT="NT_X86" : 32 bit.
2015년 12월 13일 일요일
odac 설치 후, 한글 깨짐 문제
odac : ODTwithODAC112030
추가 : 아무것도 변한게 없는데, 갑자기 oramts.dll 을 로드 하지 못한다고, 에러를 뿌려서, 기존 oracle client 가 설치 되어 있는 상태에서 odac 을 추가 설치 함. 오라클 홈은 d:\oracle 이고, odac 추가 설치 시 홈 디레토리는 d:\oracle 로 설정 하면 D:\oracle\product\11.2.0\client_2 이렇게 구성 됨, 문제는 기존 client 를 찾는 문제가 생기기 때문에 시스템 환경 변수에서 기존 D:\oracle\product\11.2.0\client_1\bin 을 제거 한다. 이후 한글 깨짐 현상이 나오는데, 아래와 같이 레지스트리를 추가 한다
regedit
HKEY_LOCAL_MACHINE > SOFTWARE > Wow6432Node > ORACLE > KEY_OraCleint11gHome2
add
NLS_LANG = KOREAN_KOREA.KO16MSWIN949
restart computer
추가 : 아무것도 변한게 없는데, 갑자기 oramts.dll 을 로드 하지 못한다고, 에러를 뿌려서, 기존 oracle client 가 설치 되어 있는 상태에서 odac 을 추가 설치 함. 오라클 홈은 d:\oracle 이고, odac 추가 설치 시 홈 디레토리는 d:\oracle 로 설정 하면 D:\oracle\product\11.2.0\client_2 이렇게 구성 됨, 문제는 기존 client 를 찾는 문제가 생기기 때문에 시스템 환경 변수에서 기존 D:\oracle\product\11.2.0\client_1\bin 을 제거 한다. 이후 한글 깨짐 현상이 나오는데, 아래와 같이 레지스트리를 추가 한다
regedit
HKEY_LOCAL_MACHINE > SOFTWARE > Wow6432Node > ORACLE > KEY_OraCleint11gHome2
add
NLS_LANG = KOREAN_KOREA.KO16MSWIN949
restart computer
2015년 11월 30일 월요일
2015년 11월 3일 화요일
oracle function ( number increment )
CREATE OR REPLACE FUNCTION TS.F_Seq RETURN VARCHAR2 IS
tmpSEQ NUMBER;
rtnSEQ VARCHAR2(12);
BEGIN
tmpSEQ := 0;
rtnSEQ := '';
SELECT NVL(TO_NUMBER(SUBSTR(MAX(SEQNO),12)),0) INTO tmpSEQ FROM TB__MASTER
WHERE SEQNO LIKE TO_CHAR(SYSDATE,'YYYYMMDD') || '%';
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') || '-' || LPAD(TO_CHAR(tmpSEQ+1),3,'0') INTO rtnSEQ FROM DUAL;
RETURN rtnSEQ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN TO_CHAR(SYSDATE, 'YYYYMMDD') || '-001';
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END F_Seq;
/
tmpSEQ NUMBER;
rtnSEQ VARCHAR2(12);
BEGIN
tmpSEQ := 0;
rtnSEQ := '';
SELECT NVL(TO_NUMBER(SUBSTR(MAX(SEQNO),12)),0) INTO tmpSEQ FROM TB__MASTER
WHERE SEQNO LIKE TO_CHAR(SYSDATE,'YYYYMMDD') || '%';
SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') || '-' || LPAD(TO_CHAR(tmpSEQ+1),3,'0') INTO rtnSEQ FROM DUAL;
RETURN rtnSEQ;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN TO_CHAR(SYSDATE, 'YYYYMMDD') || '-001';
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END F_Seq;
/
2015년 10월 28일 수요일
row number add with group by result
SELECT ROW_NUMBER() OVER (ORDER BY NAME DESC) SEQ, NAME FROM TABLE GROUP BY NAME
2014년 11월 19일 수요일
oracle top query
select * from (select * from tb_mail_log order by senddate desc) where rownum <= 10
2014년 7월 18일 금요일
initialize oracle sequence
SELECT LAST_NUMBER FROM USER_SEQUENCES WHERE SEQUENCE_NAME = 'JUMIN_SEQ';
ALTER SEQUENCE JUMIN_SEQ INCREMENT BY -999998;
SELECT JUMIN_SEQ.NEXTVAL FROM DUAL;
ALTER SEQUENCE JUMIN_SEQ INCREMENT BY 1;
SELECT JUMIN_SEQ.NEXTVAL FROM DUAL;
ALTER SEQUENCE JUMIN_SEQ INCREMENT BY -999998;
SELECT JUMIN_SEQ.NEXTVAL FROM DUAL;
ALTER SEQUENCE JUMIN_SEQ INCREMENT BY 1;
SELECT JUMIN_SEQ.NEXTVAL FROM DUAL;
2013년 10월 21일 월요일
Oracle LPAD 활용
[ 환경 ]
- Oracle 11g function
[ 목적 ]
- Primary Key 형태 : ABC-20131012-001
- 위의 Key 에 대한 Sequence 한 Max 값을 구하는 Oracle Function 코드 작성, 특히 마지막 3자리에서 최대값에 1을 더한 값을 구해야 한다, Number Type 이면 쉽게 구할 수 있지만, Char 가 섞여 있어, 아래와 같이 조금 복잡해 졌다
[ Function 코드 ]
- Primary Key 에 대한 최대값 구하기
- Substr 으로 마지막 3자리 자르기
- Number Type 으로 변경
- LPAD 으로 1을 더하고. 3번째 자리 기준으로 왼쪽에 0을 채운다
- 마지막으로 원래 Format 으로 재배치 한다
CREATE OR REPLACE FUNCTION TBABLE_USER.F_MaxNo (mType VARCHAR2, mDate VARCHAR2) RETURN VARCHAR2 AS
mNextNo VARCHAR2(16);
BEGIN
SELECT mType || '-' || mDate || '-' || LPAD(NVL(SUBSTR(MAX(NO), -3), 0) + 1, 3, '0') INTO mNextNo FROM TB_TABLE
WHERE NO LIKE mType || '%';
RETURN mNextNo;
END;
/
[ 참고 ]
-- LPAD Sample
SELECT LPAD('Page 1',15,'*.') "LPAD example"
FROM DUAL;
LPAD example
---------------
*.*.*.*.*Page 1
- Oracle 11g function
[ 목적 ]
- Primary Key 형태 : ABC-20131012-001
- 위의 Key 에 대한 Sequence 한 Max 값을 구하는 Oracle Function 코드 작성, 특히 마지막 3자리에서 최대값에 1을 더한 값을 구해야 한다, Number Type 이면 쉽게 구할 수 있지만, Char 가 섞여 있어, 아래와 같이 조금 복잡해 졌다
[ Function 코드 ]
- Primary Key 에 대한 최대값 구하기
- Substr 으로 마지막 3자리 자르기
- Number Type 으로 변경
- LPAD 으로 1을 더하고. 3번째 자리 기준으로 왼쪽에 0을 채운다
- 마지막으로 원래 Format 으로 재배치 한다
CREATE OR REPLACE FUNCTION TBABLE_USER.F_MaxNo (mType VARCHAR2, mDate VARCHAR2) RETURN VARCHAR2 AS
mNextNo VARCHAR2(16);
BEGIN
SELECT mType || '-' || mDate || '-' || LPAD(NVL(SUBSTR(MAX(NO), -3), 0) + 1, 3, '0') INTO mNextNo FROM TB_TABLE
WHERE NO LIKE mType || '%';
RETURN mNextNo;
END;
/
[ 참고 ]
-- LPAD Sample
SELECT LPAD('Page 1',15,'*.') "LPAD example"
FROM DUAL;
LPAD example
---------------
*.*.*.*.*Page 1
2013년 9월 23일 월요일
Oracle 에서 Sequence 생성과 사용 ( Dual )
Unique Key 로 보통 Auto Increment 로 설정하여 사용하여도 되나, 아래와 같이 Sequence 를 생성하여 사용 할 수 있다
[생성]
CREATE SEQUENCE 시퀀스이름
START WITH 1
MAXVALUE 999999999
MINVALUE 1
NOCYCLE
NOCACHE
NOORDER; COMMIT;
[사용]
select 시퀀스이름.nextval from dual;
[생성]
CREATE SEQUENCE 시퀀스이름
START WITH 1
MAXVALUE 999999999
MINVALUE 1
NOCYCLE
NOCACHE
NOORDER; COMMIT;
[사용]
select 시퀀스이름.nextval from dual;
2013년 8월 28일 수요일
Oracle 의 (+) 사용
- Outer join 에 사용 된다 ( 조건을 만족하지 않는 행도 반환 )
- Left Outer Join : 왼편 테이블에 행이 없어도 반환
SELECT T1.A, T2.B
FROM TABLE1 T1, TABLE2 T2
WHERE T1.C(+) = T2.C
- Right Outer Join : 오른편 테이블에 행이 없어도 반환
SELECT T1.A, T2.B
FROM TABLE1 T1, TABLE2 T2
WHERE T1.C = T2.C(+)
- Left Outer Join : 왼편 테이블에 행이 없어도 반환
SELECT T1.A, T2.B
FROM TABLE1 T1, TABLE2 T2
WHERE T1.C(+) = T2.C
- Right Outer Join : 오른편 테이블에 행이 없어도 반환
SELECT T1.A, T2.B
FROM TABLE1 T1, TABLE2 T2
WHERE T1.C = T2.C(+)
2013년 8월 22일 목요일
피드 구독하기:
글 (Atom)