프린트 하기 URL 복사

OS 환경 : Oracle Linux 9.6 (64bit)

 

DB 환경 : Oracle AI Database 23.26.2.0.0 ai

 

에러 : ORA-43853 VECTOR type cannot be used in non-automatic segment space management tablespace SYSTEM

26ai에서 벡터 컬럼을 가진 테이블을 생성하려다 실패함

1
2
3
4
5
6
7
8
9
10
11
12
13
SQL> 
CREATE TABLE IF NOT EXISTS ora_parameters (
    param_id     NUMBER PRIMARY KEY,
    param_name   VARCHAR2(100),
    description  VARCHAR2(4000),
    embedding    VECTOR(384, FLOAT32) 
);

CREATE TABLE IF NOT EXISTS ora_parameters (
                           *
ERROR at line 1:
ORA-43853: VECTOR type cannot be used in non-automatic segment space management tablespace "SYSTEM"
Help: https://docs.oracle.com/error-help/db/ora-43853/

 

 

해결 방법 : 유저의 기본 테이블스페이스를 users 테이블스페이스로 변경해준 뒤 생성

현재 유저의 default_tablespace 확인

1
2
3
4
5
6
7
8
SQL> 
set lines 200 pages 1000
col username for a10
select username , default_tablespace from dba_users where username = 'ERIC';
 
USERNAME   DEFAULT_TABLESPACE
---------- ------------------------------
ERIC       SYSTEM

현재 SYSTEM으로 되어 있음

 

 

테이블스페이스 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SQL>
set lines 200 pages 1000
col tablespace_name for a20
col file_name for a70
select tablespace_name, file_id, file_name, round(bytes/1024/1024/1024, 2) gb,
round(maxbytes/1024/1024/1024, 2) max_gb, autoextensible, status, online_status from dba_data_files
union all
select tablespace_name, file_id, file_name, round(bytes/1024/1024/1024, 2) gb,
round(maxbytes/1024/1024/1024, 2) max_gb, autoextensible, status, null from dba_temp_files order by 2;
 
TABLESPACE_NAME         FILE_ID FILE_NAME                                                                      GB     MAX_GB AUT STATUS    ONLINE_
-------------------- ---------- ---------------------------------------------------------------------- ---------- ---------- --- --------- -------
TEMP                          3 /app/oracle/oradata/ORACLE26/ORACLE26PDB1/temp01.dbf                            1         32 YES ONLINE
SYSTEM                       23 /app/oracle/oradata/ORACLE26/ORACLE26PDB1/system01.dbf                        .53      32768 YES AVAILABLE SYSTEM
SYSAUX                       24 /app/oracle/oradata/ORACLE26/ORACLE26PDB1/sysaux01.dbf                        .71      32768 YES AVAILABLE ONLINE
UNDOTBS1                     25 /app/oracle/oradata/ORACLE26/ORACLE26PDB1/undotbs01.dbf                     12.95         32 YES AVAILABLE ONLINE
TBS_STRIPING                126 /app/oracle/oradata/ORACLE26/ORACLE26PDB1/tbs_01.dbf                            1          0 NO  AVAILABLE ONLINE
TBS_STRIPING                127 /app/oracle/oradata/ORACLE26/ORACLE26PDB1/tbs_02.dbf                            1          0 NO  AVAILABLE ONLINE
TBS_STRIPING                128 /app/oracle/oradata/ORACLE26/ORACLE26PDB1/tbs_03.dbf                            1          0 NO  AVAILABLE ONLINE
TBS_STRIPING                129 /app/oracle/oradata/ORACLE26/ORACLE26PDB1/tbs_04.dbf                            1          0 NO  AVAILABLE ONLINE
TBS_STRIPING                130 /app/oracle/oradata/ORACLE26/ORACLE26PDB1/tbs_05.dbf                            1          0 NO  AVAILABLE ONLINE
 
9 rows selected.

현재 USERS 테이블스페이스가 없음

 

 

USERS 테이블스페이스 생성

1
2
3
SQL> create tablespace users datafile '/app/oracle/oradata/ORACLE26/ORACLE26PDB1/users01.dbf' size 1g;
 
Tablespace created.

 

 

일반 유저의 default tablespace를 users 테이블스페이스로 변경

1
2
3
SQL> alter user eric default tablespace users;
 
User altered.

 

 

다시 접속 후 테이블 생성 시도

1
2
3
4
5
6
7
8
9
10
11
$ sqlplus eric/eric@localhost:1521/ORACLE26PDB1
SQL> 
CREATE TABLE IF NOT EXISTS ora_parameters (
    param_id     NUMBER PRIMARY KEY,
    param_name   VARCHAR2(100),
    description  VARCHAR2(4000),
    -- 모델의 출력에 맞춰 384차원 VECTOR로 선언
    embedding    VECTOR(384, FLOAT32) 
);
 
Table created.

정상적으로 생성됨

 

 

추가로 아래 명령어까지 해주면 추후 다른 유저 생성시에도 users 테이블스페이스가 기본 테이블스페이스로 지정될수 있음

1
2
3
SQL> alter database default tablespace users;
 
Database altered.

 

 

원인 : system 테이블스페이스가 기본 테이블스페이스로 설정되어 있어 발생한 문제

system 테이블스페이스가 기본 테이블스페이스로 설정되어 있어 발생한 문제

 

 

참조 : 

오라클 19c alter database default tablespace 명령어 ( https://positivemh.tistory.com/1222 )