본문 바로가기
반응형

DBMS/ORACLE73

ASM DISK 사이즈 다른 경우 DATAFILE 추가 테스트 버전 : ORACLE 19.3.0.0 ASM DISK 추가 시 동일 사이즈 LUN 추가를 권장하는 이유와 같은 DISK GROUP 다른 DISK 사이즈 상황에서 DATAFILE 추가 시 사이즈 할당이 어떻게 되는지 테스트 해 보았다. 요약 : - DISK SIZE에 비례해서 할당되는 사이즈도 달라진다 : 동일 사이즈의 LUN 추가를 권장하는 이유는 데이터 불균형이 발생 할 수 있기 때문 - ASM disk 사이즈가 다를 경우 데이터분산 불균형이 발생하므로 동일사이즈로 할당하는것을 권장 - 사이즈에 따른 성능 차이는 없으며 LUN 수가 많지 않게 하는 것을 권고(관리 오버헤드 발생) - ASM1 5G 이고 나머지는 1G 사이즈 데이터파일 사이즈를 100MB 늘렸더니 아래와 같이 할당 : 100/4 는 25.. 2022. 5. 10.
ARCHIVE(아카이브) HANG 조치, ORA-16020 DBMS: oracle 11.2.0.1 운영 중 갑작스런 archive 영역 사용 증가로 redo log archive에 실패하여 DB가 HANG 상황에 빠지는 경우가 있다. 아카이브 영역을 정리 후 'archive log all'을 시도 했지만 ORA-16020 에러 발생하며 진행이 안될 때 해결방법 HANG 발생 후 조치하였지만 reopen 값에의해(default 300초) 바로 풀리지 않고 기다리고 있는 경우에도 사용하여 바로 진행 할 수 있다(관련 값 V$ARCHIVE_DEST 에서 확인 가능). 요약: 1. 아카이브 경로 FULL로 HANG 발생 2. 해당 경로 정리 후 ARCHIVE LOG ALL 실행(ORA-16020 발생하며 실패) 3. alter system set log_archive_.. 2022. 3. 28.
redo log 사이즈 변경 RAC ASM 버전 : ORACLE 11.2.0.1 요약 : 신규로그 노드별 logfile group 추가 log switch 및 checkpoint 사용하여 삭제 대상 (CURRENT -> ACTIVE -> INACTIVE) 상태로 만들어 준다 drop logfile group 으로 삭제 노드별 3개 그룹 2개 멤버 파일로 구성하여 신규 로그 추가 SQL> select a.group#, THREAD#, SEQUENCE#, a.member, b.bytes/1024/1024 MB, b.archived, b.status from v$logfile a, v$log b where a.group# = b.group# order by 2, 3 ; 2 3 4 5 6 7 8 GROUP# THREAD# SEQUENCE# MEMBER .. 2022. 3. 25.
srvctl stop/start database 명령은 어떤 노드부터 동작할까? 버전 : ORACLE 11.2.0.1 srvlctl stop/start database 명령을 사용하여 재기동 진행 시 노드 별 재기동 순서가 있을까? 라는 궁금증이 생겨 테스트 진행요약:- stop 은 동시에 진행 됨- start 는 한 노드 씩 순차적으로 진행됨- start database 명령으로 기동 시 딱히 정해진 순서는 없어 보임(명령을 실행 한 노드 또는 인스턴스가 중지된 순서 등 여러상황 반복 테스트 시 특별한 규칙을 찾을 수 없었음)- 노드별 재기동 순서가 있을 경우 인스턴스 레벨로 진행하는 것이 좋다rac1 노드에서 명령 실행rac1 -> rac2 순서 stop 진행 rac2 부터 기동됨[oracle@rac1 ~]$ srvctl stop instance -d RACDB -i racdb1.. 2022. 3. 25.
db_files 파라미터 변경 RAC 버전 : ORACLE 11.2.0.1 요약: - 해당 파라미터는 디비에서 사용 가능한 data_file 수(temp, control, redo 등은 제외)로 설정값보다 많을 수 없다 - 파라미터 적용 시 DB 재기동 필요 - db_files 파라미터는 RAC 구성에서 롤링(한 노드씩 작업 진행)으로 변경 불가, 모든 노드 내리고 올려야 함 DB_FILES PropertyDescription Parameter type Integer Default value 200 Modifiable No Range of values Minimum: the largest among the absolute file numbers of the datafiles in the databaseMaximum: operating sys.. 2022. 3. 23.
권한 부여 시 ROLE, PRIVILEGE 차이 DB권한관리는 대부분 업무별 ROLE 을 만들어 적절하게 운영 할 것이다. 운영 중 서비스가 추가되면서 타업무의 테이블을 조회하는 경우가 생길 수 있는데 이 때 신규 권한을 부여 하는 방식에 따른 차이를 알아보자. 요약 : - ROLE 부여 시 기존에 접속되어 있던 세션은 적용이 안된다(신규접속 세션부터 적용 됨). - PRIVILEGE 부여 시 기존/신규 세션 모두 적용 됨 - DEFAULT_ROLE 상태 YES 인 경우만 ROLE 적용 됨 -- SK2 유저에 ROLE 부여 및 확인 SQL> select sid, serial#, username, status, program, logon_time from v$session where username = 'SK2' ; SID SERIAL# USERNAME.. 2022. 3. 14.
테이블 OWNER가 아닌 다른 유저로 인덱스 생성 시 필요 권한 SK.T1 테이블이 있고 해당테이블에 SK2 유저가 SK2.T1_IX1 인덱스를 생성하려고 한다. 테이블의 INDEX 권한 부여 시 인덱스 생성 가능 ## SK2 유저가 인덱스 생성 시도 SQL> show user USER is "SK2" -- 조회 가능 확인 SQL> select count(*) from sk.t1 ; COUNT(*) ---------- 72655 SQL> create index t1_ix1 on sk.t1(object_name) ; create index t1_ix1 on sk.t1(object_name) * ERROR at line 1: ORA-01031: insufficient privileges ## 관리자 권한으로 해당 테이블 권한 확인 및 index 권한 sk2 에 부여 SQ.. 2022. 2. 28.
APPEND 사용 시 logging / nologging 에 따른 로그 사용량 변화 대량 INSERT 작업에서 로그발생 최소화 및 성능을 위해 APPEND 힌트 사용 시 테이블 logging/nologging 에 의한 로그발생량 차이가 있는가? 요약 : - 테이블 nologging + APPEND 사용 시 로그 발생량 가장 적음(테이블 logging 모드에서 append 힌트만 사용한 경우도 로그발생량 감소 효과는 있음) - 인덱스는 logging / nologging 에 상관없이 무조건 log 사용(인덱스 nologging은 생성 시 적용되는 옵션) - 파티션 구문 추가하여 파티션 단위 작업 시 해당 파티션만 LOCK 잡힘(여러개 파티션 동시 작업 가능) 주의사항 : - APPEND 힌트 사용 시 TABLE LOCK 발생으로 다른 세션에서 DML 불가능 - insert 중에는 segm.. 2022. 2. 27.
테이블 조회 시 다른 세션에서도 uncommit block 을 읽을까? DB 버전 : Oracle Database 11.2.0.1 요약 : 테이블에 commit 되지 않은 데이터가 있고 다른 세션에서 해당 테이블 조회 시 commit 되지 않은 데이터를 읽어 올까? INSERT 만 발생시키고 uncommit 상태에서 다른 세션을 통한 데이터 조회 시 uncommit block 조회 하는 것 확인 됨 RAC 환경에서 commit 되지 않은 데이터를 가진 테이블을 다른 노드에서 조회 시 어떻게 동작 할까? RAC 환경에서 LMS 프로세스가 uncommit block 다른 노드로 전달 해줌 다른 노드에서 두번째 조회 시 buffers 가 올라 가는 것으로 봐서 최초 조회 시 local undo 에 저장 후 재 조회 시 사용 하는 것으로 보임 LMS(Global cache serv.. 2022. 2. 25.
oracle index 사이즈 증가 테스트 인덱스는 block을 재사용 하지 않고 계속 늘어난다는 이야기가 있어 테스트 함 DB 버전 : Oracle Database 19.3.0.0 요약 : 인덱스도 사용하지 않는 block 을 재사용 한다. 하지만 한번 늘어난 사이즈는 줄어들지 않아 rebuild 를 통해서만 축소 가능하다. -- 시작 전 인덱스 사이즈 확인 SQL> SELECT owner, segment_name, segment_type, bytes/1024/1024 MB, blocks FROM DBA_SEGMENTS WHERE owner = 'SK' AND segment_name LIKE 'T1%' ; OWNER SEGMENT_NAME SEGMENT_TYPE MB BLOCKS ---------- -------------------- ----.. 2022. 2. 16.
ORA-1653 테이블스페이스 여유 공간 있는데 INSERT 실패 테이블 스페이스의 여유공간이 충분한데 INSERT가 안된다. 해결방법 : 할당 가능 extent 사이즈 확인 후 테이블스페이스 사이즈 추가 오류코드 ORA-1653: unable to extend table SK.T1 by 8192 in tablespace TS01 -- 에러코드의 의미상 숫자 8192는 8K의 용량이 아니라 BLOCK의 개수를 의미함 -- 8192 * 8K = 64MB로 만약에 테이블스페이스의 여유공간이 크더라도, 할당 가능한 extent 크기가 64MB 보다 작으면 에러 발생(extent 는 연속된 블록의 집합) 테이블스페이스의 할당 (ALLOCATION)은 옵션에 따라 두 가지 종류로 나뉜다. - AUTOALLOCATE : 오라클 내부 로직에 의해 64KB / 1MB / 8MB/ 6.. 2022. 2. 16.
ORACLE EOS 확인 아래 주소 PDF 파일에서 확인 가능 https://www.oracle.com/support/lifetime-support/resources.html 2022. 2. 16.
oracle 테이블 변경(alter table) 후 트리거 invalid 상태 변화 DBMS : Oracle 19.3 - 트리거 관련된 테이블 속성 변경 시 invalid 되지만 정상동작 가능하면 실행 시 valid 상태로 자동 변경됨 테스트 오브젝트 생성 -- 소스/타겟 테이블 생성 SQL> CREATE TABLE sk.t1 (c1 varchar(100), c2 varchar(200)) ; Table created. SQL> CREATE TABLE sk.t1_his (c1 varchar(100), c2 varchar(200),flag varchar(10)) ; Table created. -- 트리거 생성 SQL> create or replace trigger sk.tri1 AFTER INSERT OR UPDATE OR DELETE ON sk.t1 FOR EACH ROW BEGIN if.. 2022. 2. 16.
반응형