Jan 20, 2012

To Oracle XML DB repository (μέρος 4ο)

Στο τελευταίο άρθρο (http://serafeimk.blogspot.com/2012/01/to-oracle-xml-db-repository-3.html) είδαμε πως μπορούμε να διαχειριστούμε προγραμματιστικά στοιχεία του XML DB repository, τη στιγμή που συμβαίνουν διάφορα συμβάντα, όπως εισαγωγή, μεταβολή ή ανανέωση περιεχομένου. Φυσικά είναι δυνατόν να έχουμε ανά πάσα στιγμή να αντλήσουμε πληροφορία από το repository: σύμμαχος μας είναι το PL/SQL package DBMS_XDB. Μερικές από τις συναρτήσεις που παρουσιάζουν ενδιαφέρον είναι οι:


CFG_GET: που επιστρέφει σε μορφή XML τις λεπτομέρειες διαμόρφωσης του XML repository
CHANGEOWNER: μεταβάλλει τον ιδιοκτήτη ενός πόρου (αρχείου ή καταλόγου)
CREATEFOLDER: δημιουργεί έναν νέο κατάλογο
CREATERESOURCE: δημιουργεί ένα νέο αρχείο με παράμετρο τα περιεχόμενά του σε μορφή VARCHAR2, XMLTYPE, BFILE ή BLOB
GETCONTENTBLOB: επιστρέφει τα περιεχόμενα ενός αρχείου του repository σε μορφή BLOB
GETCONTENTCLOB: επιστρέφει τα περιεχόμενα ενός αρχείου του repository σε μορφή CLOB
GETCONTENTXMLTYPE: επιστρέφει τα περιεχόμενα ενός αρχείου του repository σε μορφή SYS.XMLTYPE
ISFOLDER: υποδεικνύει αν το όρισμα της διαδρομής είναι κατάλογος ή όχι
LINK: δημιουργεί weak ή hard link σε ένα άλλο resource
SETACL: ορίζει τα δικαιώματα πρόσβασης σε ένα resource


Συμπληρωματικά, για τις λειτουργίες versioning (version, check-in, check-out, κλπ) υπάρχει το ειδικό πακέτο DBMS_XDB_VERSION.


Πολλές από τις υπηρεσίες αυτών των πακέτων περιμένουν ως όρισμα τη διαδρομή του αρχείου ή του φακέλου που μας ενδιαφέρει.Γι αυτό το λόγο, μπορούμε να χρησιμοποιήσουμε το database view RESOURCE_VIEW και τις κατάλληλες συναρτήσεις ώστε να προσδιορίζουμε τα περιεχόμενα ενός καταλόγου ή την πλήρη διαδρομή ενός αρχείου. Για παράδειγμα η εντολή:

SELECT any_path as full_path, path(1) as relative_path FROM RESOURCE_VIEW WHERE under_path(RES, '/', 1) = 1;

μας επιστρέφει όλα τα περιεχόμενα του πατρικού (root) καταλόγου του repository.

Κάτι που επίσης πρέπει να γνωρίζουμε είναι το που βρίσκονται τα έγγραφά μας αποθηκευμένα. Έπειτα από μια τυπική εγκατάσταση, έχει δημιουργηθεί (και είναι locked) το σχήμα XDB που διαχειρίζεται όλο το XML DB repository. Το tablespace που βρίσκεται αυτό το σχήμα είναι το SYSAUX. Αν αυτό δεν μας ικανοποιεί, τότε μπορούμε να χρησιμοποιήσουμε την κλήση dbms_xdb_admin.moveXDB_Tablespace ώστε να το μεταφέρουμε σε ένα άλλο tablespace της επιλογής μας (η εντολή αφορά την έκδοση 11.2.0.3) ή με την DBMS_XDB.MOVEXDB_TABLESPACE για την 11.2.0.1. Εναλλακτικά, μπορούμε να φτιάξουμε μια βάση χωρίς την επιλογή της XML DB που θα την προσθέσουμε αργότερα (http://docs.oracle.com/cd/B28359_01/appdev.111/b28369/appaman.htm#i638485) Τέλος, ένα άλλο ειδικό χαρακτηριστικό της XML DB έχει να κάνει με το backup: με ένα λογικό export (expdp) δεν τηρείται η δομή των καταλόγων που έχουμε φτιάξει. Θα χρειαστούμε ένα RMAN backup ώστε να μεταφέρουμε επιτυχώς ένα XML DB repository.

No comments: