반응형 백엔드159 Row Chaining & Row Migration Row Chaining 컬럼이 너무 길어서 DB BLOCK 사이즈보다 길어진 경우 블록 두개에 이어서 한 Row가 저장된다. Row Migration 데이터가 수정되면서 데이터가 더 켜저서 기존 block에 못들어가는 경우 다른 블록에 데이터를 넣고, 기존 블록 위치에는 링크를 남긴다. 블록이란? DBMS에서 데이터를 저장하는 때 담는 통 데이터의 위치나, 정렬 이런거 관리안한다고 하지만 사실 해야된다. 사용자입장에서 안해도되는 것 그럴때 데이터를 이리저리 조정할때 쓰는 기본 단위 그래서 한 레코드가 한 블록에 다 안담기면 레코드 하나에 두 블록을 조회해야되서 성능이 저하되게 된다. 2020. 11. 29. 계층형 쿼리 START WITH 속성 IS NULL CONNECT BY [NOCYCLE] PRIOR 속성 = 속성 ORDER SIBLINGS BY 속성; 예시> 사원 ID, 관리자 ID를 가지는 사원 테이블인 경우 조회 결과는 TREE 구조를 가진다. PRIOR가 붙은쪽이 내 속성이라고 생각하면 된다. PRIOR가 안붙은쪽이 다음 속성(자식)이라고 생각하면 된다. PRIOR가 붙은 쪽이 부모(상사)인 경우 정방향이다. PRIOR가 붙은 쪽이 자식(부하)인 경우 역방향이다. ORDER SIBLINGS는 같은 레벨의 자식간에 정렬 방식을 나타낸다. LEVEL 속성을 쓸수있는데 맨 처음(루트노트) 레벨은 1이다. 자식으로 내려갈수록 레벨이 올라간다. 계층형 쿼리는 트리가 아니라 그래프가 될 수도 있는데 NOCYCLE을 쓰.. 2020. 11. 29. MERGE MERGE는 MERGE INTO 옆에 적힌 테이블에다가 USING 옆에 적힌 테이블 데이터를 부어주는데 매칭(ON 절)이 된 경우 UPDATE 하고 없는 경우 INSERT 한다. SQLD 30회 42번 문제 실행 결과는 3행이 병합되었다고 뜬다. 1행은 매칭된 A,B,C 중 조건이 맞아서 UPDATE된 'B' 나머지 2행은 매칭안되서 INSERT 된 'D', 'E' 어딘가에서 병합된 3행이 'X', 'D', 'E'라는 설명이 있어서 한참 고민했다. 아래 MERGE 쿼리에서 NOT MATCHED 부분을 빼면 2행이 병합되었다고 뜨는걸 보고 'X'가 아니라 'B'인걸 알았다. CREATE TABLE SQLD_30_42_01 ( COL1 VARCHAR(45) NOT NULL, COL2 VARCHAR(45) N.. 2020. 11. 27. ORA-12514 : TNS:listener does not currently know of service requested in connect descriptor 1. CMD 창에서 lsnrctl stop, lsnrctl start 안되면 2. lsnrctl status로 ORCL 서비스 있는지 확인 없으면 3. 탐색창에 서비스 입력 4. 오라클 서비스를 껐다 켠다(새로고침) 안되면 5. 오라클 설치 위치 NETWORK/ADMIN으로 가서 tnsnames.ora, listeners.ora 파일 수정 나같은 경우 기존에 localhost로 되어있던 부분을 내 PC 이름으로 변경하니까 정상 동작 내 PC 이름은 내컴퓨터 속성 보기에서 확인할 수 있다. 변경후 1-4번 수행 2020. 11. 27. 서브쿼리 SELECT 절의 서브쿼리 SELECT 절에서 서브쿼리가 사용된 경우 하나의 데이터만 나와야 한다. 그래서 보통 조건에 PK를 넣는다. 아니면 DISTINCT나 집계함수를 써야된다. 2020. 11. 27. ORA-01031: insufficient privileges 덤프뜬거 import 하려니까 발생 왠진 몰라도 system을 as sysdba로 할때 발생했다. 원래 쓰던 PC에서는 정상 동작했는데 모르겠다. as sysdba 를 쓸때는 sys로 바꿔줬다. as sysdba 안쓰는데 sys/비밀번호를 사용하면 아래 에러 발생 ORA-28009: connection as SYS should be as SYDBA or SYSOPER 2020. 11. 26. 이전 1 ··· 5 6 7 8 9 10 11 ··· 27 다음 반응형