728x90
반응형

1. 조건문

  • IF
  • CASE
DECLARE
  person emp%ROWTYPE;
BEGIN
  SELECT * 
  INTO person
  FROM emp
  WHERE yyyy = ‘2022’
  AND dept_code = ‘04001000’
  AND name = ‘에이다 러블레이스‘
  ;
  
  
—-IF조건문
  IF person.name = ‘에이다 러블레이스’;
    THEN dbms_output.put_line(‘세계 최초의 프로그래머입니다.’);
  ELSIF person.name = ‘제임스 고슬링’;
    THEN dbms_output.put_line(‘최초로 JAVA를 개발하였습니다.’);
  ELSE
    dbms_output.put_line(‘정보가 없습니다.’);
  END IF;
  
—-단순CASE조건문
  CASE person.name
    WHEN ‘에이다 러블레이스‘ THEN dbms_output.put_line(‘세계 최초의 프로그래머입니다.’);
    WHEN ‘제임스 고슬링‘ THEN dbms_output.put_line(‘최초로 JAVA를 개발하였습니다.’);
  ELSE
    dbms_output.put_line(‘정보가 없습니다.’);
  END CASE;

—-검색CASE조건문
  CASE
    WHEN person.salary < 3000000 THEN dbms_output.put_line(‘기본급이 300만원 미만입니다.’);
  ELSE
    dbms_output.put_line(‘기본급이 300만원 이상입니다.’);
  END CASE;





2. 반복문

  • LOOP: 기본 반복문
  • WHILE LOOP: 특정 조건식의 결과를 통해 반복 수행
  • FOR LOOP: 반복 횟수를 정하여 반복 수행
  • CURSOR FOR LOOP: 커서를 활용한 반복 수행


*반복 수행을 중단 시키거나 특정 반복 주기를 건너뛰는 명령어

  • EXIT: 수행 중인 반복 종료
  • EXIT WHEN: 반복 종료를 위한 조건식을 지정하고 만족하면 반복 종료
  • CONTINUE: 수행 중인 반복의 현재 주기를 건너뜀
  • CONTINUE WHEN: 특정 조건힉을 지정하고 조건식을 만족하면 현재 반복 주기를 건너뜀
DECLARE
  num NUMBER(10) DEFAULT 1;
  total NUMBER(10) DEFAULT 0;
  v_emp emp%ROWTYPE;
  
  CURSOR c_emp IS
  SELECT *
  INTO v_emp
  FROM emp
  WHERE yyyy = ‘2022’
  AND dept_code = 04001000’
  ;
BEGIN
  —-기본LOOP(1부터 10까지 합산값 구하기)
  LOOP
    total := total + num;
    num := num + 1;
    IF num > 10 THEN EXIT;
    END IF;
  END LOOP;
  
  total := 0;
  num := 1;
  —-WHILE LOOP
  —-반복 수행 전에 조건식을 검사하기 때문에 조건식 결과 값에 따라 단 한 번도 반복 수행 되지 않을 수도 있음!
  WHILE num < 11 LOOP
    total := total + num;
    num := num + 1;
  END LOOP;
  
  total := 0;
  —-FOR LOOP
  FOR i IN 1..10 LOOP
    total := total + i;
    CONTINUE WHEN MOD(i, 2) = 0;
    dbms_output.put_line(‘i: ‘||i);
  END LOOP;
  
  —-CURSOR FOR LOOP(커서 출력)
  FOR i IN c_emp LOOP
    dbms_output.put_line(‘이름: ‘||i.name||’, 기본급: ’||i.salary);
  END LOOP;
END
;



728x90
반응형
728x90
반응형

1. cmd 창에서 명령어 SET 실행

2. 출력 결과 중, Path란에서 오라클 설치(ORACLE_HOME) 경로 확인
*ORACLE_HOME은 가변적인 경로


tnsnames.ora

-데이터베이스 주소를 정의해놓은 파일
-해당 파일이 있으면 IP주소와 SID 혹은 Service Name을 직접 입력하지 않고도 DB 연결 가능
-(고정)경로: ORACLE_HOME\network\admin\tnsnames.ora



sqlplus 계정명/패스워드@tnsnames.ora에 설정한 DB alias명


728x90
반응형
728x90
반응형

 

1. 현재 라즈베리파이 ip 주소 확인

무선(wlan0)과 유선(eth0) 주소가 다른데 무선의 경우 wlan0에 inet 주소를 확인!

 

 

2. /etc/dhcpcd.conf 파일 수정

#/etc/dhcpcd.config 파일 수정
sudo vi /etc/dhcpcd.conf

 

interface wlan0

static ip_address="ip주소 입력"

static routers="ip주소의 끝부분만 1로 바꿔서 입력"

 

위 내용을 해당 파일 맨 아래 쪽에 추가해주면 됨

 

 

 

 

3. 재시작

#networking service 재시작
sudo /etc/init.d/networking restart

#라즈베리파이 재시작
sudo reboot

 

 

 

 

728x90
반응형
728x90
반응형

1. 라즈베리파이에 들어있던 다양한 프로그램과 라이브러리를 최신 버전으로 업그레이드

#미리 정해져 있는 레파지토리 또는 저장소 서버로부터 최신 패키지 리스트를 받아옴
sudo apt update

#시스템 업그레이드(패키지의 의존성까지 고려해서 업그레이드 수행)
sudo apt full-updgrade

#설치 후 재부팅
sudo reboot

 

 

 

2. 라즈베리파이 운영체제의 전체적인 설정 변경

Preferences > Raspberry Pi Configuration
-System 탭: 암호 또는 호스트네임 변경, 부팅 후 시작화면 설정
-Performance 탭: GPU 메모리 변경

 

 

 

3. OS 한글 깨짐 해결 방법

#한글 입력을 위한 패키지 설치
sudo apt install ibus ibus-hangul

#한글이 정상적으로 출력되도록 한글 폰트 설치
sudo apt install fonts-nanum fonts-unfonts-core

#설치 후 재부팅
sudo reboot

 

+ 한글 입력이 안 될 경우

우측 상단의 입력기 아이콘 클릭 후, [한국어-korean] 말고 [한국어-hangul] 로 변경

 

 

 

 

 

https://www.youtube.com/watch?v=nxeFKr63yC4

728x90
반응형
728x90
반응형

1. 라즈베리파이 4에 anydesk 설치

 

#anydesk 데비안 패키지 다운로드
wget https://download.anydesk.com/rpi/anydesk_6.1.1-1_armhf.deb

#다운로드 받은 패키지 설치
sudo dpkg -i anydesk_6.1.1-1_armhf.deb

 
→ 오류 발생
dpkg: dependency problems prevent configuration of anydesk: armhf:
anydesk: armhf 패키지는 다음 패키지에 의존: libminizip1. 
 
위와 같은 내용의 오류 발생할 때는 추가 패키지를 설치해주고 재설치 진행
 
 

#추가 패키지 설치
sudo apt-get install libminizip1 libegl1-mesa

→ 오류 발생
이 상황을 바로잡으려면 'apt --fix-broken install'을 실행해야 할 수도 있습니다.
다음 패키지의 의존성이 맞지 않습니다: anydesk:armhf : 의존: libminzip1:armhf 하지만 %s 패키지를 설치하지 않을 것입니다.
 
추가 패키지 설치 중 오류 발생해서 오류 메세지에 있는 명령어(apt --fix-broken install) 실행하고 추가 패키지 재설치 진행
 
 
 
 
 
 

2. anydesk 실행

#anydesk 실행
anydesk

→ 오류 발생
anydesk: error while loading shared libraries: libbrcmGLESv2.so: cannot open shared object file: No such file or directory
 
 

#추가 패키지 설치 및 소프트 링크를 만들어줌
sudo apt-get install libegl1-mesa libegl1-mesa-dev mesa-common-dev libgles2-mesa libgles2-mesa-dev
sudo ln -s /usr/lib/arm-linux-gnueabihf/libGLESv2.so /usr/lib/libbrcmGLESv2.so
sudo ln -s /usr/lib/arm-linux-gnueabihf/libEGL.so /usr/lib/libbrcmEGL.so

추가 패키지 설치 후 재실행
 
 

#추가 설치
sudo dpkg --add-architecture armhf
sudo apt install libpolkit-gobject-1-0:armhf libraspberrypi0:armhf libraspberrypi-dev:armhf libraspberrypi-bin:armhf libgles-dev:armhf libegl-dev:armhf


나같은 경우엔 또 같은 에러가 발생해서 추가로 더 설치함(Raspbian 64 aarch64에 anydesk armhf를 설치하는데 필요한 거 같음)


설치 후, anydesk 재실행해보니까 정상적으로 실행되고 원격 접속도 잘 됨


 
 
 
 
 
 

라즈베리 파이(Raspberry Pi) 4 Model B에 AnyDesk 설치
https://remnant24c.tistory.com/330
Installing AnyDesk to the Raspberry Pi
https://pimylifeup.com/raspberry-pi-anydesk/
anydesk: error while loading shared libraries libbrcmglesv2.so
https://raspberrypi.stackexchange.com/questions/116996/anydesk-error-while-loading-shared-libraries-libbrcmglesv2-so/137566#137566

728x90
반응형
728x90
반응형

오라클 데이터 딕셔너리(Data Dictionary)

  • 오라클 데이터베이스 운영과 연관된 중요한 정보를 제공하는 읽기 전용 시스템 테이블
  • 뷰의 집합으로 일반 사용자가 직접 수정하는 것은 불가능하며 오라클 서버가 스스로 관리하는 영역(소유자: SYS)

 

모든 스키마 오브젝트(테이블, 인덱스, 뷰, 시퀀스, 동의어, DB링크, PL/SQL 함수나 프로시저)의 정의와 이 오브젝트에 대해 얼마나 많은 저장공간을 사용하는지, 칼럼의 기본값은 무엇이고 제약조건은 어떤 것들이 있는지, 오라클 사용자의 이름, DB에 생성된 권한과 롤 등이 어떻게 부여 되었는지, 객체접근 및 수정에 따른 시스템 감사정보, 데이터베이스 생성시각, 이름, 운영모드, 인스턴스의 이름 등과 같이 DB운영에 필요한 중요한 정보들이 기록된다.

오라클은 사용자 정보 및 관련 스키마 오브젝트와 저장구조등에 접근하기 위해 데이터 딕셔너리를 접근하고 사용자가 실행하는 DDL(Data Definition Language)에 맞추어 데이터 딕셔너리를 갱신하고 모든 오라클 사용자는 이러한 정보를 읽기 전용 뷰를 통해 참조할 수 있다.





▪️접두어에 따른 데이터 딕셔너리 분류

 Prefix  Access Scope
USER_ 현재 로그인한 계정이 생성한 모든 객체에 대한 정보
ALL_ 현재 로그인한 계정으로 접근 가능한 모든 객체에 대한 정보
DBA_ 데이터베이스 내 모든 객체에 대한 정보





예시

—-데이터베이스 사용자가 접근 가능한 딕셔너리뷰를 나열
SELECT *
FROM DICTIONARY
;

—-모든 프로시저, 함수, 패키지 소스가 text 컬럼에 담겨있음
SELECT *
FROM DBA_SOURCE
;

—-모든 테이블, 뷰, 프로시저 등의 정보
SELECT *
FROM DBA_OBJECTS
;

—-모든 테이블과 뷰에 지정된 comment 정보
SELECT *
FROM DBA_TAB_COMMENTS
;

—-모든 테이블과 뷰의 컬럼과 지정된 comment 정보
SELECT *
FROM DBA_TAB_COMMENTS
;








참조
http://www.ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=636

728x90
반응형
728x90
반응형

💡리눅스에서 파일이나 디렉터리를 사용해 할 수 있는 작업은 크게 세 가지로 나뉘는데 이 작업에 대한 권한을 파일(디렉터리)마다 사용자에 따라 지정


작업 사용자
1. 읽기(read)
2. *쓰기(write)
3. 실행(execute)
1. 사용자(user)
2. 그룹(group)
3. 기타(others)
4. 모든 사용자(a=u+g+o)


*파일에 부여되는 쓰기(w) 권한

  • 파일 내용을 수정할 수 있는 권한
  • 파일 생성, 삭제, 이동 등에 대한 권한은 파일이 아니라 상위 디렉터리에 쓰기(w) 권한이 부여되어 있어야 함

 

*디렉터리에 부여되는 쓰기(w) 권한

  • 디렉터리 내부에 파일을 생성, 삭제, 이동이 가능한 권한




▪️ls -l

  • 파일이나 디렉터리에 지정된 권한이나 파일 소유자와 그룹을 확인
  • 현재 디렉터리 내 파일 리스트(ls=list)가 하나의 파일 단위로 한 줄로 길게(-l=long) 출력

 

 

  • 첫번째 필드: 사용자 별 권한
 d  r  w  x  r  -  x r  - x
*파일유형 사용자 그룹 기타


*파일 유형

일반 파일 -
디렉터리 d
특수 파일 블록 파일 b
입출력 파일 c
심볼릭 링크 파일 l
파이프 p
소켓 s

 

  • 세번째 필드: 파일 소유자명
  • 네번째 필드: 그룹명




✅ chmod(Change Mode)

  • 파일이나 디렉터리의 *모드를 변경(파일이나 디렉터리의 권한 변경)
chmod [옵션] [모드] [파일 및 디렉터]

 

*모드(mode)

  • 사용자(u, g, o, a) 별 권한(r, w, x)에 대한 설정값을 숫자모드와 기호모드로 표현

 

기호모드
사용자 작업 *연산자
u g o a r w x - + - =
숫자모드
  4 2 1    


*연산자

  • 허가권 부여: +
  • 허가권 제거: -
  • 허가권 지정(기존 속성값은 사라짐): =

 

▪️ 옵션

옵션 의미
-R 경로와 그 하위 파일들을 모두 변경



✅ 예시

#test.txt 파일에 소유자만 읽기,쓰기 권한이 부여된 상태에서 
#소유자에게 실행 권한을 부여하고 그룹과 기타 사용자에게 쓰기 권한 부여
chmod u+x,go+w test.txt
chmod 722 test.txt

#myDir 디렉터리와 하위 파일과 디렉터리 대상으로 기타 사용자에게 쓰기 권한 부여
chmod -R o+w myDir





728x90
반응형
728x90
반응형

▪️ ls -l

  • 파일이나 디렉터리에 지정된 권한이나 파일 소유자와 그룹을 확인
  • 현재 디렉터리 내 파일 리스트(ls=list)가 하나의 파일 단위로 한 줄로 길게(-l=long) 출력

 

 

  • 첫번째 필드: 사용자 별 권한
  • 세번째 필드: 파일 소유자명
  • 네번째 필드: 그룹명

 

 

 

 

 


✅ chown(Change Owner)

  • 파일이나 디렉터리의 파일 소유자와 그룹 소유권 변경
chown [옵션] 파일소유자명[:그룹명] [파일 및 디렉터리]





✅ chgrp(Change Group)

  • 파일이나 디렉터리의 그룹 소유권 변경
chgrp [옵션] 그룹명 [파일 및 디렉터리]

 

▪️ 옵션

옵션 의미
-R 경로와 그 하위 파일들을 모두 변경

 




✅ 예시

 chown  chgrp
 chown user:user test.txt  
 chown user test.txt  
 chown :user test.txt  chgrp user test.txt
 chown -R :user myHome  chgrp -R user myHome

 

728x90
반응형
728x90
반응형

✅ tar(Tape Archive)

  • 여러 파일들을 하나로 묶은 것(묶은 파일들이 .tar 안으로 들어가는게 아니라 복사된 파일들이 .tar 로 묶임)
  • 파일들의 속성과 디렉터리 구조 등을 모두 보존하며 묶기 때문에
    1. 압축&압축해제 등의 작업을 거치면서 파일이 변경, 소실될 염려가 없어서 소스 배포 파일을 만드는 용도로 자주 사용
    2. tar 파일 크기가 커짐. 그래서 무조건 압축 기술(gz, bz2..)도 같이 사용 => 한번에 묶고 압축까지!
tar [옵션] [파일] ... 

 

▪️옵션

옵션 의미
-f [tar 파일명] 생성할 tar 파일명(file name) 또는 해제할 tar 파일명을 지정하는 옵션으로 무조건 붙여줘야 함
-c tar 파일 생성(create)
-x tar 파일 해제(extract)
-t tar 파일 속 파일들을 펼쳐서 list 형태로 출력
-v 처리되는 과정(파일 정보)을 자세하게 나열
-r [추가할 파일] 기존 tar 파일에 새로운 파일 추가
-C [PATH] 지정한 경로의 디렉터리로 이동
-j bzip2 압축 적용 옵션(tar.bz2)
-J xz 압축 적용 옵션(tar.xz)
-z gzip 압축 적용 옵션(tar.gz)

 
 

예시

#대상 디렉터리를 포함한 모든 파일과 디렉터리를 tar로 묶기
tar -cvf test.tar [PATH]

#파일을 지정하여 tar로 묶기
tar -cvf test.tar [FILE1] [FILE2]

#현재 디렉터리에 tar 해제
tar -xvf test.tar

#지정된 디렉터리에 tar 해제
tar -xvf test.tar -C [PATH]

#묶여있는 파일 목록 확인
tar -tvf test.tar

#myTest 디렉터리를 tar로 묶고 gz으로 압축
tar -zcvf test.tar.gz myTest

#gzip으로 압축된 tar를 현재 디렉터리에 해제
tar -zxvf test.tar.gz

 

728x90
반응형
728x90
반응형
REGEXP_LIKE(컬럼, ‘패턴1|패턴2|패턴3’, [매칭파라미터])

NOT REGEXP_LIKE(컬럼, ‘패턴1|패턴2|패턴3’, [매칭파라미터])

 

  • 오라클 10g 버전부터 추가된 기능으로 유닉스(리눅스) 정규식과 파이프(|)문자를 사용하여 다양한 패턴의 다중 검색 가능



✅ 정규식

정규식의미 예시 설명
^문자열의 시작^K 대문자 K로 시작하는 문자열
$문자열의 끝H$ 대문자 H로 끝나는 문자열
.임의의 문자^.k 두번째 문자가 소문자 k인 문자열
 [^문자열]해당 문자열 제외[^A-Z]$ 대문자로 끝나는 문자열 제외
 [A-Z]A~Z 까지의 알파벳 대문자 중 하나에 매칭  
 [a-zA-Z]알파벳 대소문자 전체 중 하나에 매칭  
 [0-9]0~9 까지의 숫자 중 하나에 매칭  




✅ 예시

--직업명에 end 또는 Full 문자열을 포함하는 직원들 조회
SELECT *
FROM employees
WHERE yyyy = ‘2022’
AND REGEXP_LIKE(job, ‘end|Full’)
;

--직업명이 Android 또는 ios로 시작하는 직원들은 제외하고 조회
SELECT *
FROM employees
WHERE yyyy = ‘2022’
AND NOT REGEXP_LIKE(job, ‘^Android|^ios’)
;

--직업명이 Designer 또는 Developer로 끝나는 직원들 조회
SELECT *
FROM employees
WHERE yyyy = ‘2022’
AND REGEXP_LIKE(job, ‘Designer$|Developer$’)
;

--90년대 1월 또는 80년대 1월에 출생한 직원들 조회
SELECT *
FROM employees
WHERE yyyy = ‘2022’
AND REGEXP_LIKE(birth_date, ‘^9.01|^8.01’)
;


✅응용

SELECT *
FROM user_source
WHERE REGEXP_LIKE(text, (SELECT LISTAGG(table_name, ‘|’) WITHIN GROUP(ORDER BY table_name) AS table_name
                         FROM user_tables
                         WHERE table_name LIKE ‘%GNPS%’))


 

728x90
반응형

+ Recent posts