ALTIBASE HDB 5.3.3.93 Patch Notes
Table of Contents BUG-27950 ALL PRIVILEGES 권한을가진계정이다른계정의테이블에 Foreign Key 를 생성하지못한다. 3 BUG-38105 PASSWORD_LIFE_TIME 경과후유예기간 (PASSWORD_GRACE_TIME) 내에 접속을시도할경우알림메시지를발생해야한다. 3 BUG-38278 윈도우즈 OS 에서테이블스페이스생성시드라이브이름을입력하지않으면 서버구동에실패한다. 4 BUG-38384 UTRANS_TIMEOUT 이발생하지맊세션이종료되지않는다. 6 BUG-38422 인덱스모듈에서발생할수있는서버 Hang 을탐지하지못한다. 6 BUG-38503 서버가완전매체복구 (Complete media recovery) 에실패한다. 6 BUG-38614 알티베이스 PSM 사용중, 세션의스테이트먼트 (statement) 개수가잘못 카운팅된다. 11 BUG-38719 Windriver 리눅스로구성된이중화환경에서대응하는원격서버의전원이 꺼졌을경우, 송신자 (Sender) 가이를인지하지못하여장시간대기한다. 13 2/13
BUG-27950 ALL PRIVILEGES 권한을가진계정이다른계정의테이블에 Foreign Key 를생성하지못한다. - Module: qp-ddl-dcl-pvo - Category: Functional Error - Reproducibility: Always - Reproducing Conditions: DROP TABLE t1; DROP TABLE t2; DROP USER user1; 재현 CREATE TABLE t1(i1 integer, i2 integer); CREATE TABLE t2(i1 integer primary key, i2 integer); CREATE USER user1 IDENTIFIED BY user1; GRANT ALL PRIVILEGES TO user1; 수행결과예상결과 CONNECT user1/user1; ALTER TABLE sys.t1 ADD CONSTRAINT t1_i2_fk FOREIGN KEY(i2) REFERENCES sys.t2(i1); [ERR-311B1 : The user must have REFERENCES privilege(s) to execute this statement.] Alter success. - Symptoms: ALL PRIVILEGES 권한을가진계정이다른계정의테이블에 Foreign Key 를생성하지못한다. BUG-38105 PASSWORD_LIFE_TIME 경과후유예기간 (PASSWORD_GRACE_TIME) 내에접속을시도할경우알림메시지를발생해야한다. 3/13
- Module: ux-isql - Category: Usability - Reproducibility: Always - Reproducing Conditions: 아래와같은상황에서서버접근.. 패스워드사용기간 : 맊료. 패스워드유예기간 : 유효 - Symptoms: ALTIBASE HDB 는아래값들을통해사용자패스워드의유효기간을설정할수있다. 계정의패스워드가유효한기간 ( 단위 : 일 ) 을지정한다. 마지막으로패스워드를변경한시점 PASSWORD_LIFE_TIME 을기준으로 PASSWORD_LIFE_TIME 이적용된다. 패스워드맊료일이지난후에는 SYS 사용자맊 해당계정의패스워드를변경할수있다. 계정의패스워드가맊료된이후의변경할수 있는유예기간 ( 단위 : 일 ) 을지정한다. 패스워드 유효기간이맊료되면유예기간이경과하기 PASSWORD_GRACE_TIME 전에해당계정으로로그인하여패스워드를변경해야한다. 맊약패스워드유예기간도경과하면, SYS 계정 으로로그인하여해당계정의패스워드를변경 해야한다. ** ALTIBASE HDB SQL 매뉴얼참조 설정한패스워드사용기간이지난후, 유예기간동안접속을시도할경우, 패스워드가맊료되었다는알 림메시지가지원되어야한다. - Changes: 에러메시지추가 292, HY000, uterr_abort_grace_time_warn = The password will expire within <0%d> days. 추가 # *Cause: The user's account has expired and the password needs to be changed. # *Action: Please change the user's password. BUG-38278 윈도우즈 OS 에서테이블스페이스생성시드라이브이름을 입력하지않으면서버구동에실패한다. 4/13
- Module: sm_resource - Category: Fatal - Reproducibility: Always - Reproducing Conditions: 재현수행결과예상결과 # D 드라이브에서서버접근 isql> create tablespace test datafile '/test'; isql> exit 1) D 드라이브에서테스트 ( 테이블스페이스생성드라이브 ) D: server restart => 성공 2) C 드라이브에서테스트 C: server restart => 실패 [SM-WARNING] CANNOT IDENTIFY DATAFILE [TEST-<DBF ID:0>] Datafile Not Found isql> create tablespace test datafile '/test'; [ERR-11023 : The data file path is not an absolute path.] isql> create tablespace test datafile 'D:\altibase_home\test'; Create success. - Symptoms: 여러드라이브가존재하는윈도우환경에서테이블스페이스생성시 드라이버가포함된절대경로를입력하지않으면서버구동에실패 할수있다. # 테이블스페이스생성시접근하였던드라이버 : 성공 D 드라이브에서테이블스페이스생성 D 드라이브에서서버구동 # 드라이버이동 : 실패 D 드라이브에서테이블스페이스생성 C 드라이브이동후서버구동 테이블스페이스생성시드라이버이름이포함된절대경로를입력 하지않으면오류메시지와함께테이블스페이스생성에실패하도록 수정한다. 5/13
- Workaround: 테이블스페이스생성구문에서데이터파일입력시, 드라이브이름 이포함된절대경로를입력한다. ex) create tablespace test datafile 'D:\altibase_home\test'; BUG-38384 UTRANS_TIMEOUT이발생하지맊세션이종료되지않는다. - Module: mm-multiplexing - Category: Functional Error - Reproducibility: Rare - Symptoms: 로드밸런스는알티베이스운영중에 Task 수에따라 ServiceThread 의수를동적으로늘리거나줄이고, ServiceThread 간 Task 를적절하게이동시키는역할을한다. 로드밸런스동작과정에서의오류로 Task 가옮겨지지않고해당 ServiceThread 가종료되어버리면 UTRANS_TIMEOUT 프로퍼티관련작업이비정상적으로수행될수있다. CF. UTRANS_TIMEOUT ( 매뉴얼참고 : General Reference) 변경연산 (UPDATE, INSERT, DELETE) 을수행하는트랜잭션의수행시간이길어짐에따라로그파일의개수가비정상적으로증가하는것을막기위하여이값을설정한다. 수행시간이프로퍼티파일에설정된값보다커지면세션연결을해제하고현재트랜잭션을철회 (rollback) 한다. BUG-38422 인덱스모듈에서발생할수있는서버 Hang 을탐지하지못한다. - Module: sm_index - Category: Hang - Reproducibility: Rare - Symptoms: SCN 이깨지거나리프노드간링크가깨지는등과같은비정상적인상황에서, 인덱스모듈을분석하여서버 Hang 발생여부를탐지할수있어야한다. BUG-38503 서버가완전매체복구 (Complete media recovery) 에실패한다. 6/13
- Module: sm - Category: Fatal - Reproducibility: Always - Reproducing Conditions: server start CREATE TABLESPACE task DATAFILE 'task001.dbf' SIZE 10M AUTOEXTEND ON NEXT 1M; CREATE TABLE SUMMARY( c1 INTEGER PRIMARY KEY, c2 CHAR(10), c3 INTEGER, c4 DATE ) TABLESPACE task; 재현 CREATE OR REPLACE PROCEDURE proc_recovery ( s integer, e integer ) AS j INTEGER; BEGIN FOR j IN s..e LOOP INSERT INTO summary VALUES ( j, '+++++++', j, SYSDATE ); END LOOP; END; / CREATE TABLE summary_disk( c1 INTEGER PRIMARY KEY, c2 CHAR(10), c3 INTEGER, c4 DATE ) TABLESPACE task; exit server stop is -sysdba STARTUP control; ALTER DATABASE ARCHIVELOG; STARTUP; exec proc_recovery(1, 500000); ALTER SYSTEM CHECKPOINT; exit rm ${ALTIBASE_HOME}/dbs/task001.dbf 7/13
dumpla ${ALTIBASE_HOME}/logs/loganchor0 is set vertical on; SELECT name, create_lsn_fileno FROM v$datafiles; exit server kill is -sysdba STARTUP control; ALTER DATABASE CREATE DATAFILE 'task001.dbf'; ALTER DATABASE RECOVER DATABASE; STARTUP; set vertical on; select count(*) from summary; select * from summary where c1 = 1; select * from summary where c1 = 100000; select * from summary where c1 = 200000; select * from summary where c1 = 300000; select * from summary where c1 = 400000; select * from summary where c1 = 500000 8/13
isql(sysdba)> set vertical on; isql(sysdba)> select count(*) from summary; COUNT : 500000 isql(sysdba)> select * from summary where c1 = 1; C1 : 1 C3 : 1 수행 결과 isql(sysdba)> select * from summary where c1 = 100000; C1 : 100000 C3 : 100000 isql(sysdba)> select * from summary where c1 = 200000; C1 : 200000 C3 : 200000 예상 결과 isql(sysdba)> select * from summary where c1 = 300000; [ERR-110C1 : The data file containing page [4196038] does not exist. ( Tablespace - ID : 5, Type : 4 )] isql(sysdba)> select * from summary where c1 = 400000; [ERR-110C1 : The data file containing page [2326] does not exist. ( Tablespace - ID : 5, Type : 4 )] isql(sysdba)> select * from summary where c1 = 500000; [ERR-110C1 : The data file containing page [2326] does not exist. ( Tablespace - ID : 5, Type : 4 )] isql> set vertical on; isql> select count(*) from summary; COUNT : 500000 isql> select * from summary where c1 = 1; 9/13
C1 : 1 C3 : 1 isql> select * from summary where c1 = 100000; C1 : 100000 C3 : 100000 isql> select * from summary where c1 = 200000; C1 : 200000 C3 : 200000 isql> select * from summary where c1 = 300000; C1 : 300000 C3 : 300000 isql> select * from summary where c1 = 400000; C1 : 400000 C3 : 400000 isql> select * from summary where c1 = 500000; C1 : 500000 C3 : 500000 10/13
- Symptoms: 데이터파일이삭제된상황에서, ALTIBASE HDB 서버가완전매체복구 (Complete media recovery) 에실패한다. BUG-38614 알티베이스 PSM 사용중, 세션의스테이트먼트 (statement) 개수가 잘못카운팅된다. 11/13
- Module: mm-statement - Category: Functional Error - Reproducibility: Always - Reproducing Conditions: $ALTIBASE_HOME/sample/JDBC/MultipleResultSet/MultipleResultSet.java 파일의 main 함수에서 callable statement 를 loop 을통해서반복 실행하도록수정한다. for( int j=0 ; j < 10000 ; j++ ) { CallableStatement scallstmt = scon.preparecall( "EXEC PROC_MULTI_RESULTSET" ); scallstmt.execute(); do { i++; srs = scallstmt.getresultset(); 재현 System.out.println( "RESULT SET : " + i ); while( srs.next() ) { System.out.println( " EmpID : " + srs.getstring(1) ); System.out.println( " EmpNO : " + srs.getint(2) ); } } while ( scallstmt.getmoreresults() ); 수행 결과 try{ Thread.sleep(10); }catch(interruptedexception e){ System.out.println(e.getMessage()); } System.out.println("call stmt close"); scallstmt.close(); } /* Finalize process */ //scallstmt.close(); System.out.println("conn close"); scon.close(); 에러메시지출력 There are too many statements in the session. 12/13
예상 결과 execute success. - Symptoms: 알티베이스 PSM 사용중, 세션의스테이트먼트 (statement) 개수가잘못카운팅된다. 이로인해 MultipleResultSet.java 에서 callable statement 를 loop 을통해서반복실행하면 There are too many statements in the session 오류가발생한다. BUG-38719 Windriver 리눅스로구성된이중화환경에서대응하는원격서버의 전원이꺼졌을경우, 송신자 (Sender) 가이를인지하지못하여장시간대기한다. - Module: rp-sender - Category: Efficiency - Reproducibility: Rare - Reproducing Conditions: Windriver 리눅스에서이중화구성원격서버종료이중화종료 - Symptoms: Windriver 리눅스에서대응하는원격서버가종료했을경우, 송신자 (sender) 는소켓오류를인지하지못해장시간대기한다. 13/13