ORACLE ORDBMS

22
ORACLE ORDBMS adminisztrációs feladatok 7. rész dr. Kovács László 2004

description

ORACLE ORDBMS. adminisztrációs feladatok 7. rész. 2004. dr. Kovács László. további csomagok DBMS_PIPE. Kommunikációs csatorna egy instance processzei között. Pipe store. session. buffer. CREATE_PIPEcsatorna létrehozása PACK_MESSAGEüzenet létrehozása SEND_MESSAGEüzenet küldése - PowerPoint PPT Presentation

Transcript of ORACLE ORDBMS

Page 1: ORACLE ORDBMS

ORACLE ORDBMSadminisztrációs feladatok

7. rész

dr. Kovács László2004

Page 2: ORACLE ORDBMS

további csomagok DBMS_PIPE

Kommunikációs csatorna egy instance processzei között

Pipe storesession buffer

CREATE_PIPE csatorna létrehozásaPACK_MESSAGE üzenet létrehozásaSEND_MESSAGE üzenet küldése RECEIVE_MESSAGE üzenet fogadásaUNPACK_MESSAGE üzenet kibontásaRESET_BUFFER buffer törlésePURGE csatorna tisztításaREMOVE_PIPE csatorna megszüntetése

Page 3: ORACLE ORDBMS

timeout INTEGER DEFAULT MAXWAIT;meret INTEGER DEFAULT 8092;priv BOOLEAN DEFAULT TRUE;

DBMS_PIPE.RESET_BUFFER;proba := DBMS_PIPE.UNIQUE_SESSION_NAME;szoveg := ‘UZEN’;DBMS_PIPE.CREATE_PIPE(proba,merert,priv);DBMS_PIPE.PACK_MESSAGE(szoveg);DBMS_PIPE.SEND_MESSAGE(proba,timeout);

DBMS_PIPE.RECEIVE_MESSAGE(proba, timeout);DBMS_PIPE.UNPACK_MESSAGE(szoveg2);DBMS_PIPE.REMOVE_PIPE(proba);

Page 4: ORACLE ORDBMS

DBMS_LOCK

felhasználó vezérelt zárolás (user lock <–> oracle lock)

kompatibilitási mátrix

meglévő mód

igényelt mód

NL

SS

SX

S

SSX

X

NL SS SX S SSX X

I

I

I

I

I

I

I I I I I

I I I I

I I

II

I

N N

N

N

N

N

N N N

N

N

N

N N

N

N

Page 5: ORACLE ORDBMS

DBMS_LOCK

ALLOCATE_UNIQUE id generálása REQUEST zárolás elhelyezés CONVERT zárolás átminősítés RELEASE zárolás felengedés SLEEP session felfüggesztés

zárolási mód kódok:NL 1SS 2SX 3S 4SSX 5X 6

Page 6: ORACLE ORDBMS

minta

Page 7: ORACLE ORDBMS

DBMS_RANDOM

INITIALIZE inicializálás SEED generálási érték beállítás RANDOM szám előállítás TERMINATE csomag bezárás

Véletlenszám generálás

CREATE PROCEDURE G1 (DB IN NUMBER, SS IN NUMBER) ASBEGIN DBMS_RANDOM. INITIALIZE(SS); FOR I=1..DB LOOP DBMS_OUTPUT.PUT_LINE(TO_CHAR(DBMS_RANDOM.RANDOM)) END LOOP;END;

SET SERVEROUTPUT ONEXECUTE G1(5,23);

Page 8: ORACLE ORDBMS

Levélküldés

Jserver, TCP modulokra épül

fő struktúrák:connection (host, port)reply (code, text)

open_connection kapcsolat felvétel helo szinkronizálásmail levél kezdetrcpt cimzett megadásadata üzenet törzsquit kapcsolat zárás

Page 9: ORACLE ORDBMS

CREATE PROCEDURE LEVELEZ (KULDO IN VARCHAR2, CIMZETT IN VARCHAR2, UZENET IN VARCHAR2) AS MAILHOST VARCHAR2(30) := ‘mail.ab.dom’; MAIL_CONN UTL_SMTP.CONNECTION; VALA UTL_SMTP.REPLAY;BEGIN MAIL_CONN := UTL_SMTP.OPEN_CONNECTION(MAILHOST,25); VALA := UTL_SMTP.HELO(MAIL_CONN, MAILHOST); DBMS_OUTPUT.PUT_LINE(VALA.TEXT); UTL_SMTP.MAIL(MAIL_CONN,KULDO); UTL_SMTP.RCPT(MAIL_CONN,CIMZETT); UTL_SMTP.DATA(MAIL_CONN,UZENET); UTL_SMTP.QUIT(MAIL_CONN);EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUTLINE(SQLERRM);END

execute levelez (‘<[email protected]>’,…);

Page 10: ORACLE ORDBMS

Particionált táblák

a tábla / index rekordjainak szétbontása csoportokra

típusai:Tartomány alapú (range) :

a rekordokat a kulcs alapján ossza szét. Az egyes kulcs érték tartományok külön partícióba kerülnekHash alapú:

egy egyenletesebb elosztást biztosító hash függvény alapján rendel a különböző kulcs értékekhez egy partíciót Vegyes módszer (composite partitioning) :

előbb tartomány alapú szétválogatás, majd egy hash alapú finomabb szétbontás

A különböző partíciók különböző szegmensekben, tablespace-ben helyezkednek el

Page 11: ORACLE ORDBMS

Előnyök

hatékonyság:- az egyes partíciók bizonyos esetekben kihagyhatók- párhuzamosítás- gyorsabb hozzáférés

karbantartás- önálló adminisztráció- egyedi tárolási paraméterek

adatvédelem- önálló állományszintű védelmi lehetőség

nem lehet CLUSTER-bennem lehet LONG mező

saját zárolási szint

Page 12: ORACLE ORDBMS

CREATE TABLE sales ( invoice_no NUMBER, sale_year INT NOT NULL, sale_month INT NOT NULL, sale_day INT NOT NULL )PARTITION BY RANGE (sale_year, sale_month, sale_day)( PARTITION sales_q1 VALUES LESS THAN (1997, 04, 01) TABLESPACE tsa, PARTITION sales_q2 VALUES LESS THAN (1997, 07, 01) TABLESPACE tsb, PARTITION sales_q3 VALUES LESS THAN (1997, 10, 01) TABLESPACE tsc, PARTITION sales_q4 VALUES LESS THAN (1998, 01, 01) TABLESPACE tsd );

Page 13: ORACLE ORDBMS

CREATE TABLE product( ... )STORAGE (INITIAL 10M)PARTITION BY HASH(column_list)( PARTITION p1 TABLESPACE h1, PARTITION p2 TABLESPACE h2 );

CREATE TABLE orders( ordid NUMBER, orderdate DATE,productid NUMBER, quantity NUMBER)PARTITION BY RANGE(orderdate)SUBPARTITION BY HASH(productid) SUBPARTITIONS 8STORE IN(ts1,ts2,ts3,ts4,ts5,ts6,ts7,ts8)( PARTITION q1 VALUES LESS THAN('01-APR-1998'), PARTITION q2 VALUES LESS THAN('01-JUL-1998'), PARTITION q3 VALUES LESS THAN('01-OCT-1998'), PARTITION q4 VALUES LESS THAN(MAXVALUE) );

Page 14: ORACLE ORDBMS

ALTER TABLE admin.patient_visits DROP PARTITION pv_dec92;  SELECT * FROM sales PARTITION (s_nov97) s WHERE s.amount_of_sale > 1000;

leírók: DBA_TAB_PARTITIONSDBA_TAB_SUBPARTITIONSDBA_IND_PARTITIONSDBA_IND_SUBPARTITIONSDBA_PART_COL_STATISTICS

Page 15: ORACLE ORDBMS

LOB objektumok kezelése

típusai:- DB-ben tárolt

- táblában- külön TABLESPACE

- külön állományban (BFILE)

egy táblában több LOB mező is lehet

- BLOB- CLOB- NCLOB- LOB locator

Page 16: ORACLE ORDBMS

LOB kezelő csomag

DBMS_LOB OPEN LOB megnyitása CLOSE LOB lezárása GETLENGTH LOB elem hossza READ LOB elem olvasása WRITE LOB elem irása FILEOPEN BLOB nyitása FILECLOSE BLOB zárás LOADFROMFILE BLOB betöltése SUBSTR LOB részlet INSTR LOB részlet keresése APPEND hozzáfűzés ERASE tartalom törlés

Page 17: ORACLE ORDBMS

CREATE OR REPLACE PROCEDURE Example_l2f IS lobd BLOB; fils BFILE := BFILENAME('SOME_DIR_OBJ','file specifikáció'); amt INTEGER := 4000; BEGIN SELECT b_lob INTO lobd FROM lob_table WHERE key_value = 42 FOR UPDATE; dbms_lob.fileopen(fils, dbms_lob.file_readonly); dbms_lob.loadfromfile(lobd, fils, amt); COMMIT; dbms_lob.fileclose(fils); END;

Page 18: ORACLE ORDBMS

CREATE OR REPLACE PROCEDURE Example2a IS lob_1, lob_2 BLOB; retval INTEGER;BEGIN SELECT b_col INTO lob_1 FROM lob_table WHERE key_value = 45; SELECT b_col INTO lob_2 FROM lob_table WHERE key_value = 54; retval := dbms_lob.compare(lob_1, lob_2, 5600, 33482, 128); IF retval = 0 THEN

…. ELSE

… END IF; END;

Page 19: ORACLE ORDBMS

CREATE OR REPLACE PROCEDURE Example_13a IS src_lob BLOB; buffer RAW(32767); amt BINARY_INTEGER := 32767; pos INTEGER := 2147483647;BEGIN SELECT b_col INTO src_lob FROM lob_table WHERE key_value = 21; LOOP dbms_lob.read (src_lob, amt, pos, buffer); … pos := pos + amt; END LOOP;EXCEPTION WHEN NO_DATA_FOUND THEN dbms_output.put_line('End of data'); END;

Page 20: ORACLE ORDBMS

Hibakezelő csomag

DBMS_DEBUG

DBMS_DEBUG.INITIALIZE regisztrálás DBMS_DEBUG.DEBUG_ON elindítás DBMS_DEBUG.DEBUG_OFF leállítás

debug session <---> target session

ALTER SESSION SET PLSQL_DEBUG = true;ALTER [PROCEDURE | FUNCTION | PACKAGE | TRIGGER | TYPE] <name> COMPILE DEBUG;

debug információk beépítése:

Target session

Page 21: ORACLE ORDBMS

Debug session

DBMS_DEBUG.ATTACH_SESSION kapcsolódás DBMS_DEBUG.DETACH_SESSION leválás

DBMS_DEBUG.SET_BREAKPOINT töréspont DBMS_DEBUG.DELETE_BREAKPOINT DBMS_DEBUG.SHOW_BREAKPOINTS

DBMS_DEBUG.SYNCHRONIZE első esemény DBMS_DEBUG.CONTINUE folytatás

DBMS_DEBUG.GET_VALUE változó kezelés DBMS_DEBUG.SET_VALUE DBMS_DEBUG.SHOW_SOURCE DBMS_DEBUG.EXECUTE végrehajtás a targetben

Page 22: ORACLE ORDBMS

minta