DBA

개인 학습, 작업 기록용입니다. 올바르지 않은 정보가 있다면 댓글주시면 감사하겠습니다!

DATABASE/Oracle 19

[Oracle] 패드워드 기한 정책 확인 및 변경, 잠금 해제

개발서버 계정 잠금 해제 건이 있어서 확인 후 처리 프로파일내에 패스워드 만료 기간이 지정되어있어서 계정이 잠김개발용이라 패스워드 만료 제한을 풀고 계정 unlock함 --스키마 profile 확인SELECT username, default_tablespace, temporary_tablespace, account_status, profile FROM dba_userswhere username = 'db_user';-- 프로파일 패스워드 리밋 기한 조회SELECT RESOURCE_NAME, LIMITFROM DBA_PROFILESWHERE PROFILE = 'DEFAULT' AND RESOURCE_TYPE = 'PASSWORD';--UNLIMITED으로 변경ALTER PROFILE DEFAULT LIMI..

DATABASE/Oracle 2024.11.17

[Oracle] 오라클 서비스 시작, 중지, 기동 확인 쉘 스크립트

OS 환경 : CentOS7 오라클 중지 스크립트 ( oracle_stop.sh ) 1. 리스너 중지 2. 남아있는 오라클 세션 kill 3. 오라클 셧다운 4. 정상 셧다운 확인 - DB 인스턴스 조회하여 해당 구문 error코드값으로 확인 0이면 쿼리 정상 수행 ( DB 올라온 상태 ) 0아니면 ERROR ( DB 내려간 상태) #!/bin/sh #리스너중지 /bin/su - oracle -c "lsnrctl stop" #오라클세션 kill ps -ef |grep LOCAL|grep oracle|grep -v grep |awk '{print $2}'|xargs kill -9 #오라클 셧다운 /bin/su - oracle -c "sqlplus '/as sysdba'"

DATABASE/Oracle 2024.01.09

[Oracle] SQL*Plus spool 활용하여 데이터 csv 파일 생성하기

sqlplus spool 명령어를 활용하여 조회한 데이터를 csv 파일 생성 spool 이란? 데이터를 파일로 저장하는 명령어 사용법 - SPOOL 파일명.확장자(csv, txt 등) : 데이터를 파일명.확장자 형식의 파일로 저장한다 - SPOOL OFF : SPOOL 종료 SPOOL /경로/파일명.확장자 -- 쿼리 작성 및 sql 파일명 SPOOL OFF; 사용예제 --csvtest.sql 작성 --SET 명령어 활용하여 불필요한 옵션 제거 set LINESIZE 1000 SET TRIMSPOOL ON SET PAGESIZE 0 SET FEEDBACK OFF SET TERMOUT OFF SPOOL /orabackup/test.csv SELECT 'a' ||','||'b' as ee FROM dual; ..

DATABASE/Oracle 2024.01.05

[Oracle] USER, PUBLIC SYNONYM, PROFILE 이관시 DATAPUMP 사용법

오라클 개발 서버에 운영과 동일한 환경을 세팅하기 위한 작업 진행 중 public synonym과 profile 정보도 함께 가지고 오고자 작업 진행함. USER, PUBLIC SYNONYM, PROFILE, ROLE 등 특정 스키마에 포함된 object 가 아닌 경우에는 expdp full = y include = public_synonym, profile을 조건 사용한다. full=y : 데이터베이스의 모든 스키마 대상 INCLUDE = 추출에 포함할 데이터베이스 개체 유형 PROFILE 테스트 -- test profile 생성 create profile TEST_PROFILE LIMIT IDLE_TIME UNLIMITED LOGICAL_READS_PER_CALL UNLIMITED PRIVATE_SG..

DATABASE/Oracle 2023.12.28

[Oracle] NUM_INDEX_KEYS 힌트 사용시 INDEX 힌트 함께 사용하기

인덱스 구성된 컬럼을 사용할때 IN 조건절로 사용하게 되는 경우가 있음 인덱스 구성 컬럼 중 IN 조건절로 쓰이는 컬럼이 액세스 조건으로 사용되는지 필터조건으로 사용되는지에 따라 성능이 다르며 사용되는 경우에 따라 유리한 방법이 있다. ( ex) in 조건 개수가 많지않고 데이터가 여러 블록에 존재하는 경우, 액세스 조건으로 사용시 유리할 수 있음 ) 이럴때 num_index_keys 힌트를 사용하여 in 조건 컬럼을 액세스 조건으로 사용할지 필터 조건으로 사용할지 제어가능하다. -- 인덱스의 n번째 컬럼까지 액세스 조건으로 사용 /*+ num_index_keys(t ix_01 n) */ 개인 운영 노트) num_index_keys 힌트만으론 사용한 인덱스를 강제로 고정하지 않음 얼마전, 속도 저하 쿼리..

DATABASE/Oracle 2023.12.20

[Oracle] DB 링크 생성, 조회, 사용 및 삭제

오라클 DB 링크 : 로컬 DB와 원격 DB 간 데이터 작업시 사용 로컬 서버 tnsnames.ora 파일에 원격지 DB 접속 정보 추가하여 사용하거나 추가없이 직접 접속 정보를 기술하여 사용할 수 있다. 1. DATABASE LINK 생성 create [public] database link [DBLINK명] connect to [USER NAME] identified by "[USER PASSWORD]" using '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.0)(PORT= 1521)) (CONNECT_DATA=(SERVICE_NAME=[서비스명])))'; * DB 구성에 따라 service_name = [서비스명] 또는 sid = [sid명] 을 사..

DATABASE/Oracle 2023.11.21

[Oracle] 통계정보 백업 및 복구, 자동통계정보 수집 기능 비활성화

--테이블 자동통계정보 수집 기능 테이블 단위 비활성화 begin DBMS_STATS.LOCK_TABLE_STATS('TEST_USER','TBL_PRICE'); end; --테이블 통계잠금해제 begin DBMS_STATS.UNLOCK_TABLE_STATS('TEST_USER','TBL_PRICE'); end; -- 통계정보 확인 select table_name, num_rows, blocks, empty_blocks, chain_cnt, avg_row_len, stale_stats, last_analyzed, sample_size from user_tab_statistics where table_name = 'XTMP_MBER'; select index_name, blevel, leaf_blocks,..

DATABASE/Oracle 2023.11.14

[Oracle] database shutdown hang ( ora-01013: user requested cancel of current )

오라클 서버 구축하는 과정에서 여러번의 shutdown 과정이 필요한데, shutdown immediate는 잘되나 shutdown 시 hang 걸림을 확인 shutdown 명령어 날렸는데 오랫동안 반응이 없음 /engn/oracle/diag/rdbms/orcldev/ORCLDEV/trace alert_sid.log trace 확인 결과, 활성화된 프로세스가 존재하여 대기중인 상태 60분간 대기하다 ora-01013: user requested cancel of current 에러 뱉고 shutdown 중단 다른 세션에서 shutdown abort 로 해결함 --롤백없이 모든 명령 종료 shutdown abort; --제한모드로 시작, DB정상시작 & 다른 유저 접속 불가 startup restrict;..

DATABASE/Oracle 2023.10.05

[Oracle] INDEX 생성 모니터링, REBUILD 와 DROP CREATE 시 차이

오라클의 인덱스 리빌드 와 DROP 하고 다시 재생성하는 것에 대해서 각각의 방법이 어떻게 진행되는지, 어떤 장/단점이 있는지 알아보았습니다. 인덱스 생성 모니터링 --temp 테이블스페이스 임시세그먼트 생성 select * from V$SORT_USAGE; --임시 세그먼트 인덱스 테이블스페이스로 이관 select * from DBA_SEGMENTS where segment_type = 'TEMPORARY'; 인덱스 리빌드 테이블스페이스에 임시 인덱스 세그먼트 생성 기존 인덱스의 지정 테이블스페이스에 이관 기존 인덱스 드랍 후 임시 인덱스를 기존 인덱스로 바꿈 ( 이 작업을 위해 테이블스페이스에 2개의 인덱스가 잠시 공존함) => 리빌드를 진행하게 된다면, temp tablespace 와 인덱스 지정 ..

DATABASE/Oracle 2023.08.25