본문 바로가기
728x90

전체 글181

리눅스 명령어 정리 1. 현재 위치 / 폴더 이동pwd현재 내가 있는 디렉터리의 전체 경로를 표시한다.ls현재 디렉터리의 파일과 폴더를 표시한다.ls -l파일의 권한, 소유자, 크기, 수정 시간 등을 자세히 표시한다.ls -la숨김 파일까지 포함해서 자세히 표시한다.ls -lah숨김 파일까지 포함하고 파일 크기를 읽기 쉬운 단위로 표시한다.cd /opt/opt 디렉터리로 이동한다.cd ..현재 디렉터리의 상위 디렉터리로 이동한다.cd ~현재 사용자의 홈 디렉터리로 이동한다.cd -바로 전에 있던 디렉터리로 이동한다.2. 폴더 / 파일 생성mkdir testtest라는 폴더를 생성한다.mkdir -p /opt/app/config상위 폴더가 없어도 필요한 폴더를 모두 생성한다.touch test.txt빈 파일을 생성한다.3. .. 2026. 8. 28.
LXC - LXC 컨테이너 용량 늘리는 방법 Proxmox에서는 가상머신(VM)과 컨테이너(LXC)의 메뉴 명칭이 다릅니다.VM(가상머신): Hardware (하드웨어)LXC(컨테이너): Resources (자원)[LXC 컨테이너 용량 늘리는 방법]LXC 컨테이너는 VM보다 확장이 훨씬 간단하며, 클릭 한 번으로 내부 파일시스템까지 자동 확장됩니다.좌측 메뉴에서 101 (컨테이너 이름) 선택메뉴에서 Resources (자원) 클릭목록에서 Root Disk (rootfs) 선택상단의 Volume Action (또는 Resize Disk) 클릭 → Resize 선택추가할 용량(예: 50) 입력 후 확인CLI(호스트 쉘)에서 한 줄로 늘리기:pct resize 101 rootfs +50G(LXC는 명령어를 실행하는 즉시 내부 파티션/파일시스템까지 100.. 2026. 8. 27.
오라클 데이터 이행 - Exchange Partition(파티션 익스체인지)를 이용한 이행 인덱스가 있는 상태에서 대량의 데이터를 INSERT하면 매 건마다 인덱스 분할(Split) 및 정렬 작업이 발생하여 속도가 심각하게 느려지고 엄청난 양의 Undo/Redo 로그가 쌓이게 됩니다. 인덱스를 제거한 상태에서 이행하는 것이 가장 빠릅니다. [1, 3] 🚀 최적의 대용량 이행 5단계 절차타깃 테이블을 MAIN_TAB(일반 테이블), 데이터 이행용 임시 파티션 테이블을 TEMP_PART_TAB이라고 가정하겠습니다.1단계: 기존 일반 테이블의 인덱스 드랍 (또는 Unusable 변경)완전히 새로 이행하는 환경이라면 DROP INDEX를 합니다.만약 기존 인덱스 구문을 백업하기 번거롭다면 인덱스를 유지한 채 UNUSABLE 상태로 만들고 이행 후 REBUILD하는 방법도 있습니다. [1] -- 방법.. 2026. 8. 13.
오라클 데이터 이행 - Exchange Partition(파티션 익스체인지) 오라클의 Exchange Partition(파티션 익스체인지)은 파티션 테이블의 특정 파티션 1개와 일반 테이블(Non-Partitioned Table)의 데이터 세그먼트(메타데이터)를 통째로 맞바꾸는 기능입니다. [1, 2] 실제 대용량 데이터를 복사하거나 이동하는 것이 아니라 데이터가 저장된 디렉토리 주소(포인터)만 변경하므로, 데이터양에 상관없이 1초 미만(순식간)에 작업이 완료됩니다. 대용량 데이터 적재(배치), 이관, 백업 후 삭제 등에 매우 유용하게 쓰입니다. [1, 3, 4, 5, 6] ➡️ 1. 기본 사용법 및 기본 문법작업을 위해서는 파티션 테이블의 컬럼 구조, 데이터 타입, 순서가 완벽히 동일한 일반 임시 테이블이 필요합니다. [4, 6, 7, 8] ALTER TABLE [파티션_테이블.. 2026. 8. 13.
오라클 데이터 이행 - 테이블 용량 조회, PGA 조회, 세션 메모리 수동 설정, 디스크 사용 확인, 대기이벤트 확인 1. 테이블의 용량 조회 (LOB 포함)테이블이 파티션되어 있거나 LOB 컬럼이 있으면 용량이 여러 행으로 쪼개집니다. 이를 합산하여 실제 디스크 점유 크기를 확인합니다.SELECT ROUND(SUM(bytes)/1024/1024/1024, 2) AS real_total_gbFROM dba_segmentsWHERE (segment_name = 'ASIS_TAB') OR (segment_name IN (SELECT segment_name FROM dba_lobs WHERE table_name = 'ASIS_TAB'));2. 시스템 PGA 설정 조회현재 DB 전체에 할당된 총 PGA 메모리 규모를 파악합니다. (wsp=AUTO 상태에서는 이 값을 기준으로 세션별 메모리가 쪼개져 배정됩니다.) [1] SE.. 2026. 8. 11.
오라클 데이터 이행 - DBMS_PARALLEL_EXECUTE DBMS_PARALLEL_EXECUTE는 대용량 테이블의 데이터를 여러 개의 작은 청크(Chunk)로 나눈 뒤, 백그라운드에서 병렬(Parallel)로 데이터를 수정, 삭제, 삽입할 수 있도록 돕는 Oracle 공식 패키지입니다.[1]주로 수천만 건 이상의 대규모 데이터에 대한 UPDATE나 DELETE 작업을 수행할 때, Lock 경합을 줄이고 Undo/Redo 테이블스페이스의 고갈(ORA-01555 Snapshot too old 등)을 방지하기 위해 필수적으로 사용됩니다.[2]🔍 DBMS_PARALLEL_EXECUTE의 핵심 특징자동 재시도 및 로깅: 특정 청크가 실패하더라도 전체 작업이 중단되지 않으며, 실패한 청크만 기록되어 추후 재실행할 수 있습니다.[3]리소스 관리: 백그라운드 Job(DBM.. 2026. 8. 5.
오라클 데이터 이행 - v$sql V$SQL은 데이터베이스 메모리(Shared Pool)에 로드되어 있는 개별 SQL의 실행 통계와 상태를 실시간으로 보여주는 딕셔너리 뷰입니다.📌 1. 필수 식별 컬럼 (무슨 쿼리인가?)SQL_ID: 오라클이 쿼리 텍스트를 해시하여 부여한 고유 식별자 (가장 많이 씀)CHILD_NUMBER: 동일한 쿼리 문장이지만 인덱스 변경, 유저 환경 등으로 실행 계획이 달라질 때 구분하는 자식 번호 (0부터 시작)SQL_TEXT: 수행된 SQL 문장의 앞부분 1,000자 (전체 문장은 V$SQLTEXT나 V$SQL_STATS 활용)PARSING_SCHEMA_NAME: 이 쿼리를 실행한 DB 접속 계정명⏱️ 2. 시간 관련 컬럼 (단위 변환 필수!)V$SQL의 모든 수치형 시간 단위는 마이크로초(Microsecon.. 2026. 8. 5.
오라클 데이터 이행 - 병렬 처리 확인 오라클에서는 이미 종료된 쿼리라도 V$SQL_PLAN이나 DBA_HIST_SQL_PLAN(AWR)에 기록된 실행 계획을 통해 병렬(PX) 오퍼레이션 수행 여부를 정확히 추적할 수 있습니다.🔍 다른 세션의 병렬 작업 및 실행 쿼리 조회 SELECT PX.QCSID AS MAIN_SID, -- 병렬 작업을 실행한 대장 세션 ID ST.SERIAL#, -- 세션 일련번호 (필요 시 KILL할 때 사용) ST.USERNAME, -- 접속한 DB 유저명 ST.MACHINE, -- 접.. 2026. 8. 5.
오라클 데이터 이행 - 롤백 진행상황 조회 롤백 상황에서 DBA_UNDO_EXTENTS의 ACTIVE 개수가 줄어들지 않거나 언두 공간이 부족해지는 현상은 대량의 데이터를 변경하다가 취소될 때 흔히 발생합니다. 오라클은 데이터를 원래대로 되돌리는 롤백 과정에서도 언두 블록을 계속 사용하고 유지해야 하기 때문입니다.현재 진행 중인 롤백 상황을 정확하게 모니터링하고 남은 시간을 예측할 수 있는 핵심 쿼리와 대응 방법을 정리해 드립니다.1. 실시간 롤백 진행률 및 예상 남은 시간 확인오라클 백그라운드 프로세스가 트랜잭션을 되돌리는 속도와 남은 작업량을 확인할 수 있는 가장 정확한 뷰는 V$FAST_START_TRANSACTIONS입니다.SELECT usn, state, undoblockstotal AS "총 언두 블록수", un.. 2026. 8. 5.
오라클 데이터 이행 - DDL 추출하기 1. 기본 추출 (모든 정보 포함)옵션을 지정하지 않고 기본 쿼리를 실행하면 테이블스페이스와 스토리지 정보가 모두 포함되어 나옵니다.-- 긴 텍스트 출력을 위한 환경 설정SET LONG 200000;SET PAGESIZE 0;SET LINESIZE 200;-- 기본 추출 실행SELECT DBMS_METADATA.GET_DDL('TABLE', 'EMP', 'SCOTT') FROM DUAL;[출력 결과 예시] CREATE TABLE "SCOTT"."EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ) SEGMENT CREATION IMMEDI.. 2026. 8. 4.
오라클 데이터 이행 - DBMS_SCHEDULER 오라클에서 프로시저를 백그라운드(비동기)로 실행하려면 오라클 내장 스케줄러 패키지인 DBMS_SCHEDULER를 사용하는 것이 가장 표준적이고 안전한 방법입니다.이 방식을 사용하면 메인 프로그램은 프로시저가 끝날 때까지 기다리지 않고 즉시 다음 로직을 수행합니다. 데이터 이행(Migration)처럼 오래 걸리는 배치 작업을 실행할 때 필수적으로 사용됩니다.1. DBMS_SCHEDULER.RUN_JOB 방식 (가장 추천)잡(Job)을 생성함과 동시에 use_current_session => FALSE 옵션을 주어 백그라운드로 즉시 실행하는 방법입니다.BEGIN -- 1. 즉시 실행할 백그라운드 잡 생성 및 실행 DBMS_SCHEDULER.CREATE_JOB ( job_name .. 2026. 7. 31.
Slot API + State Hoisting 패턴 Slot APIJetpack Compose에서 Slot API는 "UI의 특정 영역을 호출자가 직접 채워 넣을 수 있도록 Composable을 매개변수로 받는 디자인 패턴"입니다.Compose 라이브러리(Material3 포함) 전체에서 가장 많이 사용하는 패턴 중 하나이며, 상속(Inheritance) 대신 합성(Composition) 을 적극적으로 활용하는 방식입니다.왜 Slot API가 필요한가?예를 들어 프로필 카드를 만든다고 가정해 보겠습니다.처음에는 단순하게 만들 수 있습니다.@Composablefun ProfileCard( name: String, email: String) { Card { Column { Text(name) .. 2026. 6. 29.
728x90