현상
Tibero 6 FS07_CS_2005 (build 194603) 바이너리에서 dba 권한이 없는 user에서 table tbexport 수행 시 8033 에러가 발생하는 현상에 대해 설명합니다.
참고
8033 에러는 일반 DB 계정에서 tbexport를 실행할 때 발생하며, dba_part_indexes와 dba_idx_partitions 뷰를 참조할 때 발생하는 문제입니다.
TEST
[시나리오]
SQL>conn sys/tibero
=================
SQL>create tablespace TS_DATA1 datafile '/home/tibero/tibero6/database/tibero/ts_data1.dtf' size 10M autoextend on;
SQL>create tablespace TS_DATA2 datafile '/home/tibero/tibero6/database/tibero/ts_data2.dtf' size 10M autoextend on;
SQL>create user peter identified by peter;
SQL>grant connect, resource to peter;
SQL>conn peter/peter
=================
SQL>drop table dept;
SQL>create table dept (deptno varchar(30) not null,
dname varchar(30),
city varchar(30)
) tablespace TS_DATA1 ;
SQL>alter table dept add primary key (deptno);
SQL>create index ix_dname on dept(dname) tablespace TS_DATA1 ;
SQL>insert into dept values('10','ACC','SEOUL');
SQL>insert into dept values('20','SEL','PUSAN');
SQL>insert into dept values('30','MAN','TAEGU');
SQL>commit;
SQL>drop table emp;
SQL>create table emp (empno varchar(30) not null,
ename varchar(30),
deptno varchar(30) not null,
email varchar(30)
) tablespace TS_DATA1 ;
SQL>alter table emp add constraint pk_emp primary key (empno);
SQL>alter table emp add constraint fk_emp foreign key (deptno) REFERENCES dept(deptno);
SQL>create index ix_ename on emp(ename) tablespace TS_DATA1 ;
SQL>insert into emp values('001','PJH','10','naver');
SQL>insert into emp values('002','XXH','10','daum');
SQL>insert into emp values('003','KIM','20','paro');
SQL>insert into emp values('004','HON','20','LG');
SQL>insert into emp values('005','TWO','30','SAM');
SQL>commit;
SQL>select * from emp;
SQL>select * from dept;
SQL
복사
[tbexport 수행]
$ tbexport username=peter password=peter sid=tibero file=/tmax/test/273931/exp273931.dat table=emp,dept logdir=/tmax/test/273931/273931.log loglvl=debug
tbexport 6.0
Copyright 2015 TmaxData Co., Ltd. All Rights Reserved.
the TABLE: emp,dept: Thu Nov 11 16:32:41 KST 2021
Export character set: MSWIN949
Export national character set: UTF-16
exporting table: "PETER"."EMP"
exporting table: "PETER"."DEPT"
[1] PETER.DEPT 3 rows exported.
[0] PETER.EMP 5 rows exported.
java.sql.SQLException: JDBC-8033:Specified schema object was not found.
at line 11, column 15 of null:
from dba_part_indexes a,
^
at com.m.internal.jdbc.err.MInternalError.makeSQLException(Unknown Source)
at com.m.internal.jdbc.err.MInternalError.newSQLException(Unknown Source)
at com.m.internal.jdbc.msg.common.MInternalMsgError.readErrorStackInfo(Unknown Source)
at com.m.internal.jdbc.msg.MInternalMsgEreply.deserialize(Unknown Source)
at com.m.internal.jdbc.comm.MInternalStream.readMsg(Unknown Source)
at com.m.internal.jdbc.comm.MInternalCommType4.prepareExecute(Unknown Source)
at com.m.internal.jdbc.driver.MInternalPreparedStatementImpl.executeCompleteSQL(Unknown Source)
at com.m.internal.jdbc.driver.MInternalPreparedStatementImpl.executeInternal(Unknown Source)
at com.m.internal.jdbc.driver.MInternalPreparedStatementImpl.executeQuery(Unknown Source)
at com.m.internal.jdbc.driver.MInternalPreparedStatement.executeQuery(Unknown Source)
at com.m.expimp.exporter.AbstractModeTable.setIndexPartition(AbstractModeTable.java:1213)
at com.m.expimp.exporter.v6.ModeTable6.exportTableIndex(ModeTable6.java:600)
at com.m.expimp.exporter.AbstractModeTable.exportTable(AbstractModeTable.java:175)
at com.m.expimp.exporter.AbstractModeTable.start(AbstractModeTable.java:99)
at com.m.expimp.exporter.v6.ExportInfo6.exportModeTable(ExportInfo6.java:405)
at com.m.expimp.exporter.AbstractExportInfo.exportMode(AbstractExportInfo.java:120)
at com.m.expimp.exporter.AbstractExportInfo.start(AbstractExportInfo.java:89)
at com.m.expimp.exporter.ExportMain.main(ExportMain.java:142)
JDBC-8033:Specified schema object was not found.
SQL
복사
원인
일반 DB계정으로 사용자 모드, 테이블 모드 export시 dba_part_indexes, dba_idx_partitions 을 참고해서 JDBC-8033 에러가 발생하는 현상으로, schema 종속적인 객체도 dba_ 뷰로 조회하기 때문에 dba 권한이 없는 스키마의 경우 8033 에러가 발생합니다.
해결
패치를 적용해 해결합니다. (적용패치: FS07_130428a_expimp)
주의
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용합니다.