오라클 테이블스페이스 이동에 대하여 0 4 953

by 열심열심 [설치/설정] #테이블스페이스 변경 #임시 테이블스페이스 #오라클 [2017.08.08 09:41:43]


안녕하세요. 

용량 부족으로 테이블 스페이스를 이동하려고 합니다. 

이동하는 법은 자료가 많아서 테스트 환경에서 테스트는 마쳤는데

몇가지 의문이 있어서 질문 드립니다. 

제 테스트 서버에서는 dba_data_files 조회시 임시 데이터 파일이 조회가 되는데 

다른서버에서는 dba_temp_files를 해야만 조회가 됩니다. 

또 테이브 스페이스 이동 시에 인덱스 관련 테이블 스페이스와 임시 테이블스페이스도 일반 테이블스페이스 옮기는 것처럼

offline이후 mv이후 alter만 하면 되는 것인가요?

*임시 테이블 스페이스는 offline하고 옮기면 안되나요?구글링해도 삭제 하고 새로 만들라는것만 있네요. 

만약 삭제하고 새로 만들면 기존에 유저 등록되어있는걸 다시 변경해야되는거겠죠?

임시테이블스페이스 이동 안해도 상관없다면 이동 안할 계획입니다.  

고수님들 가르침 부탁드립니다. 

 

by 미생 [2017.08.08 15:58:05]

일반 테이블 스페이스와 temp 테이블 스페이스는 종류가 다르고 생성 구문도 다릅니다.

제가 예상하기로 a라는 테이블 스페이스와 a_temp 라는 임시테이블 스페이스가 원본에 있엇는데

질문자 께서는 a_temp 테이블 스페이스를 임시테이블 스페이스로 생성하지 않고 일반 테이블 스페이스로 생성하신 것 같습니다.

원래 템프파일은 dba_data_files 뷰에 보이지 않는게 정상입니다.

그리고 임시테이블 스페이스는 말그대로 정렬이라던가 작업필요에 인해 있는 테이블 스페이스라 그냥 이름이랑 사이즈만 맞추고 안에 데이터는 옮길 필요 없습니다.

 

 


by 열심열심 [2017.08.08 16:25:38]

제가 찾은 바 로는 사용자가 테이블스페이스를 만들 때 따로 임시 테이블스페이스 명시하지 않으면

디폴트 임시테이블스페이스랑 매칭되고 

명시하면 명시한 다른 임시테이블 스페이스 쓰는것으로 알고 있습니다. 

그런데 임시테이블 변경 검색을하면 일반테이블 스페이스 변경처럼 offline하고 mv하고 rename to하고 online이 아니라

새로 생성하고 기존껀 드랍하라는 답변이 많아서요. 

그렇게된다면 디폴트임시테이블스페이스가 아니기때문에 일일이 사용자 찾아서 임시테이블 스페이스 변경해줘야 할텐데 이력에 대해 전혀 받은게 없거든요. 

그리고 다른 방법에선 임시테이블스페이스 변경시에는 db다운하고 해야된다고 하는데

제가 테스트환경으로 테스트할 땐 디비 안내리고도 변경은 되더라구요 실제 반영된건지는 모르겠지만.

오늘 여러 글 읽어본 바로는 임시테이블스페이스는 굳이 옮기지 않아도 된다는 결론이 나왔는데

맞는지 모르겠네요

 


by 임상준 [2017.08.08 17:18:39]

제가 찾은 바 로는 사용자가 테이블스페이스를 만들 때 따로 임시 테이블스페이스 명시하지 않으면

디폴트 임시테이블스페이스랑 매칭되고 

명시하면 명시한 다른 임시테이블 스페이스 쓰는것으로 알고 있습니다. 

--> 1) 디폴트 임시테이블스페이스는 사용자(USER) 생성 변경 시 할당하는 속성이고 테이블스페이스 자체로는 디폴트다 아니다가 딱히 의미가 없습니다.

그런데 임시테이블 변경 검색을하면 일반테이블 스페이스 변경처럼 offline하고 mv하고 rename to하고 online이 아니라

새로 생성하고 기존껀 드랍하라는 답변이 많아서요. 

그렇게된다면 디폴트임시테이블스페이스가 아니기때문에 일일이 사용자 찾아서 임시테이블 스페이스 변경해줘야 할텐데 이력에 대해 전혀 받은게 없거든요. 

-->2)  특정 임시 테이블스페이스를 디폴트로 쓰는 사용자를 조회하려면 dba_users 를 조회하면 되지만, 온라인 운영 중인 DB 가 아니라면 유저에 대한 속성 변경은 필요 없고 같은 이름으로 다시 만들기만 하면 됩니다.

그리고 다른 방법에선 임시테이블스페이스 변경시에는 db다운하고 해야된다고 하는데

제가 테스트환경으로 테스트할 땐 디비 안내리고도 변경은 되더라구요 실제 반영된건지는 모르겠지만.

오늘 여러 글 읽어본 바로는 임시테이블스페이스는 굳이 옮기지 않아도 된다는 결론이 나왔는데

맞는지 모르겠네요

--> 3) 옮기거나 재 생성하거나의 문제 이전에, 운영 중에 drop 후 create 한다면 그 사이 기간에 drop 한 temp tablespace 에 정렬이나 조인 들의 목적으로 사용 중인, 혹은 사용을 시도 하는 세션들은 에러가 발생하겠죠.

db 세션이 사용 중이 아닌 템프 테이블스페이스는 어차피 데이터를 저장하는 공간이 아니므로 굳이 옮길 필요 없이 삭제하고 다시 만들면 되구요.

세션이 특정 템프 테이블스페이스를 사용하지 않도록 만들어 주는게 포인트일 것 같은데, 새 temp 를 다른 이름으로 만들고 user default 속성을 새 temp 를 사용하도록 변경 해 준 다음에 세션을 모니터링해서 기존 temp 를 사용하는 세션이 아무도 없을 때 drop 하는 방법이 있을거고, 아예 깔끔하게 db downtime 을 가지고 작업 하셔도 될거고요.


by 열심열심 [2017.08.09 11:00:14]

현재 사용자별 테이블스페이스 3, 임시테이블스페이스 3, 인덱스 테이블스페이스 2 있는 상황이라서요. 

3에 보면 잠깐 에러발생하는거 말고 문제가 없다면 용량이 크지 않으므로 점심시간 10분이내 작업 완료 될 것 같은데

일반 스페이스만 옮겨도 되는거겠죠?

그리고 db다운타임은 결제 필요해서 힘들것 같아요. ㅜㅠ

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