Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Section
Column

 

Column

1. 데이터 파일 현재 경로 확인
Anchor
1.PathCheck
1.PathCheck


디스크 테이블스페이스와 메모리 테이블스페이스에 따라 확인 방법이 다르므로 각각 확인해야 합니다.

아래 쿼리를 이용하여 확인 후 출력 결과를 메모해둡니다

  • 디스크 테이블스페이스의 데이터 파일 경로

    Code Block
    titleAltibase 서버 모든 버전
    languagesql
    -- 디스크 테이블스페이스 이름과 데이터 파일 경로와 이름을 출력합니다.
    set linesize 1024
    set colsize 100
    SELECT T.NAME TBS_NAME, D.NAME DATAFILE
      FROM V$DATAFILES D, V$TABLESPACES T
     WHERE D.SPACEID = T.ID
     ORDER BY D.SPACEID, D.ID ;
  • 메모리 테이블스페이스의 체크포인트 이미지 파일 경로

    Code Block
    titleAltibase 5 이상 버전에서 확인 방법
    languagesql
    -- 메모리 테이블스페이스의 경우 테이블스페이스 이름과 경로만 확인할 수 있습니다. 
    set linesize 1024
    set colsize 100
    SELECT TBS.NAME TBS_NAME,
           MEM_PATH.CHECKPOINT_PATH DATAFILE
      FROM V$TABLESPACES TBS,
           V$MEM_TABLESPACE_CHECKPOINT_PATHS MEM_PATH
     WHERE MEM_PATH.SPACE_ID = TBS.ID
     ORDER BY TBS_NAME, DATAFILE;
    Code Block
    titleAltibase 4 버전에서 확인 방법
    languagesql
    $ grep MEM_DB_DIR $ALTIBASE_HOME/conf/altibase.properties | sort -u

2. Altibase 서버 중지


  • 데이터 파일들을 물리적으로 이동해야 하므로 Altibase 서버를 중지해야합니다.

    Code Block
    languagebash
      # Altibase 서버 중지 명령어
    $ server stop 
    
      # Altibase 서버 프로세스 확인 방법
    $ ps -ef | grep 'altibase -p' | grep -v grep

3. 데이터 파일 기본 경로 변경


  • 데이터 파일 기본 경로는 테이블스페이스를 생성하거나 데이터 파일 추가할 때 경로를 지정하지 않고 데이터 파일 이름만 지정한 경우 데이터 파일이 위치할 경로를 의미합니다.
  • 데이터 파일 경로 변경 작업 시 기본 경로도 변경해야 할 경우 수행합니다.
  • altibase.properties 파일에서 설정하며 MEM_DB_DIR, DEFAULT_DISK_DB_DIR 프로퍼티를 찾아 기본 경로를 변경합니다.

    Code Block
    languagebash
      # 디스크, 메모리 테이블스페이스에 따라 프로퍼티 이름이 다릅니다.
      # altibase.properties 파일에서 MEM_DB_DIR, DEFAULT_DISK_DB_DIR 프로퍼티를 찾아 기본 경로를 변경합니다. 
    $ egrep 'MEM_DB_DIR|DEFAULT_DISK_DB_DIR' $ALTIBASE_HOME/conf/altibase.properties
    MEM_DB_DIR          = ?/dbs # Memory DB Directory
    DEFAULT_DISK_DB_DIR = ?/dbs # Disk   DB Directory

4. 물리적인 데이터 파일 경로 복사


  • "1. 데이터 파일 현재 경로 확인" 에서 확인한 경로에 위치한 모든 데이터 파일과 메모리 체크포인트 이미지 파일들을 변경하려는 경로로 복사합니다.

    Code Block
    titlecp 수행 예
    languagebash
       # 시스템 디스크 테이블스페이스의 데이터 파일은 *.dbf 형식으로 생성되고 
       # 사용자 디스크 테이블스페이스의 데이터 파일은 테이블스페이스 생성 시 사용자 지정대로 생성됩니다. 
    $ cp -p /home/altibase_home/dbs_old_path/*.dbf /home/altibase_home/dbs_new_path/*.dbf
    
       # 메모리 체크포인트 이미지 파일 이름 형식은 메모리테이블스페이스이름_#_# 입니다. 
    $ cp -p /home/altibase_home/dbs_old_path/SYS_MEM* /home/altibase_home/dbs_new_path/SYS_MEM*
  • 파일 수 및 파일 크기를 비교하여 정상적으로 복사되었는지 확인합니다.

    Code Block
    languagebash
       # 파일 수 비교
    $ ls -l /old_path/* | wc -l
    $ ls -l /new_path/* | wc -l 
    
       # 파일 크기 비교
    $ du -sk /old_path/*
    $ du -sk /new_path/*
  • 원본 경로를 다른 이름으로 변경합니다.

    Altibase 서버 구동 시 원본 파일을 읽을 가능성을 피하고 원본 파일 백업을 위해 원본 경로를 다른 이름으로 변경합니다.

    Code Block
    languagebash
    $ mv /old_path /old_path_backup

5. 컨트롤 단계로 Altibase 서버 구동


  • sysdba 권한으로 iSQL 접속 후

    Code Block
    languagesql
    $is -silent -sysdba
    [ERR-910FB : Connected to idle instance]
    iSQL(sysdba)> STARTUP CONTROL
  • 컨트롤 단계로 구동합니다.

    Code Block
    languagesql
    iSQL(sysdba)> STARTUP CONTROL
    Connecting to the DB server.... Connected.
    TRANSITION TO PHASE : PROCESS
    TRANSITION TO PHASE : CONTROL
    Command executed successfully.
    iSQL(sysdba)> 

6. 데이터 파일 경로 변경 DDL 수행


디스크 데이터 파일 및 메모리 체크포인트 이미지 파일 경로 정보는 로그앵커 파일에 저장됩니다. 로그앵커가 알고 있는 정보를 변경하기 위해 DDL 문을 수행합니다.

  • 디스크 데이터 파일 경로 변경 방법

    "1. 데이터 파일 현재 경로 확인" 에서 확인한 모든 데이터 파일 수만큼 ALTER DATABASE 문을 반복 수행합니다. 파일 이름은 동일하게 경로만 변경하여 입력해야 합니다. 

    Code Block
    languagesql
    iSQL(sysdba)> ALTER DATABASE RENAME DATAFILE
    '/old_path/system001.dbf'  TO '/new_path/system001.dbf';
    Alter success.
  • 디스크 데이터 파일 변경 경로 확인

    경로가 올바르게 변경되었는지 확인합니다.

    Code Block
    languagesql
    # 디스크 테이블스페이스 이름과 데이터 파일 경로와 이름을 출력합니다.
    set linesize 1024
    set colsize 100
    SELECT T.NAME TBS_NAME, D.NAME DATAFILE
      FROM V$DATAFILES D, V$TABLESPACES T
     WHERE D.SPACEID = T.ID
     ORDER BY D.SPACEID, D.ID ;
  • 메모리 체크포인트 이미지 파일 경로 변경 

    "1. 데이터 파일 현재 경로 확인" 에서 확인한 메모리 테이블스페이스 수 만큼 ALTER TABLESPACE 문을 반복 수행합니다. 이 때 파일명을 지정하지 않고 이전 경로와 새로운 경로만 사용합니다.

    Code Block
    titleAltibase 5 버전 이상
    languagesql
    iSQL(sysdba)> ALTER TABLESPACE memory_tablespace_name RENAME CHECKPOINT PATH 
    '/old_path' TO '/new_path';
    
    
    수행 예)
    iSQL(sysdba)> ALTER TABLESPACE SYS_TBS_MEM_DIC RENAME CHECKPOINT PATH 
    '/home/altibase_home/dbs_old_path' TO '/home1/altibase_home/dbs_new_path';
    Alter success.
    iSQL(sysdba)> ALTER TABLESPACE USER_MEM_TBS RENAME CHECKPOINT PATH 
    '/home/altibase_home/dbs_old_path' TO '/home1/altibase_home/dbs_new_path';
    Alter success.
    Code Block
    titleAltibase 4 버전
    languagebash
    # Altibase 4 버전의 경우 DDL 작업이 필요하지 않습니다. 
    # altibase.properties 파일에서 MEM_DB_DIR 프로퍼티 값을 변경 후 저장합니다. 
    
    $ cd $ALTIBASE_HOME/conf/
    $ vi altibase.properties 
  • 메모리 체크포인트 이미지 파일 변경 경로 확인 방법

    Code Block
    titleAltibase 5 이상 버전에서 확인 방법
    languagesql
    -- 메모리 테이블스페이스의 경우 테이블스페이스 이름과 경로만 확인할 수 있습니다. 
    set linesize 1024
    set colsize 100
    SELECT TBS.NAME TBS_NAME,
           MEM_PATH.CHECKPOINT_PATH DATAFILE
      FROM V$TABLESPACES TBS,
           V$MEM_TABLESPACE_CHECKPOINT_PATHS MEM_PATH
     WHERE MEM_PATH.SPACE_ID = TBS.ID
     ORDER BY TBS_NAME, DATAFILE;

7. 서비스 단계로 Altibase 서버 구동


sysdba 권한으로 iSQL에 접속한 상태에서 수행합니다.

Code Block
languagesql
iSQL(sysdba)> startup
The database server is already up and running.
TRANSITION TO PHASE : META
...중략...
--- STARTUP Process SUCCESS ---
Command executed successfully.
iSQL(sysdba)> 

...

Section
Column

 

Column

The data file does not exist


  • 원인
    물리적인 데이터 파일 이동 없이 변경 구문을 수행한 경우 발생할 수 있습니다.
  • 조치
    데이터파일을 변경하려는 위치에 데이타 파일을 먼저  이동시킨 후  DB에서의  데이터파일 위치를 변경하는 rename 구문을  실행합니다.

The data file 'XXXXXX' has an invalid header


  • 원인
    물리적으로 데이터 파일 복사 단계에서 정상 수행되지 않은 경우 발생할 수 있습니다. 서비스 단계로 데이터베이스 구동 시 구동이 실패합니다.

  • 조치
    물리적인 데이터 파일의 작업을 다시 수행합니다.

Unable to invoke the create() function on [XXXXXX/dwfile0.dwf]


  • 원인
    double write 파일이 존재하지 않은 경우 발생할 수 있습니다. double write 파일은 데이터베이스 비정상 종료 시 Restart Recovery할 때에 필요한 파일로 기본 경로는 $ALTIBASE_HOME/dbs 입니다. $ALTIBASE_HOME/dbs 경로의 모든 파일을 이동했을 경우 에러가 발생할 수 있습니다.
    Altibase 서버 버전에 따라 에러 메시지에 차이가 있을 수 있습니다.
  • 조치
    dwfile0.dwf, dwfile1.dwf 파일을 touch 명령어로 임의 생성 후 구동이 가능합니다. 
    또는  $ALTIBASE_HOME/conf/altibase.properties 에 USE_DW_BUFFER = 0 으로 변경하고 (없으면 추가합니다.) Altibase 서버를 구동합니다. Altibase 서버가 구동되면 USE_DW_BUFFER = 1 로 변경하거나 USE_DW_BUFFER 설정을 altibase.properties 에서 삭제합니다.
    double write 파일의 기본 경로를 변경 후 Altibase 서버를 구동해도 됩니다.

    Code Block
    languagesqlbash
       # DOUBLE_WRITE_DIRECTORY 프로퍼티 값을 변경. 
    $ vi $ALTIBASE_HOME/conf/altibase.properties
    DOUBLE_WRITE_DIRECTORY       = ?/dbs
    DOUBLE_WRITE_DIRECTORY       = ?/dbs

CANNOT IDENTIFY DATAFILE


  • 원인

    서비스 단계로 Altibase 서버를 구동할 때 메타 테이블에서 저장된 데이타 파일 경로에서 물리적인 데이터 파일을 찾을 수 발생합니다. 컨트롤 단계에서 올바르지 않은 데이터 파일 경로를 입력한 경우 발생할 수 있습니다.

    Code Block
    languagesqlbash
    iSQL(sysdba)> startup
    The database server is already up and running.
    TRANSITION TO PHASE : META
      [SM-WARNING] CANNOT IDENTIFY DATAFILE
                                    [TBS:USER_DATA, PPID-0-FID-0] Datafile Not Found
      [SM-WARNING] CANNOT IDENTIFY DATAFILE
                                    [TBS:USER_DATA, PPID-1-FID-0] Datafile Not Found
    [FAILURE] The data file does not exist.
    Startup Failed....
    [ERR-91015 : Communication failure.]
    $
  • 조치

    컨트롤 단계에서 올바른 경로를 지정하여 DDL 문을 수행합니다.

...