2019년 8월 20일 화요일

윈도우에서 오라클 11g 삭제하기

* 참조 및 출처
https://wickedmagic.tistory.com/407
https://wookoa.tistory.com/304

* 윈도우에서 오라클 11g 삭제하기


> 서비스에서 오라클 관련 서비스 모두 종료
> Universal Installer 실행해서 어찌어찌 하면 deinstall 실행하라고 함
> deinstall 관리자권한으로 실행
> 블라블라 인스턴스 리스너 모두 지정: Enter
> 블라블라 데이터베이스 이름 목록을 지정하십시오. [ ] 안의 값 그대로 입력 엔터
> 계속하시겠습니까? y
> 터미널 종료 후 다시 deinstall 관리자권한으로 실행
> 블라블라 데이터베이스 이름 목록을 지정하십시오. [ ] 안에 값 없으면 엔터
> 계속하시겠습니까? y
> 터미널 종료 후 윈도우 재부팅
> 오라클 폴더가 바로 삭제 되면 아래 작업 불필요?
   regedit 실행하여 오라클 관련 항목 삭제

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE 삭제
HKEY_LOCAL_MACHINE\SYSEM\ControlSet001\Service (Oracle 포함하는거 삭제)
HKEY_LOCAL_MACHINE\SYSEM\ControlSet002\Service (Oracle 포함하는거 삭제)
HKEY_LOCAL_MACHINE\SYSEM\CurrentControlSet\Services (Oracle 포함하는거 삭제)
HKEY_CLASSES_ROOT 에서 Oracle과 Ora로 시작되는 모든 것 삭제

2018년 4월 5일 목요일

gradle proguard 예제

** proguard 사이트에서 proguard6.0.2.zip 다운로드 압축을 풀고

** build.gradle 파일 수정

buildscript {
  repositories {
    jcenter()
    flatDir dirs: 'E:/prog/proguard6.0.2/lib'
  }
  dependencies {
    classpath ':proguard:'
  }
}

(...)

task proguard(type: proguard.gradle.ProGuardTask, dependsOn: 'jar') {
  configuration 'proguard.txt'

  injars 'build/libs/java1.jar'
  outjars 'build/libs/lhbidc.jar'

  libraryjars 'dist/lib'
  libraryjars 'C:/Java/jdk1.7.0_80/jre/lib/rt.jar'
}

** 플젝톨더에 proguard.txt 파일을 아래 내용으로 생성

-keep public class java75.LhBidMain1 {
      public static void main(java.lang.String[]);
}

** cmd 열어서 플젝 폴더에서
> gradlew.bat proguard 하면 lhbidc.jar 파일 생성된다.

** 해설
  injars 'build/libs/java1.jar' <-- 오리지널 jar
  outjars 'build/libs/lhbidc.jar' <-- 암호화된 jar

  libraryjars 'dist/lib' <-- 나머지 필요한 jar 파일들 있는 폴더
  libraryjars 'C:/Java/jdk1.7.0_80/jre/lib/rt.jar' <-- 이것도 필요하네...

main 클래스 함수는 암호화 되면 안되므로 keep
-keep public class java75.LhBidMain1 {
      public static void main(java.lang.String[]);
}

lhbidc.jar 파일 내의 클래스 파일을 디컴파일해보면 각 변수명들이 바뀌어 있다.

2018년 3월 28일 수요일

ANSI LEFT JOIN

** 참고
http://ultteky.egloos.com/10411192

**
테이블 EMP(사원), DEPT(부서) 가 있다고 하자.
사원 중 DEPT_CD 가 A01, A02 인 사원 중에
부서와 연결하여 EMP.EMP_NM(사원명), DEPT.DEPT_NM(부서명)을 가져오고 싶다.
단 부서 중에 유효한(VALID_YN = 'Y') 것만 연결을 하고 싶다.
부서와 연결 안된 사원도 모두 가져오고 싶다.

이럴때 아래와 같이 사용해야 한다.

SELECT EMP.EMP_NM, DEPT.DEPT_NM
FROM EMP
     LEFT JOIN DEPT
     ON(1=1
      AND DEPT.DEPT_CD = EMP.DEPT_CD
      AND DEPT.VALID_YN = 'Y'
     )
WHERE 1=1
  AND EMP.DEPT_CD IN ('A01', 'A02')

간단히 말하면
중요 테이블을 EMP 라고 하고 안중요 테이블은 DEPT 이라 했을 때
(DEPT 와 연결 안된 EMP 도 가져와야 하므로)

중요 테이블의 FILTER 는 WHERE 에 걸고(ON 에 걸면 안됨)
->
WHERE 1=1
  AND EMP.DEPT_CD IN ('A01', 'A02')

안중요 테이블의 FILTER 는 ON 에 걸어야 된다.(WHERE 에 걸면 안됨)
->
AND DEPT.VALID_YN = 'Y'

당연히 JOIN 조건(연결 조건)은 ON 에 걸어야 한다.(WHERE 에 걸면 안됨)
->
AND DEPT.DEPT_CD = EMP.DEPT_CD

**
OUTER 조인 말고 INNER JOIN 은
연결조건, 필터조건 모두 ON 에 걸든 WHERE 에 걸든 상관없다.

**
테스트 해봐야지...

2018년 3월 12일 월요일

오라클 sqlplus

** SQLPLUS 실행

오라클 설치 머신에서 sqlplus 할 경우 아래 같이 하면 되네...
비밀번호 아무렇게나 넣어도 되네...

# sqlplus "sys/비밀번호아무거나@서비스이름 as sysdba"

또는

# sqlplus "sys@서비스이름 as sysdba"
하고 비밀번호 입력하라고 나오면 그냥 엔터 해도 되네...

비밀번호에 특수문자 있는 경우 비밀번호를 \"\" 로 감싸고
각 특수문자마다 역슬래시 붙여야 한다.

# sqlplus abcdef/\"abcdef\_plus123456\!1\"@ORCL

# sqlplus <계정>/<비밀번호>@<IP>/<SID>

** 파일 실행하기. @ 사용. " 사용

(utf-8 파일을 sqlplus 에서 실행할 경우 아래 넣고 sqlplus 실행)
CMD> SET NLS_LANG=.AL32UTF8

(NLS_LANG 확인)
SQL> @.[%NLS_LANG%]

(파일 실행)
SQL> @"실행할 파일 경로"
SQL> @"/xxx/yyy/execute.sql"
(파일명만 넣을 경우 현재 경로에 있는 파일 실행)

** 실행 결과 파일로 저장하기

SQL> SPOOL /xxx/yyy/result_001.txt
...sql 실행
SQL> SPOOL OFF

** 종료

SQL> exit

** SQL 문 실행하기

맨 끝에 ;(세미콜론) 넣고 엔터. DML 실행 후에는 commit; 실행
SQL>실행할 sql 문;

** 테이블 스키마 조회

SQL>desc 테이블명;

** 시스템 권한 부여.

PUBLIC 은 모든 사용자.
WITH ADMIN OPTION 은 부여받은 SYSTEM 권한을 다른 사용쟈에게 양도 가능.
GRANT 시스템권한 TO 사용자또는PUBLIC;
GRANT 시스템권한 TO 사용자또는PUBLIC WITH ADMIN OPTION;


** 시스템 권한 회수

REVOKE 시스템권한, ... FROM 사용자또는PUBLIC;

** 객체 권한 부여

GRANT 객체권한(컬럼명, 컬럼명, ...) ON 객체명 TO 사용자또는PUBLIC WITH ADMIN OPTION;

객체권한종류

  • SELECT
  • UPDATE
  • INSERT
  • ALTER
  • DELETE
  • EXECUTE
  • INDEX : CREATE INDEX ON 테이블... 실행할 수 있는 권한
  • REFERENCES : 외래 키 정의할 수 있는 권한

** 객체 권한 취소

REVOKE 객체권한 ON 객체명 FROM 사용자또는PUBLIC CASCADE CONSTRAINTS;
CASCADE CONSTRAINTS 는 REFERENCES 권한으로 정의된 제약 조건 함께 삭제해준다.

** 슬래시

SQLPLUS 에서 슬래시는 이전 문장을 재실행한다.

슬래시는 주로 PL/SQL 블럭 같은 embedded ; 된 명령문을 실행하기 위해 필요하다.
슬래시는 type, procedure, a package or a package body 정의할 때 사용한다.
BEGIN .. END 또는 CREATE OR REPLACE 사용할 수있는 곳에서 슬래시를 사용한다고 생각하면 된다.

오라클 datapump (expdp impdp) 사용법

http://dinggur.tistory.com/167

http://gyh214.tistory.com/110

http://hayleyfish.tistory.com/99

** 특징

  • 10g 이상
  • 시간 예측 가능
  • 고속
  • exp 호환 안됨
  • 일시 정지 가능
  • 명령어 expdp impdp
  • full 모드, shema 모드, tablespace 모드, table 모드
  • ddl 문장만 추출가능


** 사전작업

  • datapump 쓰기 위한 디렉토리 생성
    • (만들기)
      • create directory datapump1 as '/home/oracle';
    • (권한주기)
      • grant read, write on directory datapump1 to public(또는 특정스키마);
    • (디렉토리확인)
      • select * from dba_directories;
    • (작업확인)
      • select owner_name, job_name, operation, job_mode, state from dba_datapump_jobs ;

** expdp 예제

(export 하는 디비 서버에서 실행. by sysdba)
# expdp \"SYS/XXX@ORCL AS SYSDBA\" schemas=AAAA \
directory=DATA_PUMP_DIR \
dumpfile=dp_AAAA_20180313.dmp \
logfile=dp_AAAA_20180313.log


(export 하는 디비 서버에서 실행. export 하는 계정으로 ...)
SQL> grant read, write on directory DATA_PUMP_DIR to BBBB_PLUS;

# expdp \"BBBB/비밀번호@PGMIS\" schemas=BBBB \
directory=DATA_PUMP_DIR \
dumpfile=140_dp_BBBB_20180313.dmp \
logfile=140_dp_BBBB_20180313.log

-- schemas: 덤프 받을 계정
-- directory: 덤프 받을 디렉토리명. 실제 디렉토리 경로 아님. create directory 으로 생성함
-- dumpfile: directory 에 exp 받을 파일
-- logfile: directory 에 로그

** impdp 예제

(import 하는 디비에서 실행. by sysdba)
# impdp \"/ as sysdba\" schemas=AAAA \
directory=DATA_PUMP_DIR \
dumpfile=DP_AAAA_20180313.DMP logfile=140_DP_AAAA_20180313.DMP.log \
remap_tablespace=TSD_AAAA_01:TSD_AAAA_PLUS_01,TSI_CMIS_01:TSI_AAAA_PLUS_01 \
remap_schema=AAAA:AAAA_PLUS


(import 하는 디비에서 실행. by import 받을 계정)
SQL> grant read, write on directory DATA_PUMP_DIR to BBBB_PLUS;

# impdp BBBB_PLUS/비밀번호@ORCL schemas=BBBB \
directory=DATA_PUMP_DIR \
dumpfile=140_DP_BBBB_20180313.DMP logfile=140_DP_BBBB_20180313.DMP.log \
remap_tablespace=TSD_BBBB_01:TSD_BBBB_PLUS_01,TSI_BBBB_01:TSI_BBBB_PLUS_01 \
remap_schema=PGMIS:PGMIS_PLUS

-- schemas: 덤프 받을 계정
-- directory: dump 파일 디렉토리명. 실제 경로 아님.
-- dumpfile: directory 내에 있는 import 할 파일
-- logfile: import 로그
-- remap_tablespace: 테이블스페이스 변경. OLD_A:NEW_A,OLD_B:NEW_B 형식
-- remap_schema: 계정 변경. OLD_A:NEW_A,OLD_B:NEW_B 형식



인기글

추천 게시물

윈도우에서 오라클 11g 삭제하기

* 참조 및 출처 https://wickedmagic.tistory.com/407 https://wookoa.tistory.com/304 * 윈도우에서 오라클 11g 삭제하기 > 서비스에서 오라클 관련 서비스 모두 종료 > Un...