디스크 (1테라) 추가 후 테이블스페이스 생성 및 사용자 계정 등에 관한 질문입니다. 0 8 2,706

by 라뮤 [Oracle Admin] 테이블스페이스 사용자계정 디스크추가 [2018.08.22 10:49:09]


안녕하세요 

현재 디스크 용량이 거의 차서 디스크 증설(1테라) 후 오라클에서 신규 디스크를 사용하게 하려고 합니다. 오라클 및 테이블스페이스 지식이 짧다보니 궁금한것이 있어서 문의드립니다.

신규 디스크 마운트는TA가 한다고 하고 저는 순수 DBA역할만 하면 됩니다.

먼저,

================================================================

DB에서 사용하기위해

1. CREATE TABLESPACE 테이블스페이스명 DATAFILE '경로/테이블스페이스명_01.DBF

SIZE 10G AUTOEXTEND ON NEXT 500M MAXSIZE 20G;

여기까지  만하면 되는지 default storage도 포함해서 잡아야 하는지도 궁금합니다.

 <-- 기존 테이블스페이스를 조회해보니 테이블스페이스가 약 20~30G가 차면 수동으로 만들고 있었습니다. 

2. ALTER DATABASE ADD DATAFILE'경로/테이블스페이스명_01.DBF

SIZE 10G AUTOEXTEND ON NEXT 500M MAXSIZE 20G;

 * 1 번과 달리 2번 처럼 그냥 ADD DATAFILE 식으로 해야하는지도 궁금합니다.

 

3, 테이블스페이스가 생성된 후 기존 사용자들이 테이블스페이스에 대한 DEFAULT를 변경해줘야하는거죠? 아래와 같은 구문을 실행해줘야하는지요?

ALTER USER 유저명 DEFAULT TABLESPACE 테이블스페이스명;

* 여기에서 궁금한것이 테이블스페이스가 신규생성되고 각 사용자들의 DEFAULT 테이블스페이스를 변경 한다면 기존 시스템 테이블스페이스 정보도 신규 테이블스페이스에 맞게 변경을 해줘야하는지요? 아니면 NON 시스템 테이블스페이스에 해당하는 것만 변경해줘야하는지요? NON시스템 테이블스페이스에도 TEMP와 UNDO가 있는데 그것도 포함해서 변경해야하는지, 아니면 일반사용자만 바꿔야하는지요? 

4. 기존 디스크가 90%남았는데 신규 디스크를 추가하고 테이블스페이스와 데이터파일을 추가된 디스크에 경로를 잡아주고(새폴더를 만들어 두면 되겠죠?) 사용자 테이블스페이스 디폴트 정보도 바꾸면 바꾼 시점부터 사용자 데이터는 기존 디스크에 저장되는 것이 아니고 신규 디스크에 데이터가 저장되는건가요?

================================================================

이상 문의드리고자 하는 내용입니다. 아직 모르는 것이 많아 전문가분들의 도움이 필요합니다. 바쁘시지만 제글을 읽으시고 경험하셧던 것을 나눠주시면 감사합니다.

좋은 하루되세요

 

by 열심열심 [2018.08.22 12:28:36]

종합해서 말씀드리자면 하나의 테이블 스페이스에 1개이상의 데이터파일 추가가 가능합니다. 

1번은 비추하고 2번으로 해서 데이터파일을 추가된 스토리지에 저장하면됩니다.

그것보다 더 추천하는건 용량큰 테이블 스페이스를 추가된 스토리지에 옮겨서 

디스크io분산까지 하는게 관리적인 측면에서도 더 좋을 껍니다.

그리고 maxsize도 unlimit으로하는게(점검은 해야겠지만) 편하긴 합니다. 

 


by 라뮤 [2018.08.22 14:14:38]

답변감사드립니다. 

댓글을 읽다보니 궁금한 사항이 있네요

-------------------------------------------------------------------------------------------------------------

 * 2번에서 쿼리가 alter database add datafile....database에 datafile 추가 할수 있나요? 제가 잘못친 것 같아서요

  alter database datafile....add  를 삭제하는 것이 맞는지요?

-------------------------------------------------------------------------------------------------------------

2번처럼 add datafile 해서 추가된 디스크에 경로를 할당하는 것을 강추하셨는데요 

그럼 사용자별 3번처럼 alter 디폴트 테이블스페이스를 일일히 해줄 필요가 없다는 건가요?

2번 구문만 사용하면 된다는 것이죠?

그리고 추가된 디스크에 경로 폴더를 미리 만들어 놓고(mkdir 디렉토리 이용) 할당된 경로를 지정하면 되겠네요

 

참고로 create 테이블스페이스와 alter database add datafile..의 차이를 알고 싶은데 가능하신지요?

그리고 SIZE 10G AUTOEXTEND ON NEXT 500M MAXSIZE 20G; 에서 "next 다음에 올 크기"를 계산하기위해서

해당 db전체 테이블스페이스 용량을 하루단위로 체크해서 평균으로 잡아도 되는지요?

 

 


by 열심열심 [2018.08.22 15:34:55]

제가 추천하는건 테이블 스페이스 전체를 옮기는 방법이에요. 

테이블스페이스와 dbf파일은 1:N관계라서 1개있을수도있고 2개 이상 있을수도있어요. 

그런데 디스크용량 부족할 정도라면 그 테이블 스페이스 내에 dbf가 여러개 있을 가능성도 많구요. 

create는 테이블 스페이스를 새로 만드는 작업이라 완전 별개입니다. 테이블도 다시 할당해줘야하고.  

alter database add datafile 은 테이블 스페이스에 데이터파일 추가 하는겁니다.

쉽게 설명 하면 CREATE는 10리터 봉투를 2개 만드는것이고 ALTER는 봉투 10리터를 20리터 크기를 늘리는 거죠 

테이블스페이스 - 데이터파일1,데이터파일2(데이터파일 64비트일 시 하나당 최대 32G) 이런식 

NEXT는 10기가 다쓰게되면 추가로 늘어날 용량으로 관리자가 정하는데 대게 1달에서~반년 정도 보거나

실제 디스크에 할당되는 시간도 봐야하니 한달치가 100G라면 100G 생성시간이 기니까 그만큼 느려질 수 있어

1기가정도씩 잡겠죠. 위 말씀처럼 그런경우 새벽에 수동으로 늘리기도하구요

 


by 라뮤 [2018.08.22 17:22:29]

답변 정말 고맙습니다.

alter database add datafile......이 쿼리를 날려보니 안되네요.

찾아보니

alter tablespace '추가용량필요한사용자계정명' add datafile....으로 해야 새로 추가되는 것 같습니다. 여기 추가용량필요한 사용자 계정을 알아야하겠네요?

지금 이곳 상황설명을 간략히 하면

db내에 28개 사용자 계정이 있습니다. 각각 테이블스페이스를 생성된 상태입니다.

일일 발생하는 데이터량도 적지 않더라구요

그래서 기존 디스크 용량이 가득차고 있어 신규 디스크를 증설해서 사용하려고 합니다.

add tablespace 사용자계정 add datafile....이라고 하면 특정 사용자가 아닌 다수의 사용자가 테이블스페이스를 바라보고 있는데 위와 같은 특정사용자에 add 해도 되는 것인가요? 아니면 사용자들 또한 다른 1개 또는 그 이상의 default 테이블스페이스를 바라보고 있는 테이블스페이스에 add를 하는 것인가요? 그럼 테이블스페이스 그룹을 어떻게 확인하는것인지 궁금합니다. 자꾸 문의사항이 생겨서 죄송합니다. ^^ 제가 아직 분산구조라든가 테이블스페이스에 대한 개념이 안서서 그런 것 같습니다.


by 열심열심 [2018.08.23 08:13:49]

네 테이블스페이스에 데이터파일 추가 하는게 맞구요. 

특정 사용자를 추가 하는게 아니라 데이터파일 add 하시면 처음 만들었던 그대로 다 상속 받기 때문에 

따로 설정 안해주셔도 되요. 테이블스페이스 그룹이라면? select * from dba_tablespaces 말씀하시는건가요?

거기 각 유저당 할당된 테이블 스페이스 나옵니다. 테이블은 dba_tables로 보시면 되구요

 


by 라뮤 [2018.08.23 14:47:34]

감사합니다. 

바보같은 몇개 더 하겠습니다.

디스크 증설 후 데이터파일을 1개 추가하면 

예) 기존디스크에 'aaa/test01.dbf' 데이터 화일이 존재하고 

이것이 사용량이 80%남았다고 가정하구요

신규 디스크에 alter tablespace test add datafile 'newaaa/test02,dbf'을 데이터파일을 추가했을 때 물론 테이블스페이스명('test' 일 경우)은 동일합니다.

데이터가 test01.dbf에 더이상 쌓이지 않고 test02.dbf 에 쌓이는 것긴가요? 기존 test01.dbf를 100% 다 채운 다음에 test02.dbf에 데이터가 적재되는 것인가요? 

그리고

system 테이블스페이스가 할당 용량을 거의 다 차게 되면 이또한 데이터파일을 추가해도 되겠네요?

또 그리고

각각 테이블스페이스별로 용량을 체크해서 각각의 size를 설정해야되겠네요?

 


by 열심열심 [2018.08.23 16:13:56]

80% 0%라면 보통 2번째 dbf부터 쌓입니다. 균등해질때까진요 

데이터 파일 추가 해도 되고 리사이즈 통해서 용량을 늘려도 됩니다.

한데이터파일 최대용량은 32기가 입니다. 

 


by 라뮤 [2018.08.24 09:15:41]

좋은 답변 감사합니다. 많은 도움되었습니다. ^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입