본문 바로가기

ORACLE

(5)
오라클 FETCH 프로그래머스 SQL 문제를 푸는 과정에서 ROWNUM을 사용해서 푸는데 FETCH 를 사용해서 푸는 답안이있어 FETCH에 검색해봤다. 내가작성한 쿼리 SELECT NAME, DATETIME FROM ( SELECT A.NAME, A.DATETIME FROM ANIMAL_INS A, ANIMAL_OUTS B WHERE A.ANIMAL_ID = B.ANIMAL_ID(+) AND B.ANIMAL_ID IS NULL ORDER BY A.DATETIME ASC ) WHERE ROWNUM < 4 ; ROWNUM을 사용하다보니 SELECT문을 한번더 감싸서 ROWNUM으로 1,2,3등을 추출하였다. 하지만 FETCH 를 사용하니 한번 더 SELECT문을 쓰지않고 바로 1,2,3등을 추출할수 있게 됐다. SELECT..
오라클 순번 채번 CONNECT BY LEVEL 프로그래머스 SQL 을 문제를 풀다가 오라클 CONNECT BY LEVEL 을 알게 되어서 검색해보았다. CONNECT BY 는 계층형 쿼리에서 자주 볼 수 있는데 LEVEL 을 사용하면 원하는 만큼 행을 리턴해준다. 1부터 10가지 출력 SELECT LEVEL AS NUM FROM DUAL CONNECT BY LEVEL
ORA-01652 에러 업무를 하다가 갑자기 메인화면에 특정 영역이 조회가 되지 않는다고하여 해당 영역 조회 쿼리를 토드에 조회해 보았다. 그랬더니 ORA-01652(으)로 테이블 공간 TEMP에서 임시 세그먼트를 확장할 수 없습니다 라는 에러가 발생 하였다. 임시적으로 해결 방법으로는 해당 테이블 스페이스 안에 파일을 추가해주는 방법이 있다. Database => Monitor => Session Browser 클릭하여 세션을 KILL 하여 일시적으로 용량을 줄이는 방법도 있지만 결국 다시 용량은 가득 차기 때문에 사용하지 않았다. 토드에서 Database => Administer => Tablespaces 를 선택한다. 화면에서 해당 테이블 스페이스를 클릭한다. 아래에 Add 버튼을 눌러 추가 해 줄 수 있다. 최종적으로는..
ORA-28000 에러 DB_LINK 를 생성 하려다가 반복된 시도로 인하여 ORA-28000 : the account is locked 에러가 발생하였다 구글에 검색해보니까 계정이 잠겨있다는 말인데 SYS계정으로 로그인하여 풀어야 한다고 나와있다. 현재 유저들을 조회하는 쿼리를 입력하여 계정 잠김상태를 알 수 있다. SELECT username, account_status, lock_date FROM DBA_USERS; ACCOUNT_STATUS 상태를 정리하면 OPEN : 정상 EXPIRED : 계정의 패스워드가 파기된 상태 LOCKED : 계정이 잠긴 상태 EXPIRED & LOCKED : 패스워드가 파기되었고 계정이 잠긴 상태 USER의 잠금 해제 하는 방법 ALTER USER 사용자명 ACCOUNT [UNLOCK | ..
DB LINK 생성/삭제 방법 업무중에 DB링크를 생성 해야 하는 일이 생겨서 구글에 검색해 보았다. DB링크를 생성하는 방법은 생각보다 간단하였다. 생성 방법 CREATE DATABASE LINK TLINK CONNECT TO TEST IDENTIFIED BY TEST USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP) (HOST = 128.1.0.0) (PORT = 1521) ) ) (CONNECT_DATA = (SERVICE_NAME = XE) } )'; SID인 경우에는 SERVICE_NAME을 SID로 바꿔주면 된다. tnsnames.ora 파일에 DB 정보가 저장되어 있다면 USING에 접속정보만 입력 하면 되는데 저장되어있지않는경우에는 위에 처럼 다 써줘야..