* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window10 64bit | ||
CUBRID 10.1 (10.1.2.7694-64632b2) (64bit release build for Windows) (Aug 10 2018 15:47:52) | ||
CUBRID Manager 10.1.0.0004 (64bit) | ||
- |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
근본적인 질문: 리눅스에 CUBRID에 있는 데이터를 WIndows로 옮기는 방법이 어떤 것이 있나요?
1. CUBRID 매니저를 통해 리눅스에 설치된 CUBRID를 백업 했는데. 해당 백업 파일을 가져와 DB를 새롭게 만들 수 없나요?
2. 1번이 안되어 데이터 내보내기를 이용 했습니다.
- SQL, CUBRID LoadDB 둘다 해보니 내보내기는 잘 되었습니다.
3. 2번 작업을 통해 만들어진 파일을 이용해 윈도우에서 가져오기를 해 보았습니다.
- SQL로 내보내기 한 데이터를 가져오기 해보았습니다.
문제는 CLOB 데이터가 있는 테이블에서 한 없이 "진행중"이라고만 나오고 진행이 되지 않습니다.
이 부분을 해결 할 수 있는 방법이 있나요?
- 그래서 이번엔 CUBRID LoadDB를 이용해서 내보내기 한 파일을 이용해 가져오기를 시도해 보았습니다.
CUBRID Manager에서는 LoadDB 파일을 임포트 하는 기능이 없는 거죠? 찾아보니 안나오네요.
그래서 콘솔 명령을 이용했습니다.
cubrid loaddb -u [계정] -p [비번] -s [DB명]_schema -i [DB명]_indexes -d [DB명]_objects -v [DB명]
이렇게 입력하니 까만색 콘솔창이 순간적으로 나왔다가 살아집니다.
그리고 [DB명]loaddb.log 파일이 생겼습니다. 파일 내용을 보니
이상입니다.Unable to restart/initialize the database server. Unable to mount disk volume "C:\CUBRID\databases\[DB명]\[DB명]_lgat". The database "C:\CUBRID\DATABA~1\CORPUS~1\[DB명]", to which the disk volume belongs, is in use by user - on process 0 of host - since -.... Permission denied이렇게 되어 있습니다.
이 문제에 대한 해결 책이 있을까요?
1. CUBRID 매니저를 통해 리눅스에 설치된 CUBRID를 백업 했는데. 해당 백업 파일을 가져와 DB를 새롭게 만들 수 없나요?
- CUBRID Linux 버전과 Windows 버전은 볼륨 호환이 되지 않습니다.
- 백업(backupdb), 복구(restoredb)를 통한 데이터 이관은 불가능
- 내보내기(unloaddb), 가져오기(loaddb)를 통한 데이터 이관을 하셔야 합니다.
2. 1번이 안되어 데이터 내보내기를 이용 했습니다.
- 내보내기 방법 중 SQL 및 unloaddb 모두 가능합니다.
- Windows 데이터 이관이 되어야할 CUBRID DB생성 후 해당 SQL 또는 unloadddb된 파일을 가져오기로 사용하시면 됩니다.
3. 2번 작업을 통해 만들어진 파일을 이용해 윈도우에서 가져오기를 해 보았습니다.
질문 : SQL로 내보내기 한 데이터를 가져오기 해보았습니다. 문제는 CLOB 데이터가 있는 테이블에서 한 없이 "진행중"이라고만 나오고 진행이 되지 않습니다.
이 부분을 해결 할 수 있는 방법이 있나요?
답 : CLOB 데이터는 별도의 파일로 보관되어 있습니다. ($CUBRID/databases/databases.txt의 lob-path 참고)
데이터 베이스 내에는 CLOB의 경로를 기록하는 메타정보만 기록 됩니다.
이런 경우는 CLOB을 VARCHAR형태로 변경 하신 후 데이터 이관을 하셔야 합니다.
(링크 참고 : https://www.cubrid.org/manual/ko/9.3.0/sql/datatype.html#clob)
질문 : 그래서 이번엔 CUBRID LoadDB를 이용해서 내보내기 한 파일을 이용해 가져오기를 시도해 보았습니다.
CUBRID Manager에서는 LoadDB 파일을 임포트 하는 기능이 없는 거죠? 찾아보니 안나오네요.
답 : 가져오기(loaddb)를 활용하실 경우 CUBRID DB가 내려간 상태여야 합니다.
이럴 경우 Widnwos CMD(관리자권한)으로 CUBRID DB가 내려간 상태에서 명령어로 진행하셔야 합니다.
(링크 참고 : https://www.cubrid.org/manual/ko/9.3.0/admin/admin_utils.html#load)
그 외 , CUBRID Migration Tool(CMT)를 활용하셔서 진행하실 수 있습니다.
(링크 참고 : http://ftp.cubrid.org/CUBRID_Tools/CUBRID_Migration_Toolkit/)