Oracle XDB 組件重建 說明
一. XDB 組件說明
1.1 官網說明:
XDB 全稱XML DB,官網的說明如下:
http://docs.oracle.com/cd/E11882_01/appdev.112/e23094/xdb01int.htm
Overviewof Oracle XML DB
OracleXML DB Architecture
OracleXML DB Features
OracleXML DB Benefits
SearchXML Data using Oracle Text
BuildMessaging Applications using Oracle Streams Advanced Queuing
StandardsSupported by Oracle XML DB
OracleXML DB Technical Support
OracleXML DB Examples Used in This Manual
FurtherOracle XML DB Case Studies and Demonstrations
這里我們簡單的看一下overview,具體內容,感興趣的自己研究。
OracleXML DB is a set of Oracle Database technologies related tohigh-performance handling of XML data: storing, generating, accessing,searching, validating, transforming, evolving, and indexing. It provides native XML support by encompassing both the SQL and XML data models in an interoperable way. Oracle XML DB is included as part of Oracle Database starting with Oracle9i Release 2 (9.2).
--Oracle 從9.2中引入XDB,XDB 是關於高性能處理XML 數據的一個技術的集合,其包含storing,generating, accessing,searching, validating, transforming, evolving, and indexing。 XDB提供本地XML支持。
1.2 MOS 說明:
Oracle8i/9i/10g/11g 組件(Components) 說明
http://www.cndba.cn/Dave/article/1445
Extensible Markup Language (XML) is a tag-based markup language that lets developers create their own tags to describe data that's exchanged between applications and systems. XML is widely adopted as the common language of information exchange between companies. It is human-readable; that is, it is plain text.Because it is plain text, XML documents and XML-based messages can be sent easily using common protocols, such as HTTP or FTP.
Oracle XML DB treats XML as a native datatype in the database. Oracle XML DB is not a separate server. The XML data model encompasses both unstructured content and structured data. Applications can use standard SQL and XML operators to generate complex XML documents from SQL queries and to store XML documents.
Oracle XML DB provides capabilities for both content-oriented and data-oriented access. For developers who see XML as documents (news stories, articles, and so on), Oracle XML DB provides an XMLrepository accessible from standard protocols and SQL.
The Oracle XMLdeveloper's kits (XDK) contain the basic building blocks for reading,manipulating, transforming, and viewing XML documents, whether on a file systemor stored in a database. They are available for Java, C, and C++. Unlike many share ware and trial XML components, the production Oracle XDKs are fully supported and come with a commercial redistribution license.
Schema:
---------
XDB: Stores XML database related schema objects.
--XDB compent 對應的用戶,其用來存儲相關對象。
1.3 使用XDB 組件的注意事項
(1)Please note that 9.2.0.3 is a mandatory minimum patch level for XDB. Customers using XDB must be on Oracle database version 9.2.0.3 or higher.
(2)It is recommended to take a full backup of the database before removing / reinstalling XDB.
(3)Before installing or upgrading XDB,make sure the LD_LIBRARY_PATH / LIBPATH / SHLIB_PATH environment variable is set correctly. That is, the first directory referenced should be $ORACLE_HOME/lib. This environment variable is used to resolve the location of the shared library "libxdb.so".
(4)XDB must have execute permissionson the DBMS_LOB and UTL_FILE packages. XDB automatically has these privileges because they are granted to PUBLIC by default. If these privileges have been revoked from PUBLIC for security reasons, errors will be reported during the installation/upgrade of XDB and many XDB objects will become invalid, making the component itself invalid. Therefore, grant execute privileges on these packages back to PUBLIC before installing / upgrading XDB or if you do not wish for PUBLIC to have these permissions, after the install /upgrade, grant execute permissions on these packages directly to XDB and run $ORACLE_HOME/rdbms/admin/utlrp.sql to recompile the invalid objects.
1.4 查看XDB 組件
--可以用如下SQL 查看一下DB中的組件:
col comp_id for a15
col version for a15
col comp_name for a30
select comp_id,comp_name,version,status from dba_registry;
COMP_ID COMP_NAME VERSION STATUS
--------------------------------------------- --------------- -----------------
AMD OLAP Catalog 11.2.0.3.0 VALID
EM Oracle Enterprise Manager 11.2.0.3.0 VALID
SDO Spatial 11.2.0.3.0 VALID
ORDIM Oracle Multimedia 11.2.0.3.0 INVALID
XDB Oracle XML Database 11.2.0.3.0 INVALID
CONTEXT Oracle Text 11.2.0.3.0 VALID
ODM Oracle Data Mining 11.2.0.3.0 VALID
EXF Oracle Expression Filter 11.2.0.3.0 VALID
RUL Oracle Rules Manager 11.2.0.3.0 VALID
OWM Oracle Workspace Manager 11.2.0.3.0 VALID
CATALOG Oracle Database Catalog Views 11.2.0.3.0 VALID
COMP_ID COMP_NAME VERSION STATUS
--------------------------------------------- --------------- -----------------
CATPROC Oracle Database Packages and T11.2.0.3.0 INVALID
JAVAVM JServer JAVA Virtual Machine 11.2.0.3.0 VALID
XML Oracle XDK 11.2.0.3.0 VALID
CATJAVA Oracle Database Java Packages 11.2.0.3.0 VALID
XOQ Oracle OLAP API 11.2.0.3.0 VALID
APS OLAP Analytic Workspace 11.2.0.3.0 VALID
注意這里的2個組件:
(1)XDB 是無效的。
(2)ORDIM 也是無效的。
OracleMultimedia (11g之前叫 interMedia)is a feature of Oracle Database Standard Edition and Enterprise Edition that enables efficient management and retrieval of multimedia (images, audio, and video) data in an integrated fashion with other enterprise information. Oracle Multimedia provides comprehensive support for DICOM, the widely adopted standard for medical images, videos and structured reports in Oracle Database.Oracle Multimedia extends Oracle Database reliability, availability, security,and data management capabilities to multimedia content in traditional,Internet, electronic commerce, medical, and media-rich applications.
--Oracle Multimedia 是Oracle 標准版和企業版里的一個特性,其可以用來管理images, audio, and video.
更多內容參考MOS:
Master Note for Oracle Multimedia/interMedia [ID 1078222.1]
這里ORDIM 無效是因為XDB 導致的,因為Oracle Multimedia組件的信息是保存在XDB Schemas中的,所以XDB無效,也會導致Multimedia 組件無效。在我們重建XDM組件之后,在reload 一下ORDIM組件就可以了。
二. 重建XDB 組件
XDB 組件的重建,參考:
Master Note for Oracle XML Database (XDB)Install / Deinstall [ID 1292089.1]
2.1 Reloading XDB
The reload procedure recreates all of the PL/SQL packages and types. An XDB reload is always preferred over an XDB removal and reinstall. Since xdbrelod.sql is called in xdbpatch.sql, you can alternatively run xdbpatch.sql to recreate all of the XDB related packages.
--Reload 過程將重建所有的PL/SQL 包和類型,Reload 比removal和reinstall 更具有優勢。在考慮重建之前可以先嘗試Reload。 因為xdbreload.sql 在xdbpatch.sql腳本中會自動調用,所以也可以運行xdbpatch.sql 來創建所有的XDB 關聯包。
2.1.1 Oracle 9i - XDB Reload
SQL> spool xdbreload.log
SQL> connect / as sysdba
SQL> set echo on;
SQL> shutdown immediate;
SQL> startup migrate;
SQL> @?/rdbms/admin/xdbrelod.sql
SQL> shutdown immediate;
SQL> startup;
SQL> @?/rdbms/admin/utlrp.sql
SQL> spool off
2.1.2 Oracle 10.1 and above(10g 以上版本) - XDBReload
SQL> spool xdbreload.log
SQL> connect / as sysdba
SQL> set echo on;
SQL> shutdown immediate;
SQL> startup upgrade;
SQL> @?/rdbms/admin/xdbrelod.sql
SQL> shutdown immediate;
SQL> startup;
SQL> @?/rdbms/admin/utlrp.sql
SQL> spool off
2.2 Deinstalling and Reinstalling XDB
2.2.1 相關的注意事項
(1) Use XDB removal and reinstall only if not using this feature or under the direction of Oracle Support after it has been verified which objects will need to be recreated.
(2) For database releases 10.1.x and above, XDB is mandatory in order to use any of the XMLTYPE functions. This is true even if the XDB repository is not being used and/or there are no registered schemas.
(3) Prior to Oracle 11.1, a valid installation of JAVA Virtual Machine (JVM).
(4) Prior to Oracle 10.2, a valid installation of XDK is also required
(5) Allocate at least 200 MB for the XDB repository tablespace datafile.
(6) Ensure that the SHARED_POOL_SIZE and JAVA_POOL_SIZE is set to at least 150 MB.
(7) If you have any doubts/concerns with reinstalling XDB or you need further assistance, please contact Oracle Support and log a Service Request.
2.2.2 Oracle 9.2 - XDB Removal and Reinstall
(1)XDB Removal
The catnoqm.sql script drops XDB.
SQL> spool xdb_removal.log
SQL> set echo on;
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup
SQL> @?/rdbms/admin/catnoqm.sql
SQL> spool off;
(2)XDB Installation
The catqm.sql script requires the following parameters be passed to it whenrun:
A. XDB user password
B. XDB user default tablespace
(Any tablespace other than SYSTEM, UNDO and TEMP can be specified. Thespecified tablespace must already exist prior to running the script.)
C. XDB user temporary tablespace
Therefore, the syntax to run catqm.sql is thefollowing:
SQL> @?/rdbms/admin/catqm.sql A B C
For example:
SQL> @?/rdbms/admin/catqm.sql XDB XDB TEMP
## IMPORTANT: You must shutdown and restart thedatabase between removal and reinstall ##
--注意:在removal 和reinstall 之間必須重啟DB.
SQL> spool xdb_install.log
SQL> set echo on;
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup;
SQL> @?/rdbms/admin/catqm.sql <XDB pwd> <XDB default tbs><XDB temporary tbs>
SQL> @?/rdbms/admin/catxdbj.sql
SQL> @?/rdbms/admin/utlrp.sql
SQL> spool off
2.2.3 Oracle 10g - XDB Removal and Reinstall
(1)XDB Removal
The catnoqm.sql script drops XDB.
SQL> spool xdb_removal.log
SQL> set echo on;
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup
SQL> @?/rdbms/admin/catnoqm.sql
SQL> spool off;
(2)XDB Installation
The catqm.sql script requires the following parameters be passed to it when run:
A. XDB user password
B. XDB user default tablespace
(Any tablespace other than SYSTEM, UNDO and TEMP can bespecified.
The specified tablespace must already exist prior to running the script.)
C. XDB user temporary tablespace
Therefore, the syntax to run catqm.sql is the following:
SQL> @?/rdbms/admin/catqm.sql A B C
For example:
SQL> @?/rdbms/admin/catqm.sql XDB XDB TEMP
## IMPORTANT: You must shutdown and restart the database between removal and reinstall ##
--注意:在removal 和reinstall 之間必須重啟DB.
SQL> spool xdb_install.log
SQL> set echo on;
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup;
SQL> @?/rdbms/admin/catqm.sql <XDB pwd> <XDB default tbs><XDB temporary tbs>
SQL> @?/rdbms/admin/utlrp.sql
SQL> spool off
2.2.4 Oracle 11g - XDB Removal and Reinstall
2.2.4.1 注意事項:
(1)When a binary XMLType is created,the data is stored in a proprietary format on disk that represents a post parse persistence model. This requires the need to store information about how to transverse the XML data without having to parse it again. The data that is stored in order to accomplish this is maintained in dictionary type tables in the XDB user schema, not in the user schema that created the table. What this means is that the removal script drops the XDB user and in turn loses this information from both Binary and Object-Relational xmltype tables/columns.So if directed to remove and reinstall XDB with the catnoqm.sql and catqm.sqlscripts, run the following code block to verify that no Binary and/or ObjectRelational XMLType tables and columns exist:
connect / as sysdba
-- Check the storage of XMLType tables.
select owner, table_name from dba_xml_tables where storage_type in ('OBJECT-RELATIONAL', 'BINARY');
-- A default seed database with the example schemas installed
-- will have ones owned by XDB, MDSYS and OE.
-- Check the storage of XMLType columns.
select owner, table_name from dba_xml_tab_cols where storage_type in ('OBJECT-RELATIONAL', 'BINARY');
-- A default seed database with the example schemas installed
-- will have ones owned by XDB, MDSYS, ORDDATA, APEX_030200 and OE.
-- Please see the following section as it relates to ORDDATA and APEX_030200
(2)If it is necessary to re-installXDB and you would like to put back all binary data into the database withouthaving to reload this from XML files, please review the following note on howto do this:
(Doc ID 1405457.1) How to move XMLType tables/columns withBinary XML Storage between schemas/databases
(3)What if the database is using the DICOM and/or Oracle Application Express (APEX) features?
If the above code block has objects owned by ORDDATA and/or APEX_030200, it means those components are installed in the database. If those components are being used in a production capacity, XDB should not be removed and reinstalled as data that is maintained in the XDB user schema will be lost.
(4)The default XMLType storage model is used if a storage model is not specified when creating an XMLType table orcolumn. Prior to Oracle Database 11g Release 2, unstructured (CLOB) storage was used by default. The default storage model is now binary XML storage.
Please see the following document for more information:
(DocID 1207893.1) Change in default storage model of XMLType to BINARYXML in 11.2.0.2
(5)Beginning with 11g, JAVA Virtual Machine (JVM) is no longer required for a successful installation of XDB.However, if an attempt is made to run XQUERY statements which use a functional evaluation path, an error will be thrown stating that JVM is not installed.Also note that JVM must be installed for XDK functionality.
(6)Beginning with 11.2, XDB now supports SecureFiles. To use SecureFiles, compatibility must be set to 11.2. If SecureFiles will be used, the tablespace specified for the XDB repository mustbe using Automatic Segment Space Management (ASSM).
Since SecureFiles is now supported with 11.2, an additional parameter was added to the catqm.sql script in that release.
2.2.4.2 Oracle 11.1 - XDB Removal and Reinstall
(1)XDB Removal
The catnoqm.sql script drops XDB.
SQL> spool xdb_removal.log
SQL> set echo on;
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup
SQL> @?/rdbms/admin/catnoqm.sql
SQL> spool off;
(2)XDB Installation
The catqm.sql script requires the following parameters be passed to it when run:
A. XDB user password
B. XDB user default tablespace
(Any tablespace other than SYSTEM, UNDO and TEMP can bespecified.
The specified tablespace must already exist prior to running the script.)
C. XDB user temporary tablespace
Therefore, the syntax to run catqm.sql is the following:
SQL> @?/rdbms/admin/catqm.sql A B C
For example:
SQL> @?/rdbms/admin/catqm.sql XDB XDB TEMP
## IMPORTANT: You must shutdown and restart thedatabase between removal and reinstall ##
SQL> spool xdb_install.log
SQL> set echo on;
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup;
SQL> @?/rdbms/admin/catqm.sql <XDB pwd> <XDB default tbs><XDB temporary tbs>
SQL> @?/rdbms/admin/utlrp.sql
SQL> spool off
2.2.4.3 Oracle 11.2 - XDB Removal and Reinstall
(1)XDB Removal
The catnoqm.sql script drops XDB.
SQL> spool xdb_removal.log
SQL> set echo on;
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup
SQL> @?/rdbms/admin/catnoqm.sql
SQL> spool off;
(2)XDB Installation
The catqm.sql script requires the following parameters be passed to it whenrun:
A. XDB user password
B. XDB user default tablespace
(Any tablespace other than SYSTEM, UNDO and TEMP canbe specified.
The specified tablespace must already exist prior to running the script.)
C. XDB user temporary tablespace
D. SecureFiles = YES or NO
(If YES is specified, the XDB repository will use SecureFile storage.
If NO is specified, LOBS will be used.
To use SecureFiles, compatibility must beset to 11.2.
The tablespace specified for the XDB repository must be using
Automatic Segment Space Management (ASSM) for SecureFiles to be used.)
Therefore the syntax to run catqm.sql is the following:
SQL> catqm.sql A B C D
For Example:
SQL> @?/rdbms/admin/catqm.sql XDB XDB TEMP YES
## IMPORTANT: You must shutdown and restart the database between removal andreinstall ##
SQL> spool xdb_install.log
SQL> set echo on;
SQL> connect / as sysdba
SQL> shutdown immediate;
SQL> startup;
SQL> @?/rdbms/admin/catqm.sql <XDB pwd> <XDB default tbs><XDB temporary tbs> <SecureFiles = YES/NO>
SQL> @?/rdbms/admin/utlrp.sql
SQL> spool off
2.3 Verify XDB Installation –驗證XDB 安裝
spool xdb_status.txt
set echo on;
connect / as sysdba
set pagesize 1000
col comp_name format a36
col version format a12
col status format a8
col owner format a12
col object_name format a35
col name format a25
-- Check status of XDB
select comp_name, version, status from dba_registry where comp_id = 'XDB';
-- Check for invalid objects owned by XDB
select owner, object_name, object_type, status from dba_objects where status = 'INVALID' and owner = 'XDB';
spool off;
三. Reload ORDIM 組件
在前面提到Oracle Multimedia(ORDIM)組件需要使用XDB組件,在我們重建XDB組件之后需要Reload 一些ORDIM組件。
Oracle 11g參考:
How To Reload Oracle Multimedia Related Information When XML Database (=XDB) Has Been Reinstalled [ID 965892.1]
Oracle 10g:參考:
How To Re-register XML Schemas After XDBHas Been Re-installed? [ID 558834.1]
3.1 Oracle 10g 版本
The XDB schema is also used by other products like interMedia and Spatial to register their XML Schemas. When XDB has been deinstalled and reinstalled for whatever reason the XML Schemas for these products will have to be reinstalled as well.
--XDB Schema 被其他的組件所用,比如interMedia(11g中叫Multimedia)和Spatial組件,他們注冊自己的信息在XML Schemas中。 當XDB 被刪除或者重建時,其他組件在XML中的信息也被卸載,這就導致其他組件的無效。
-- Register XML Schemas for the Rules Manager component (part of CATPROC)
--在XMLSchemas中注冊Rules Manager 組件信息:
connect / as sysdba
alter session set current_schema = EXFSYS;
@?/rdbms/admin/rulpbs.sql
-- Register XML Schemas for the interMedia product
--在XMLSchemas 中注冊interMedia組件信息:
connect / as sysdba
alter session set current_schema=ORDSYS;
@?/ord/im/admin/imxreg.sql
-- Register XML Schemas for the Locator/Spatial product
--在XMLSchemas中注冊Locator/Spatial 組件信息
connect / as sysdba
alter session set current_schema=MDSYS;
@?/md/admin/sdogmlsc.sql
@?/md/admin/sdoepsgx.sql
@?/md/admin/sdogrxml.sql -- not to be run for a Locatorinstallation
3.2 Oracle 11g 版本
Oracle Multimedia requires Oracle XML Database (=XDB) to be installed. In cases where Oracle Multimedia is not in use and XDB has been reinstalled, the below steps will assist to reinstall the part of Oracle Multimedia that uses XDB.
--在進行如下操作之前,記得先備份:
(1)Run SQL*Plus and connect as SYSDBA:
SQL> alter session set current_schema="ORDSYS";
SQL> @<ORACLE_HOME>/ord/im/admin/imxreg.sql;
SQL> @<ORACLE_HOME>/ord/im/admin/impbs.sql;
SQL> @<ORACLE_HOME>/ord/im/admin/impvs.sql;
SQL> @<ORACLE_HOME>/ord/im/admin/imtyb.sql;
SQL> @<ORACLE_HOME>/ord/im/admin/implb.sql;
SQL> @<ORACLE_HOME>/ord/im/admin/imxrepos.sql;
(2)Now run validate_ordim connected asSYSDBA to verify if Oracle Multimedia is valid:
SQL> set serveroutput on
SQL> exec validate_ordim;
SQL> select status, version from DBA_REGISTRY where comp_id = 'ORDIM';
This shoulds how, that Oracle Multimedia is VALID and at the same version as the database.
四.重建XDB組件后,還有無效的XDB對象
如果我們重建XDB組件后,還有有無效的XDB對象,處理方法下:
Invalid XDB Objects After XDB Install [ID429551.1]
當我們重建了XDB后,仍然有一些XDB 對象無效,比如:
DBMS_XMLDOM
DBMS_XMLPARSER
DBMS_XMLSCHEMA
當我們嘗試編譯時,又報如下錯誤:
PLS-00201: identifier 'DBMS_LOB'
or
PLS-00201: identifier 'UTL_FILE' must be declared
XDB lacks execute permissions on DBMS_LOB and UTL_FILE package. This is a permission granted by default.
--導致這個這個問題的原因是因為XDB 在DBMS_LOB和 UTL_FILE包上沒有執行權限。
解決方法有兩種:
(1)方法一
SQL> CONN / AS SYSDBA (Connect asSYSDBA)
SQL> DESC DBMS_LOB
SQL> DESC UTL_FILE
SQL> GRANT EXECUTE ON DBMS_LOB TO XDB;
SQL> GRANT EXECUTE ON UTL_FILE TO XDB;
SQL> @?/rdbms/admin/utlrp.sql -- Run this afew times
SQL> SELECT * FROM DBA_ERRORS;
SQL> SELECT COMP_ID, COMP_NAME, STATUS FROM DBA_REGISTRY;
SQL> SELECT OBJECT_NAME, OBJECT_TYPE, OWNER, STATUS FROM DBA_OBJECTS WHERE OWNER = 'XDB' AND STATUS != 'VALID';
(2)方法二:
a) Grant following privileges to XDB user
SQL> GRANTEXECUTE ON DBMS_LOB TO XDB;
SQL> GRANT EXECUTE ON UTL_FILE TO XDB;
b) Reload the XDB Component (usingxdbrelod.sql).
- Refer Master Note for Oracle XMLDatabase (XDB) Installation (Doc ID 1292089.1)