* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Window10 64bit, Linux CentOS 7 |
|
CUBRID 10.1 (10.1.2.7694-64632b2) |
|
CUBRID Manager 10.2.0.0001 (64bit) |
|
java, spring |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요.
테이블만 복사하는 방법 알려주셔서 정말 감사합니다.
수행 절차를 생각해보면 당연히 알았어야 하는것 같은데 알려주셔서 감사해요. ㅠ
'unloaddb / loaddb 실행할 때 clob파일을 유지할 수 있는 방법 있을까요?'가 질문입니다.
1. https://www.cubrid.com/tutorial/3794147 이 설명과
2. https://www.cubrid.com/blog/3825207 이 설명을 보고
unloaddb / loaddb를 했습니다.
그런데 '2'의 과정 즉 CLOB 파일의 주소를 가진 데이터를 업데이트하는 것에서 두 가지 어려운점이 있었습니다.
1. CLOB주소 업데이트 수행을 테이블별로 해야 한다는 것
2. CLOB주소 업데이트 수행시 기존 CLOB파일이 복사가 아니라 이동된다는 것
이었습니다.
업데이트를 약 50번 정도 해야 하는데, 사용자가 계속 있습니다.
제 생각에는 기존 CLOB을 복사해두고, 업데이트 수행하고, 기존 CLOB를 복원해야할 것 같은데
혹시 더 나은 방법이 있는지 궁금합니다.
'업데이트 수행'과 '기존 CLOB 복원' 사이에서 운영중인 기존 DB조회 에러가 발생하잖아요.
이 위험을 어떻게 없앨 수 있을지, 50번 정도의 업데이트는 자동 스크립트 같은 것을 직접 만들어서 수행해야하는 것인지 알고 싶습니다.
질문이 장황한데 읽어주셔서 감사합니다. 답변 꼭 좀 부탁드릴게요. 공부 열심히 하겠습니다.
1. unload 수행
2.unloaddb의 object file에서 LOB 경로 변경 (Linux sed 유틸리티 이용)
3.기존의 lob directory를 Linux 명령으로 복사
4. loadbdb 실행
5. 새로운 db의 LOB data 변경 ($CUBRID_DATABASES/databases.txt)
예를 들어 demodb를 testdb로 복사하고
before LOB: /home/kshan/db/CUBRID/demo/lob
after LOB: /home/kshan/lob1
이라고 가정하면 Linux 기준의 명령어
$ csql -u dba -c "create table test1(col1 int, col2 clob)" demodb
$ csql -u dba -c "insert into test1 values (1, '111'), (2, '222')" demodb
$ csql -u dba -c "select col1, clob_to_char(col2) from test1" demodb
$ cp -r /home/kshan/db/CUBRID/demo/lob /home/kshan/lob1
$ cubrid unloaddb -u dba demodb
$ sed -i "s/\/home\/kshan\/db\/CUBRID\/demo\/lob\/ces/\/home\/kshan\/lob1\/ces/" demodb_objects
$ cubrid createdb testdb en_US
$ cubrid loaddb -v -u dba -s demodb_schema -d demodb_objects testdb
$ vi $CUBRID/.../databases.txt -- LOB directory 수정
$ cubrid server start testdb
$ csql -u dba -c "select col1, col2 from test1" testdb
$ csql -u dba -c "select col1, clob_to_char(col2) from test1" testdb
한번 try 해보세요.