Oracle veritabanlarındaki endian format nedir ?
Endian Nedir ?
Endian , bilgisayarların multi-byte veri tiplerinin bellekteki saklanma yöntemidir. Diğer bir değişle verinin byte sıralamasını belirler. Little ve Big olmak üzere iki çeşit endian vardır.
Little Endian
Veri , bellekte ters sırada saklanır.
Big Endian
Veri , bellekte düz sırada saklanır.
Örneğin ;
Bir tamsayının 4 bayt (32 bit) olarak saklandığını varsayalım, sonra 0x01234567 (Onaltılık ondalık gösterimi) değerine sahip bir değişken y dört bayt olacak 0x01, 0x23, 0x45, 0x67 şeklinde saklanacaktır. Big endian olan sistemlerde bu veri sırasında , little endian olan sistemlerde ise ters sırada saklanır.
Aşağıdaki resimde big ve little endian farkı belirtilmiştir.
Oracle veritabanlarında , endian format , çalıştığı ortamdaki endian bilgisine göre belirlenir. Veritabanlarındaki endian format , bize ilgili veritabanın hangi ortamlara taşınabileceğini bildirir. Farklı endian formata sahip veritabanlarında standart yöntemlerle taşıma mümkün değildir. Farklı yöntemler kullanılmalıdır.
Veritabannızdaki mevcut endian formatını aşağıdaki sorgu ile görebilirsiniz.
SQL> select name,platform_id,platform_name from v$database; NAME PLATFORM_ID PLATFORM_NAME --------- ----------- ---------------------------------------------------------- ORCL 13 Linux x86 64-bit
Aşağıdaki sorgularda mevcut veritabanınızın hangi ortamlardaki veritabanlarına taşınabileceğini göstermektedir.
Kaynak Big Endian Format (IBM AIX)
SQL> set lines 200 SQL> set pages 200 SQL> COL "Source" FORM a32 SQL> COL "Compatible Targets" FORM a40 SQL> select d.platform_name "Source", t.platform_name "Compatible Targets", endian_format from v$transportable_platform t, v$database d where t.endian_format = (select endian_format from v$transportable_platform t, v$database d where d.platform_name = t.platform_name) order by "Compatible Targets"; Source Compatible Targets ENDIAN_FORMAT -------------------------------- ---------------------------------------- ------------------------------------------ AIX-Based Systems (64-bit) AIX-Based Systems (64-bit) Big AIX-Based Systems (64-bit) Apple Mac OS Big AIX-Based Systems (64-bit) HP-UX (64-bit) Big AIX-Based Systems (64-bit) HP-UX IA (64-bit) Big AIX-Based Systems (64-bit) IBM Power Based Linux Big AIX-Based Systems (64-bit) IBM zSeries Based Linux Big AIX-Based Systems (64-bit) Solaris[tm] OE (32-bit) Big AIX-Based Systems (64-bit) Solaris[tm] OE (64-bit) Big 8 rows selected.
Kaynak Little Endian Format (Linux x86)
SQL> set lines 200 SQL> set pages 200 SQL> COL "Source" FORM a32 SQL> COL "Compatible Targets" FORM a40 SQL> select d.platform_name "Source", t.platform_name "Compatible Targets", endian_format from v$transportable_platform t, v$database d where t.endian_format = (select endian_format from v$transportable_platform t, v$database d where d.platform_name = t.platform_name) order by "Compatible Targets"; Source Compatible Targets ENDIAN_FORMAT -------------------------------- ---------------------------------------- -------------- Linux x86 64-bit Apple Mac OS (x86-64) Little Linux x86 64-bit HP IA Open VMS Little Linux x86 64-bit HP Open VMS Little Linux x86 64-bit HP Tru64 UNIX Little Linux x86 64-bit Linux IA (32-bit) Little Linux x86 64-bit Linux IA (64-bit) Little Linux x86 64-bit Linux x86 64-bit Little Linux x86 64-bit Microsoft Windows IA (32-bit) Little Linux x86 64-bit Microsoft Windows IA (64-bit) Little Linux x86 64-bit Microsoft Windows x86 64-bit Little Linux x86 64-bit Solaris Operating System (x86) Little Linux x86 64-bit Solaris Operating System (x86-64) Little 12 rows selected.