프린트 하기

OS환경 : Oracle Linux 6.8 (64bit)


DB 환경 : Oracle Database 11.2.0.4


에러 : ORA-44425: XML DB needs to be installed for creating an XMLType table or column

xml type 테이블 및 컬럼을 생성하려던 중 발생한 메세지

1
2
3
4
5
SQL> create table gaga (xml xmltype) XMLTYPE COLUMN "XML"STORE AS SECUREFILE BINARY XML;
create table gaga (xml xmltype) XMLTYPE COLUMN "XML"STORE AS SECUREFILE BINARY XML
                                                                        *
ERROR at line 1:
ORA-44425: XML DB needs to be installed for creating an XMLType table or column



해결 방법 : xml db 설치

현재 xml db 설치되었는지 확인

1
2
3
SQL> select username from dba_users where username = 'XDB';
 
no rows selected

존재하지 않음



xml db 설치

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SQL> @?/rdbms/admin/catqm.sql
Starting Oracle XML DB Installation ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enter Parameter #1 <XDB_PASSWD>, password for XDB schema:
Enter value for 1xdb  <-- [xml 유저 패스워드 입력]
 
Enter Parameter #2 <TABLESPACE>, tablespace for XDB:
Enter value for 2users  <-- [xml 기본 테이블스페이스 입력]
 
Enter Parameter #3 <TEMP_TABLESPACE>, temporary tablespace for XDB:
Enter value for 3temp  <-- [xml 기본 템프 테이블스페이스 입력]
 
Enter Parameter #4 <SECURE_FILES_REPO>, YES/NO
...................If YES and compatibility is at least 11.2,
...................then XDB repository will be stored as secure files.
...................Otherwise, old LOBS are used
Enter value for 4: yes  <-- [안내 메세지 yes ]
old   5:   :user_opt_secfiles := '&4';
new   5:   :user_opt_secfiles := 'yes';
 
PL/SQL procedure successfully completed.

테이블스페이스는 개별적으로 생성해주는것을 권장하지만 지금은 users 테이블스페이스로 지정함

*설치 스크립트 중 alter system flush shared_pool; 명령도 포함됨



필요한 권한 부여

1
2
3
4
5
6
7
SQL> grant execute on utl_file to xdb;
 
Grant succeeded.
 
SQL> grant execute on dbms_lob to xdb;
 
Grant succeeded.



invalid object 확인

1
SQL> @?/rdbms/admin/utlrp.sql



xml db 설치 후 유저 확인

1
2
3
4
5
SQL> select username from dba_users where username = 'XDB';
 
USERNAME
------------------------------
XDB



컴포넌트 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SQL> 
select * from dba_registry
where comp_id ='XDB';
 
COMP_ID
------------------------------
COMP_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
VERSION                STATUS              MODIFIED              NAMESPACE              CONTROL                SCHEMA
------------------------------ ---------------------- ----------------------- ------------------------------ ------------------------------ ------------------------------
PROCEDURE                              STARTUP  PARENT_ID
------------------------------------------------------------- -------- ------------------------------
OTHER_SCHEMAS
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
XDB
Oracle XML Database
11.2.0.4.0               VALID              31-DEC-2020 00:18:45    SERVER                 SYS                XDB
DBMS_REGXDB.VALIDATEXDB                       (null)   (null)
ANONYMOUS,XS$NULL



xml 테이블 생성 테스트

1
2
3
SQL> create table gaga (xml xmltype) XMLTYPE COLUMN "XML"STORE AS SECUREFILE BINARY XML;
 
Table created.

정상적으로 생성됨



원인 : xml db가 설치되어 있지 않아서 발생한 문제

xml db가 설치되어 있지 않아서 발생한 문제



*추가

xml db 삭제 방법

db 재기동

1
2
3
SQL>
shutdown immediate;
startup;



삭제 스크립트 실행

1
@?/rdbms/admin/catnoqm.sql



xml db 삭제 후 컴포넌트 확인

1
2
3
4
5
SQL> 
select * from dba_registry
where comp_id ='XDB';
 
no rows selected



xml db 삭제 후 유저 확인

1
2
3
SQL> select username from dba_users where username = 'XDB';
 
no rows selected



*중요: 삭제와 재설치 사이에 데이터베이스는 반드시 종료와 재시작 해야함



참조 : http://www.oracle-wiki.net/startdocshowtoinstallxmldb

https://forums.aws.amazon.com/thread.jspa?threadID=112611

1552327.1