728x90

활발이님 | 기타 | 2013-11-28 17:54:27


안녕하세요 automatic storage의 컨테이너에 관해서 질문드립니다.

- db2 restore db testdb2 taken at 20131126162315 redirect
  db가 없는 서버에 백업이미지의 db name과 동일하게 복원합니다.


 Tablespace ID                        = 0
 Name                                 = SYSCATSPACE
 Type                                 = Database managed space
 Contents                             = All permanent data. Regular table space.
 State                                = 0x2000100
   Detailed explanation:
     Restore pending
     Storage may be defined

 Tablespace ID                        = 1
 Name                                 = TEMPSPACE1
 Type                                 = System managed space
 Contents                             = System Temporary data
 State                                = 0x2000100
   Detailed explanation:
     Restore pending
     Storage may be defined

 Tablespace ID                        = 2
 Name                                 = USERSPACE1
 Type                                 = Database managed space
 Contents                             = All permanent data. Large table space.
 State                                = 0x2000100
   Detailed explanation:
     Restore pending
     Storage may be defined

 Tablespace ID                        = 3
 Name                                 = TESTTBS
 Type                                 = Database managed space
 Contents                             = All permanent data. Large table space.
 State                                = 0x2001100
   Detailed explanation:
     Restore pending
     Storage must be defined
     Storage may be defined

 Tablespace ID                        = 4
 Name                                 = SYSTOOLSPACE
 Type                                 = Database managed space
 Contents                             = All permanent data. Large table space.
 State                                = 0x2000100
   Detailed explanation:
     Restore pending
     Storage may be defined

 Tablespace ID                        = 5
 Name                                 = SYSTOOLSTMPSPACE
 Type                                 = System managed space
 Contents                             = User Temporary data
 State                                = 0x2000100
   Detailed explanation:
     Restore pending
     Storage may be defined


위와 같이 tablespace들은 restore pending 상태구요

제가 알기론 tablespace가 automatic storage일 경우 redirect 가 안되는 걸로 알고있습니다.
tablespace의 목록을 보시면 
3번의 경우같이 dms type 의 경우 아래 명령어로 경로를 재지정 해주는데
db2 "set tablespace containers for 3 using (file '/data/testtbs.dat' 1048576)"

1.
0, 1, 2, 4, 5, 번의 tbs는 automatic storege의 상황인데(db2가 만든 tablespace)
이런 경우 backup 이미지에 있는 automatic storage 의 path는 /home/db2inst1/db2inst1/NODE0000/TESTDB2인데
restore 할떄 to 옵션으로 db의 생성 경로는 바꿔주는데
이경우 container들의 경로는 바꾸지 못하는건가요?
2. 
"set tablespace containers for 3 using (file '/data/testtbs.dat' 1048576)" 으로 file로 사이즈까지 다시 지정해주면 되는데
"set tablespace containers for 3 using (path '/data')" 이렇게 백업이미지에 있는 tbs사이즈 그대로에서 path만 바뀌줄라면 자꾸 
SQL0298N  Bad container path.  SQLSTATE=428B2 가 뜨네요.,... /data/ 의 권한은 만족하는 상태구요..
path의 지정 방식이 따로 있는건지요
그리고 file 로 사용할때 뒤에 사이즈가 1048576 이면 1M로 만들겠다는 뜻이 아닌지.. db2top으로 볼시 사이즈가 다르네요

3.
마지막으로 automatic storage이 경로를 지정해주지 않아도 되며 dms와 sms의 혼재된 방식으로 
filesystem의 사용공간 안에서 tablespace를 automatic으로 사용하는 것 같은데
dms type에 autoresize 옵션을 사용해 tablespace의 공간을 automatic으로 사용하는것 과의 차이점은 무엇인지...




pajama 2013-11-30 01:11:11
1. restore할때 automatic storage를 사용할때 경로를 바꾸려면, restore 명령에서 경로를 지정하고 set tablespace 명령에서 using automatic storage 옵션을 사용합니다.

automatic stoage로 정의된 테이블스페이스 컨테이너에 대해 특정 경로를 지정하면 아래와 같이 오류가 발생합니다.
SQL20319N The SET TABLESPACE CONTAINERS command is not allowed on an
automatic storage table space. SQLSTATE=55061


2. 컨테이너 파일 위치를 변경할때는 (file '경로' 페이지수) 와 같이 씁니다.
restore 명령으로 file에서 path로 변경할 수 없습니다. 

1048576은 페이지수로 테이블 스페이스 페이지 사이즈에 의해 컨테이너 크기가 결정됩니다.
예를 들어 테이블스페이스 페이지사이즈가 4K라면 1048576*4096=4294967296 입니다.

페이지사이즈가 4K인 경우에는 db2top에서는 4G로 표시가 됩니다.


3. automatic storage는 스토리지 공간으로 사용할 파일시스템을 단일, 또는 그룹으로 사용하도록 정의할 수 있습니다. 
sms,dms과 같은 관리방식을 명시적으로 지정하지 않을 때, automatic storage용으로 정의한 스토리지 공간에 컨테이너가 단일, 또는 여러개로 분산되어 저장됩니다.

활발이 2013-12-02 09:42:37
답변 감사합니다.
1. 그럼 automatic storage는 경로를 재지정하지못하고 생성된 그 path 그대로 사용해야된다는 말씀이신가요

2. create user temporary tablespace <테이블스페이스명> managed by database using (file ‘<파일명>’ <크기>)이렇게 tbs를 생성하여 쓸때 file 에서 -> path로 변경할수 없다고 하시는것 같은데 
그럼 path 의 경우는 tbs를 (device ‘<디바이스파일명>' <크기>)로 생성하는 경우 인가요?

3. automaric storage의 컨테이너가 단일 또는 여러개로 분산되어 정해진 공간 영역의 size만큼 automatic으로 사용하는 것이고
단일 또는 여러개로 분산되어 저장 된다고 하셨는데
dms의 create tablespace <테이블스페이스명> managed by database using (file ‘<파일명1>’ <크기>, file ‘<파일명2>’ <크기>)
생성을 하면 단일 또는 분산되어 저장되는 것 역시 같은 것 같고, autoresize의 옵션을 주면 
정해진 size공간에서의 tbs의 공간을 autoresizing 하여 사용 하는 것 역시 같은 것 같은데 여기서의 차이점이 해결이 되지 않네요..

pajama 2013-12-02 11:03:15
1. automatic storage 경로를 재지정하시려면 아래와 같은 방식으로 수행합니다.
① automatic storage로 쓸 파일시스템 정의
restore db testdb on /testdb/storage1,/testdb/storage2,/testdb/storage3/ redirect

② 컨테이너를 automatic storage 공간 사용하도록 지정
set tablespace containers for 0 using automatic storage
...

③ restore 계속
restore db testdb continue


2. path는 SMS 방식이고 경로만 지정합니다. (path '/경로') device는 raw device 방식의 DMS 테이블스페이스입니다.
정리하면 file -> device, device -> file은 가능합니다 file, device -> path로는 불가능합니다. (DMS는 DMS로만, SMS는 SMS로만)



3. 말씀하신대로입니다. 관리자가 직접 테이블스페이스를 관리하느냐 DB에 맡기느냐 차이일텐데요.
컨테이너 추가삭제등의 작업을 체계적으로 한다면(예를 들면, 컨테이너 이름 정의등) sms,dms 방식으로 할수도 있겠지요.

활발이 2013-12-02 13:05:40
모르고 아리송 했던 것들이 잘 정리 되었습니다. 감사합니다.



728x90

+ Recent posts