'init.ora' parametre dosyasında db_block_size=8192
yani boyutu 8kb'dır,default olarak maximum 32gb'a kadar datafile oluşturmamıza izin veriliyor,
tabi biz bu 8k değerini artırabiliriz.
db_block_size * 4194303 = 2k*4194303, 8Gb-2k.
db_block_size Maximum data file size
--------------- --------------------
2kb 8Gb
4kb 16Gb
8kb 32Gb
16kb 64Gb
32kb 128Gb
örneğin;34gb'lık datafile içeren tablespace oluşturmak için 'blocksize' değerinin 16k olması gerekir;
CREATE TABLESPACE TEST DATAFILE 'D:\oracle\product\10.2.0\oradata\ORCL\TEST.dbf' SIZE 34000M
AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
LOGGING ONLINE
PERMANENT
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 16K
SEGMENT SPACE MANAGEMENT AUTO;
21 Şubat 2008 Perşembe
13 Şubat 2008 Çarşamba
MATERIALIZED VIEW
materialized view oluşturulduktan sonra tabloya insert
ettiğimizde insert süresi normalinkinden daha uzundur
fakat select sorgularımızı çok daha kısa sürede gerçekleştirir.
------MATERIALIZED VIEW LOG oluşturulur---------
CREATE MATERIALIZED VIEW LOG ON hr.klinik
WITH ROWID, SEQUENCE (klinik_id)
INCLUDING NEW VALUES;
CREATE MATERIALIZED VIEW LOG ON hr.hastalar
WITH ROWID, SEQUENCE (hasta_no,klinik_id)
INCLUDING NEW VALUES;
------materialized view oluşturulur-------------
CREATE MATERIALIZED VIEW hr.MV_DENEME
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS SELECT k.klinik_id,COUNT(h.hasta_no) as hasta_sayisi
FROM hr.klinik k,hr.hastalar h
WHERE k.klinik_id=h.klinik_id
GROUP BY k.klinik_id;
select * from hr.mv_deneme;
--------silmek için-------------------------
drop MATERIALIZED VIEW LOG ON hr.hastalar;
drop MATERIALIZED VIEW hr.MV_DENEME;
Subquery,Primary Key,Rowid,Refresh,Prebuilt
Materialized Views...
ettiğimizde insert süresi normalinkinden daha uzundur
fakat select sorgularımızı çok daha kısa sürede gerçekleştirir.
------MATERIALIZED VIEW LOG oluşturulur---------
CREATE MATERIALIZED VIEW LOG ON hr.klinik
WITH ROWID, SEQUENCE (klinik_id)
INCLUDING NEW VALUES;
CREATE MATERIALIZED VIEW LOG ON hr.hastalar
WITH ROWID, SEQUENCE (hasta_no,klinik_id)
INCLUDING NEW VALUES;
------materialized view oluşturulur-------------
CREATE MATERIALIZED VIEW hr.MV_DENEME
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS SELECT k.klinik_id,COUNT(h.hasta_no) as hasta_sayisi
FROM hr.klinik k,hr.hastalar h
WHERE k.klinik_id=h.klinik_id
GROUP BY k.klinik_id;
select * from hr.mv_deneme;
--------silmek için-------------------------
drop MATERIALIZED VIEW LOG ON hr.hastalar;
drop MATERIALIZED VIEW hr.MV_DENEME;
Subquery,Primary Key,Rowid,Refresh,Prebuilt
Materialized Views...
11 Şubat 2008 Pazartesi
BFILE,CLOB,LONG RAW
LOB TYPES (BÜYÜK NESNE VERİ TİPLERİ)
LOB (Large Object) veritipi olan BFILE, BLOB, CLOB ve NCLOB, yapılandırılmamış (unstructured) veri bloklarının 4GB'a kadar verinin binary ya da karakter olarak saklanmasını ve işlenmesini sağlar (örneğin metin, grafik görüntüleri, video klipleri, ses vs. gibi).
• BFILE (Binary FILE)- (LOG)-( Bu alan türünde dosyalar oracle veritabnında değil external olarak belirtilen bir directory (dizinde ) saklanır ve sadece adresleri oracle da saklamak için kullanılan bir binary veri tipidir.)
• BLOB (Binary LOB)- (PICTURE)-( Yapısal olmayan ve 4 Gb ye kadar olan binary formattaki bilgileri saklamak için kullanılabilir, BLOB 'lar RAW'a, RAW 'lar da BLOB 'a çevrilebilir.)
• CLOB (Character LOB)- (DOCUMENT)-( 4Gb kadar olan karakter katarlarını saklamak için kullanılabilecek alan türüdür, CLOB 'lar CHAR ve VARCHAR2 'ye çevrilebilir, bunun tersi de geçerlidir.)
• NCLOB (National Character LOB)- (DOCUMENT)- )-( 4Gb kadar olan Unicode karakter katarlarını saklamak için kullanılabilecek alan türüdür.)
LOB' lar üzerinde okuma, yazma işlemleri yapmak için DBMS_LOB paketi kullanılabilir.
SCALAR TYPES (SIRALI VERİ TİPLERİ)
• LONG (AMOUNT)-(LONG veri tipi ,diğer veritabanı yönetim sistemlerinde genellikle MEMO veri tipi olarak adlandırılır, LONG veritipi değişken uzunluklu karakter stringlerinin depolanmasında kullanılır ve uzunluğu 32760 byte ile sınırlıdır, bunun haricinde VARCHAR2 veritipine benzer.)
• LONG RAW (PICTURE)-( LONG RAW veritipi binary verilerin ve byte stringlerinin depolanmasında kullanılır, uzunluğu en fazla 32760 byte olabilir, LONG veritipine benzer, ondan farkı ise PL/SQL tarafından yorumlanmamasıdır.)
LONG verileri CLOB' a, LONG RAW verileri ise BLOB' a çevrilebilir.
LOB tipleri LONG ve LONG RAW tiplerinden şu şekilde farklıdır;
Bir LOB en fazla 4 GB, LONG ise 2 GB olabilir,
LOB 'lar veriye rastgele erişir, LONG 'lar ise veriye sıralı erişir.
BFILE ÖRNEĞİ
‘resim.bmp’ resim dosyasının kendisini değil de (database şişmemesi için) bulunduğu dizindeki adresini saklamak için;
Sql>conn hr/o
Sql>CREATE TABLE dokuman (id NUMBER,adi varchar2(50),yeri BFILE);
Sql>desc dokuman;
Sql>conn system/o
Sql> grant CREATE ANY DIRECTORY to hr;
Sql>conn hr/o
Sql>CREATE OR REPLACE DIRECTORY dizin as ‘D:\’;
Sql>insert into dokuman (id,adi,yeri) values (1,’deneme_resim’, BFILENAME(‘dizin’,’ resim.bmp’));
Sql>select * from dokuman; (sqlplus’ta gösterilmez)
Sql>update dokuman set yeri = BFILENAME(‘dizin’, 'image3.gif') where id = 1;
CLOB ÖRNEĞİ
‘deneme.xml’ dosyasının procedure yardımıyla oracle’daki ‘test_clob’ tablosuna aktarımı;
CREATE TABLE test_clob (id NUMBER(15),dosya_adi VARCHAR2(100),dosya CLOB);
CREATE OR REPLACE DIRECTORY DIR_CLOB AS 'D:\\';
CREATE OR REPLACE PROCEDURE PRO_CLOB
IS
dest_clob CLOB;
src_clob BFILE := BFILENAME('DIR_CLOB', 'deneme.xml');
dst_offset number := 1 ;
src_offset number := 1 ;
lang_ctx number := DBMS_LOB.DEFAULT_LANG_CTX;
warning number;
BEGIN
DBMS_OUTPUT.ENABLE(100000);
INSERT INTO test_clob(id, dosya_adi,dosya)
VALUES(10, 'deneme.xml', empty_clob())
RETURNING dosya INTO dest_clob;
DBMS_LOB.OPEN(src_clob, DBMS_LOB.LOB_READONLY);
DBMS_LOB.LoadFromFile(
DEST_LOB => dest_clob
, SRC_LOB => src_clob
, AMOUNT => DBMS_LOB.GETLENGTH(src_clob)
);
DBMS_LOB.CLOSE(src_clob);
COMMIT;
DBMS_OUTPUT.PUT_LINE(' DBMS_LOB.LoadFromFile:(ID=10) ile dosya yüklendi');
INSERT INTO test_clob(id, dosya_adi, dosya)
VALUES(20, 'deneme.xml', empty_clob())
RETURNING dosya INTO dest_clob;
DBMS_LOB.OPEN(src_clob, DBMS_LOB.LOB_READONLY);
DBMS_LOB.LoadCLOBFromFile(
DEST_LOB => dest_clob
, SRC_BFILE => src_clob
, AMOUNT => DBMS_LOB.GETLENGTH(src_clob)
, DEST_OFFSET => dst_offset
, SRC_OFFSET => src_offset
, BFILE_CSID => DBMS_LOB.DEFAULT_CSID
, LANG_CONTEXT => lang_ctx
, WARNING => warning
);
DBMS_LOB.CLOSE(src_clob);
COMMIT;
DBMS_OUTPUT.PUT_LINE('DBMS_LOB.LoadCLOBFromFile:(ID=20) ile dosya yüklendi');
END;
/
SQL> set serveroutput on
SQL> exec pro_clob
SQL> SELECT id, DBMS_LOB.GETLENGTH(dosya) Length FROM test_clob;
SQL> set long 8000
SQL> set pagesize 9000
SQL> SELECT id, dosya FROM test_clob ORDER BY id;
LONG RAW ÖRNEĞİ
CREATE TABLE HR.PROGRAMLAR(DOSYA_ISMI VARCHAR2(30 BYTE),DERLEME_TARIHI DATE,PRG_DOSYA LONG RAW);
hr'ın bu programlar tablosuna örneğin toad'ı kullanarak programları yükleyebilir ve tablodan geri çekebiliriz.
LOB (Large Object) veritipi olan BFILE, BLOB, CLOB ve NCLOB, yapılandırılmamış (unstructured) veri bloklarının 4GB'a kadar verinin binary ya da karakter olarak saklanmasını ve işlenmesini sağlar (örneğin metin, grafik görüntüleri, video klipleri, ses vs. gibi).
• BFILE (Binary FILE)- (LOG)-( Bu alan türünde dosyalar oracle veritabnında değil external olarak belirtilen bir directory (dizinde ) saklanır ve sadece adresleri oracle da saklamak için kullanılan bir binary veri tipidir.)
• BLOB (Binary LOB)- (PICTURE)-( Yapısal olmayan ve 4 Gb ye kadar olan binary formattaki bilgileri saklamak için kullanılabilir, BLOB 'lar RAW'a, RAW 'lar da BLOB 'a çevrilebilir.)
• CLOB (Character LOB)- (DOCUMENT)-( 4Gb kadar olan karakter katarlarını saklamak için kullanılabilecek alan türüdür, CLOB 'lar CHAR ve VARCHAR2 'ye çevrilebilir, bunun tersi de geçerlidir.)
• NCLOB (National Character LOB)- (DOCUMENT)- )-( 4Gb kadar olan Unicode karakter katarlarını saklamak için kullanılabilecek alan türüdür.)
LOB' lar üzerinde okuma, yazma işlemleri yapmak için DBMS_LOB paketi kullanılabilir.
SCALAR TYPES (SIRALI VERİ TİPLERİ)
• LONG (AMOUNT)-(LONG veri tipi ,diğer veritabanı yönetim sistemlerinde genellikle MEMO veri tipi olarak adlandırılır, LONG veritipi değişken uzunluklu karakter stringlerinin depolanmasında kullanılır ve uzunluğu 32760 byte ile sınırlıdır, bunun haricinde VARCHAR2 veritipine benzer.)
• LONG RAW (PICTURE)-( LONG RAW veritipi binary verilerin ve byte stringlerinin depolanmasında kullanılır, uzunluğu en fazla 32760 byte olabilir, LONG veritipine benzer, ondan farkı ise PL/SQL tarafından yorumlanmamasıdır.)
LONG verileri CLOB' a, LONG RAW verileri ise BLOB' a çevrilebilir.
LOB tipleri LONG ve LONG RAW tiplerinden şu şekilde farklıdır;
Bir LOB en fazla 4 GB, LONG ise 2 GB olabilir,
LOB 'lar veriye rastgele erişir, LONG 'lar ise veriye sıralı erişir.
BFILE ÖRNEĞİ
‘resim.bmp’ resim dosyasının kendisini değil de (database şişmemesi için) bulunduğu dizindeki adresini saklamak için;
Sql>conn hr/o
Sql>CREATE TABLE dokuman (id NUMBER,adi varchar2(50),yeri BFILE);
Sql>desc dokuman;
Sql>conn system/o
Sql> grant CREATE ANY DIRECTORY to hr;
Sql>conn hr/o
Sql>CREATE OR REPLACE DIRECTORY dizin as ‘D:\’;
Sql>insert into dokuman (id,adi,yeri) values (1,’deneme_resim’, BFILENAME(‘dizin’,’ resim.bmp’));
Sql>select * from dokuman; (sqlplus’ta gösterilmez)
Sql>update dokuman set yeri = BFILENAME(‘dizin’, 'image3.gif') where id = 1;
CLOB ÖRNEĞİ
‘deneme.xml’ dosyasının procedure yardımıyla oracle’daki ‘test_clob’ tablosuna aktarımı;
CREATE TABLE test_clob (id NUMBER(15),dosya_adi VARCHAR2(100),dosya CLOB);
CREATE OR REPLACE DIRECTORY DIR_CLOB AS 'D:\\';
CREATE OR REPLACE PROCEDURE PRO_CLOB
IS
dest_clob CLOB;
src_clob BFILE := BFILENAME('DIR_CLOB', 'deneme.xml');
dst_offset number := 1 ;
src_offset number := 1 ;
lang_ctx number := DBMS_LOB.DEFAULT_LANG_CTX;
warning number;
BEGIN
DBMS_OUTPUT.ENABLE(100000);
INSERT INTO test_clob(id, dosya_adi,dosya)
VALUES(10, 'deneme.xml', empty_clob())
RETURNING dosya INTO dest_clob;
DBMS_LOB.OPEN(src_clob, DBMS_LOB.LOB_READONLY);
DBMS_LOB.LoadFromFile(
DEST_LOB => dest_clob
, SRC_LOB => src_clob
, AMOUNT => DBMS_LOB.GETLENGTH(src_clob)
);
DBMS_LOB.CLOSE(src_clob);
COMMIT;
DBMS_OUTPUT.PUT_LINE(' DBMS_LOB.LoadFromFile:(ID=10) ile dosya yüklendi');
INSERT INTO test_clob(id, dosya_adi, dosya)
VALUES(20, 'deneme.xml', empty_clob())
RETURNING dosya INTO dest_clob;
DBMS_LOB.OPEN(src_clob, DBMS_LOB.LOB_READONLY);
DBMS_LOB.LoadCLOBFromFile(
DEST_LOB => dest_clob
, SRC_BFILE => src_clob
, AMOUNT => DBMS_LOB.GETLENGTH(src_clob)
, DEST_OFFSET => dst_offset
, SRC_OFFSET => src_offset
, BFILE_CSID => DBMS_LOB.DEFAULT_CSID
, LANG_CONTEXT => lang_ctx
, WARNING => warning
);
DBMS_LOB.CLOSE(src_clob);
COMMIT;
DBMS_OUTPUT.PUT_LINE('DBMS_LOB.LoadCLOBFromFile:(ID=20) ile dosya yüklendi');
END;
/
SQL> set serveroutput on
SQL> exec pro_clob
SQL> SELECT id, DBMS_LOB.GETLENGTH(dosya) Length FROM test_clob;
SQL> set long 8000
SQL> set pagesize 9000
SQL> SELECT id, dosya FROM test_clob ORDER BY id;
LONG RAW ÖRNEĞİ
CREATE TABLE HR.PROGRAMLAR(DOSYA_ISMI VARCHAR2(30 BYTE),DERLEME_TARIHI DATE,PRG_DOSYA LONG RAW);
hr'ın bu programlar tablosuna örneğin toad'ı kullanarak programları yükleyebilir ve tablodan geri çekebiliriz.
Kaydol:
Kayıtlar (Atom)