2021년 1월 19일 화요일

[Oracle] 테이블 관련 조회

 [참조 : https://gent.tistory.com/  https://m.blog.naver.com/  ]

Primary Key  & Index 조회 SQL
 SELECT A.TABLE_NAME,
       A.CONSTRAINT_NAME,
       B.COLUMN_NAME,     
       B.POSITION
  FROM ALL_CONSTRAINTS  A,
       ALL_CONS_COLUMNS B
 WHERE A.TABLE_NAME      = {Table_Name}
   AND A.CONSTRAINT_TYPE = 'P'
   AND A.OWNER           = B.OWNER
   AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
 ORDER BY B.POSITION

- View별 조회 내용
ALL_CONSTRAINTS : 현재 사용자가 엑세스할 수 있는 테이블에 대한 제약 조건 정의
USER_CONSTRAINTS : 현재 사용자의 스키마에 있는 테이블에 대한 제약 조건 정의
DBA_CONSTRAINTS :  데이터베이스의 모든 제약 조건 정의

Index 조회(또다른 방법-조회결과 약간 다름)
SELECT * FROM USER_INDEXES WHERE TABLE_NAME = {Table_Name}
 
# 인덱스명 변경하기(PK도 가능)
    ALTER INDEX 변경전이름 RENAME TO 변경후이름;

# 인덱스 REBUILD
alter index [인덱스명] rebuild tablespace [테이블스페이스명]
storage(initial 이니셜값 next 넥스트값 pctincrease 0) ;

# PRIMARY KEY 재생성
1.먼저 PRIMARY KEY 를 drop하세요.
  -> ALTER TABLE [테이블명] DROP PRIMARY KEY;
  -> ALTER TABLE [테이블명] DROP CONSTRAINT [PK명];

2.다시 PRIMARY KEY 를 만드세요.
  -> ALTER TABLE 테이블명 ADD CONSTRAINT PK명 PRIMARY KEY(컬럼1,컬럼2)
       USING INDEX TABLESPACE 테이블스페이스명 STORAGE (INITIAL 5K NEXT 2K PCTINCREASE 0)

2020년 12월 22일 화요일

[SAP] SE78에서 등록한 이미지 다운 받기

[ 출처  : https://answers.sap.com/ ]

아래 프로그램으로 업로드 이미지 다운로드 가능함.

REPORT Z_DUMMY_ATG_3.

DATA : L_BYTECOUNT TYPE I,
       L_TDBTYPE   LIKE STXBITMAPS-TDBTYPE,
       L_CONTENT   TYPE STANDARD TABLE OF BAPICONTEN INITIAL SIZE 0.

DATA: GRAPHIC_SIZE TYPE I.

DATA: BEGIN OF GRAPHIC_TABLE OCCURS 0,
LINE(255) TYPE X,
END OF GRAPHIC_TABLE.

CALL FUNCTION 'SAPSCRIPT_GET_GRAPHIC_BDS'
  EXPORTING
    I_OBJECT       = 'GRAPHICS'
    I_NAME         = 'ZPRUEBA'
    I_ID           = 'BMAP'
    I_BTYPE        = 'BCOL'  "흑백일 경우 BMON임
  IMPORTING
    E_BYTECOUNT    = L_BYTECOUNT
  TABLES
    CONTENT        = L_CONTENT
  EXCEPTIONS
    NOT_FOUND      = 1
    BDS_GET_FAILED = 2
    BDS_NO_CONTENT = 3
    OTHERS         = 4.

CALL FUNCTION 'SAPSCRIPT_CONVERT_BITMAP'
  EXPORTING
    OLD_FORMAT               = 'BDS'
    NEW_FORMAT               = 'BMP'
    BITMAP_FILE_BYTECOUNT_IN = L_BYTECOUNT
  IMPORTING
    BITMAP_FILE_BYTECOUNT    = GRAPHIC_SIZE
  TABLES
    BDS_BITMAP_FILE          = L_CONTENT
    BITMAP_FILE              = GRAPHIC_TABLE
  EXCEPTIONS
    OTHERS                   = 1.

CALL FUNCTION 'WS_DOWNLOAD'
  EXPORTING
    BIN_FILESIZE            = GRAPHIC_SIZE
    FILENAME                = 'C:\FirmaAsociado.bmp'
    FILETYPE                = 'BIN'
  TABLES
    DATA_TAB                = GRAPHIC_TABLE
  EXCEPTIONS
    INVALID_FILESIZE        = 1
    INVALID_TABLE_WIDTH     = 2
    INVALID_TYPE            = 3
    NO_BATCH                = 4
    UNKNOWN_ERROR           = 5
    GUI_REFUSE_FILETRANSFER = 6.

IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

 

2020년 12월 17일 목요일

DAX 함수

 1. 계산값

 - 월별 누적 금액 산출시

CALCULATE( SUMX( 집계테이블 ,합산필드 ) , DATESMTD(집계 기준 일자 필드) )

 DATESQTD : 분기 / DATESYTD : 년 기준으로 집계함.

2020년 12월 9일 수요일

[ORACLE] Table space 관련

 테이블 스페이스 삭제

drop tablespace [TABLE SPANE NAME] ;

아래와 같은 오류 발생시 테이블 스페이스내 의존선으로 연결된 부분이 있는 것으로  아래 SQL로 확인 후 제거하고 삭제 처리한다.

ORA-00604: error occurred at recursive SQL level 1
ORA-02429: cannot drop index used for enforcement of unique/primary key


SELECT  INDEX_NAME,  TABLE_NAME,  TABLESPACE_NAME
 FROM DBA_INDEXES
WHERE TABLESPACE_NAME= '[TABLE SPANE NAME]' ;

실행 결과를 복사하여 한번 실행한 후 테이블 스페이스를 삭제 한다.

SELECT
 'DROP TABLE ' || TABLE_OWNER||'.'|| TABLE_NAME || ' CASCADE CONSTRAINTS;'
FROM DBA_INDEXES
WHERE TABLESPACE_NAME= '[TABLE SPANE NAME]';

 

처리가 끝나면 물리적인 파일도 삭제 처리 한다.

2020년 12월 4일 금요일

Linux 64bit 시스템에서 32bit 프로그램 실행하기

 별도 라이브러리 설치 필요

[root@localhost oracle]# yum install glibc.i686
Last metadata expiration check: 2:52:40 ago on Fri Dec  4 14:58:27 2020.
Dependencies resolved.
================================================================================
 Package         Architecture   Version                  Repository        Size
================================================================================
Installing:
 glibc           i686           2.28-101.el8             BaseOS           3.4 M

Transaction Summary
================================================================================
Install  1 Package

Total download size: 3.4 M
Installed size: 15 M
Is this ok [y/N]: y
Downloading Packages:
glibc-2.28-101.el8.i686.rpm                     960 kB/s | 3.4 MB     00:03
--------------------------------------------------------------------------------
Total                                           960 kB/s | 3.4 MB     00:03
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                        1/1
  Running scriptlet: glibc-2.28-101.el8.i686                                1/1
  Installing       : glibc-2.28-101.el8.i686                                1/1
  Running scriptlet: glibc-2.28-101.el8.i686                                1/1
  Verifying        : glibc-2.28-101.el8.i686                                1/1
Installed products updated.

Installed:
  glibc-2.28-101.el8.i686

Complete!

2020년 6월 23일 화요일

윈도우 서버에서 영문 요일을 구하여 오라클 백업 배치 파일 작성

@echo off
for /f %%i in ('powershell ^(get-date^).DayOfWeek') do set week=%%i
cd c:\backup
del %week%_*.* /q
exp ID/PW file=%week%_backup.dmp log=%week%_backup.log statistics=none

Task Manager에서 작업할 내용을 추가
 - 로그인 안돼어 있을 경우에도 실행되도록 설정
























 - 실행할 시간 설정
























 - 수행할 배치 파일 설정

한대의 서버에 Tomcat 인스턴스 여러개 사용

[ 출처 : http://itscom.org/ ]

“한 대의 서버에 Tomcat 인스턴스를 여러개 설치하여 운영하기 위한 매뉴얼 입니다. 여기서는 1개의 배포(webapps 및 라이브러리(lib)용) 인스턴스와 2개의 서비스용 인스턴스를 설치하는 방법입니다.”
* 인스턴스별 포트(shutdown, http, https, ajp) 및 환경설명 *

tomcat8_0 인스턴스 :  8005, 8080, 8443, 8009  배포용 인스턴스로 unpackWARs=”true” 설정
tomcat8_1 인스턴스 :  8004, 8081, 8444, 8010  서비스용 인스턴스 1
tomcat8_2 인스턴스 :  8003, 8082, 8445, 8011  서비스용 인스턴스 2

1. 준비환경

1) CentOS 7 에 JDK 설치
2) tomcat 용 계정생성
[root@localhost ~]# adduser -s /sbin/nologin tomcat

2. 톰캣 다운로드
[root@localhost ~]# cd /usr/local/src
[root@localhost src]# wget http://apache.mirror.cdnetworks.com/tomcat/tomcat-8/v8.5.11/bin/apache-tomcat-8.5.11.tar.gz
[root@localhost src]# tar xvfz apache-tomcat-8.5.11.tar.gz
[root@localhost src]# cp apache-tomcat-8.5.11 /usr/local/tomcat8_0 -r
[root@localhost src]# cp apache-tomcat-8.5.11 /usr/local/tomcat8_1 -r
[root@localhost src]# cp apache-tomcat-8.5.11 /usr/local/tomcat8_2 -r

3. bin/catalina.sh 수정

(모든 인스턴스에 127라인 쯤 #Get standard environment variables 앞에 다음 추가)

1) tomcat8_0 인스턴스
bin/catalina.sh
export CATALINA_HOME=/usr/local/tomcat8_0export TOMCAT_HOME=/usr/local/tomcat8_0
export CATALINA_BASE=/usr/local/tomcat8_0
CATALINA_PID=/usr/local/tomcat8_0/bin/tomcat.pid

# jdk 를 소스 설치 시
export JAVA_HOME=/usr/local/jdk1.8

2) tomcat8_1 인스턴스
export CATALINA_HOME=/usr/local/tomcat8_1
export TOMCAT_HOME=/usr/local/tomcat8_1
export CATALINA_BASE=/usr/local/tomcat8_1
CATALINA_PID=/usr/local/tomcat8_1/bin/tomcat.pid

# jdk 를 소스 설치 시
export JAVA_HOME=/usr/local/jdk1.8

3) tomcat8_2 인스턴스
export CATALINA_HOME=/usr/local/tomcat8_2
export TOMCAT_HOME=/usr/local/tomcat8_2
export CATALINA_BASE=/usr/local/tomcat8_2
CATALINA_PID=/usr/local/tomcat8_2/bin/tomcat.pid

# jdk 를 소스 설치 시
export JAVA_HOME=/usr/local/jdk1.8

4. conf/server.xml 수정
1) tomcat8_0 인스턴스
conf/server.xml

<server port="8005" shutdown="SHUTDOWN">
~생략~
<connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
~생략~
<connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
~생략~
<host name="localhost"  appBase="../tomcat8_0/webapps"
            unpackWARs="true" autoDeploy="true">

2) tomcat8_1 인스턴스
<server port="8004" shutdown="SHUTDOWN">
~생략~
<connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444" />
~생략~
<connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
~생략~
<host name="localhost"  appBase="../tomcat8_0/webapps"
            unpackWARs="false" autoDeploy="true">

3) tomcat8_2 인스턴스
<server port="8003" shutdown="SHUTDOWN">
~생략~
<connector port="8082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8445" />
~생략~
<connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
~생략~
<host name="localhost"  appBase="../tomcat8_0/webapps"
            unpackWARs="false" autoDeploy="true">

5. 권한설정, 심볼릭링크
1) 권한설정
chown tomcat.tomcat /usr/local/tomcat8* -R
 2) 심볼릭링크
rm -Rf /usr/local/tomcat8_1/lib
ln -s /usr/local/tomcat8_0/lib /usr/local/tomcat8_1/lib
rm -f /usr/local/tomcat8_1/conf/context.xml
ln -s /usr/local/tomcat8_0/conf/context.xml /usr/local/tomcat8_1/conf/context.xml

rm -Rf /usr/local/tomcat8_2/lib
ln -s /usr/local/tomcat8_0/lib /usr/local/tomcat8_2/lib
rm -f /usr/local/tomcat8_2/conf/context.xml
ln -s /usr/local/tomcat8_0/conf/context.xml /usr/local/tomcat8_2/conf/context.xml

6. systemctl 서비스 등록
1) tomcat8_0 인스턴스 (vi /usr/lib/systemd/system/tomcat_0.service)
/usr/lib/systemd/system/tomcat_0.service


[Unit]
Description=Tomcat8 Service
After=syslog.target
After=network.target

[Service]
Type=forking
User=tomcat
ExecStart=/usr/local/tomcat8_0/bin/catalina.sh start
ExecStop=/usr/local/tomcat8_0/bin/catalina.sh stop

[Install]
WantedBy=multi-user.target
2) 모든 인스턴스를 위와같이 작업
3) 서비스 시작 및 등록
[root@localhost ~]# systemctl start tomcat_0
[root@localhost ~]# systemctl enable tomcat_0.service

[root@localhost ~]# systemctl start tomcat_1
[root@localhost ~]# systemctl enable tomcat_1.service

[root@localhost ~]# systemctl start tomcat_2
[root@localhost ~]# systemctl enable tomcat_2.service

7. 기타
1) 웹서비스 점검

웹브라우저에서 http://ip주소:8080 , http://ip주소:8081, http://ip주소:8082 접속합니다.

2) 톰캣 인스턴스 상태점검
[root@localhost ~]# for i in {0..2};do systemctl status tomcat_$i;done

3) 톰캣 디렉토리 구성 및 설명

– /bin : 톰캣의 바이너리와 실행스크립트가 들어 있는 디렉토리

  startup.sh : 톰캣 시작 스크립트

  shutdown.sh : 톰캣 종료 스크립트

  version.sh : 톰캣 버전과 운영체제, JDK 정보를 출력하는 스크립트

  configtest.sh : 설정의 이상유무 테스트

– /conf : 모든 webapp 에 영향을 미치는 톰캣의 전역 설정파일이 들어 있는 디렉토리
  server.xml             : 가장 중요한 설정파일로 톰캣의 서비스, 엔진, 호스트 등의 내용을 설정
  tomcat-users.xml : 역할을 기반으로 하는 사용자 권한과 인증 정보를 설정.
  web.xml                 : 모든 웹애플리케이션을 배포할 때 사용할 기본설정.
  context.xml           : 세션, 쿠키 저장 경로 등 톰캣에 의존적인 설정을 지정.

– /lib : 모든 webapps 에서 사용가능한 JAR 파일 위치

-/logs : 로그 저장 디렉토리로 카탈리나 엔진은 catalina.yyyy-mm-dd.log 와 server.xml 에 지정된 호스트 로그는 localhost.yyyy-mm-dd.log 로 저장

– /webapps : 웹애플리케이션이 있는 디렉토리

– /work : 서블릿이나 JSP 파일을 컴파일한 소스와 클래스 파일이 위치.