운영(Ops) 이야기/데이터베이스

    [Oracle] 계정 락(LOCK) 걸렸을 시 해제하는 방법 (ORA-28000)

    ERROR NAME ORA-28000 : the account is locked 오라클 사용자 계정이 잠긴 상태에서 발생하는 오류다. SYMPTOMS 계정이 잠기는 주요 원인은 아래와 같다. 1. ORACLE 서버 관리자 (DBA)가 계정을 수동으로 잠금 상태로 만든 경우 2. ORACLE 기본 설정변수 중 FAILED_LOGIN_ATTEMPTS에 설정되어 있는 로그인 실패 제한 횟수를 넘어서 로그인에 실패한 경우 HOW TO SOLVE 먼저, SYS 또는 SYSTEM 계정으로 접속한다. sqlplus "/as sysdba" 1. 계정 별 상태 (STATUS) 조회 SELECT USERNAME, ACCOUNT_STATUS, LOCK_DATE FROM DBA_USERS; USERNAME : 계정명 ACCO..

    [ORACLE] 사용자 (User) 패스워드 변경하는 방법

    Oracle 데이터베이스를 운영하다보면 위와 같은 문구를 종종 보게 된다. 이는 패스워드 기간이 곧 만료 임박 시점임을 알려주는 알림창이므로 패스워드 변경만 해주면 간단한 일이다. ALTER USER [계정명] IDENTIFIED BY [패스워드]; 위 SQL 구문으로 변경해주면 된다. 근데, 간혹 분명 위 구문을 통해 패스워드를 변경했어도 접속 오류가 발생하는 상황이 생긴다. (예: SYS, SYSTEM 계정 등) 이는 오라클 DB 내 패스워드 파라미터를 저장하는 파일이 있는데 해당 파일도 수정해줘야 정상적으로 접속이 된다.

    [Oracle] 실행한 SQL 쿼리 이력 확인 방법

    다음은 Oracle Database 11g version에서 실행한 쿼리다. 2022-10-01 부터 오늘 일자 기준으로 특정 USER가 실행한 SQL 구문 이력을 확인하기 위해 아래와 같이 구문을 실행했다. 오라클에서 제공하는 v$sqlare 사전을 활용해서 아래 컬럼들을 각각 조회하였다. 최근 활동시간 (last_active_time) Parsing 한 유저명 (parsing_schema_name) SQL 아이디 (sql_id) SQL 구문 (sql_text) SELECT last_active_time ,parsing_schema_name ,sql_id ,sql_text FROM v$sqlarea WHERE parsing_schema_name = '[USERNAME]' AND last_active_t..

    [Oracle] 데이터베이스 명, SID 조회 방법

    오라클 데이터베이스명과 SID 확인 방법은 아래와 같다. SELECT NAME, DB_UNIQUE_NAME FROM v$database; SELECT instance from v$thread; 오라클 전체 시퀀스 조회 방법은 아래와 같다. SELECT * FROM USER_SEQUENCES;

    [Oracle] Synonym 사용법 정리 (생성, 조회, 권한, 삭제 등)

    Synonym (시노님) 이란? 데이터베이스 객체는 각자 고유한 이름이 있다. 이 객체들에 대한 동의어를 만드는것이 바로 시노님이다. ALIAS 개념과 유사한데 ALIAS는 1회성인 반면 Synonym은 영구적이다. 따라서 Synonym은 다른 유저의 객체를 참조할 때 사용한다. 이 Synonym에는 PUBLIC과 PRIVATE타입이 있다. Public : 모든 사용자 접근 가능 Private : 특정사용자만 접근 가능 Synonym 생성 및 수정 방법 CREATE OR REPLACE [PUBLIC/PRIVATE] SYNONYM [시노님명] FOR [객체명]; PUBLIC/PRIVATE 는 명시 선택사항이며, 기본값은 PRIVATE으로 생성됨 Synonym 수정도 위 구문으로 다시 쓰면 됨 예 : CRE..

    [Oracle] Materialized View 생성 권한 부여 방법

    Materialized View를 생성하기 위해선 다음 2가지 권한이 필요함 Query Rewrite Create Materialized view 따라서 아래와 명령으로 권한 부여가 가능함 GRANT QUERY REWRITE TO KPAPER; GRANT CREATE MATERIALIZED VIEW TO KPAPER; SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='[사용자명]'; 마지막 select 구문은 권한이 잘 부여되었는지 사용자 권한을 조회하는 명령임.

    [Oracle] Oracle 용어 정리 : SID 와 Service Name의 차이 및 확인 방법

    SID와 Service Name의 차이는 아래와 같다. SID : DB 하나의 인스턴스 Service Name : 여러 개의 인스턴스를 모아 하나의 서버 혹은 시스템을 구성한 것 설명 일반적인 경우 데이터베이스가 인스턴스 하나만으로 구성되어 있다면 " 데이터베이스명 = SID " 가 된다. 하지만 RAC 구성일 경우 하나의 서버 내에 두 개 이상의 인스턴스로 구성되어 있으므로 아래와 같이 SID가 서로 다를 수 있다. SQL> SELECT NAME, DB_UNIQUE_NAME FROM V$DATABASE; NAME DB_UNIQUE_NAME ------------------ ------------------------------------------------------------ ORCL ORCL SQ..

    [Oracle] DB LINK 생성 및 권한 부여

    ※ 이 글은 Oracle Database 11g Release 11.2.0.4.0 - 64bit 버전을 기준으로 작성된 글입니다. 원격지(B)에 있는 서버의 데이터를 조회하고자 할 때 로컬(A) 서버에서 사용하는 방법 DBLINK의 소유자(OWNER)는 생성 후 수정이 불가능함. DBLINK 생성 권한 부여 및 확인 GRANT CREATE DATABASE LINK TO [사용자명] SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='사용자명'; 해당 명령은 SYS 계정으로 사용자한테 부여해주면 됨 DBLINK 생성/삭제 및 조회 CREATE DATABASE LINK [링크명] CONNECT TO [원격지 사용자명] IDENTIFIED BY "[원격지 사용자 비밀번호]" USING..