Export-Import_DataPump
Adım Adım Datapump ile Export alma
İşletim sistemi klasör oluşturulup, hem işletim sisteminde hem veritabanında hak verilmesi gerekir.
1- Klasör oluşturulmalı
|
1 |
mkdir /u01/app/oracle/flash_recovery_area/SMP/exp |
2- İşletim sisteminde oracle kullanıcı ve grubuna izin verilmeli
|
1 |
chown -R oracle:oinstall /u01/app/oracle/flash_recovery_area/SMP/exp |
3- Sqlplus ile bağlanıp oracle a bu klsörü tanıtmamız gerekiyor
|
1 |
CREATE DIRECTORY expdir AS '/u01/app/oracle/flash_recovery_area/SMP/exp |
4- Oracle tarafında exp alacak kullanıcıya hak veriyoruz.
|
1 |
GRANT READ, WRITE ON DIRECTORY expdir TO exp_alacak_kullanici_ismi |
Not:Harici SMTP den kullanıcı adı ve şifre sorgulanarak mail göndermek içinde smtp-cli_kurulumu.txt adlı belgenin okunarak paraketlerin kurulması lazım. Bu yazı yakında eklenecek.
Bilgi
|
1 |
SELECT * FROM dba_directories; |
Örnek:
sadece HR şemasini exp almak için (hr,scot,jerry şeklinde birden çok şemanın exportu alınabilir.)
|
1 |
expdp system/system DIRECTORY=expdir DUMPFILE=$ LOGFILE=$ schemas=HR |
full export icin(EXPORT_FULL_DATABASE rolüne sahip olan kullanıcılar full export alabilir.)
|
1 |
expdp system/system DIRECTORY=expdir DUMPFILE=$ LOGFILE=$ FULL=Y " |
|
1 |
expdp mehmet/sifre DIRECTORY=expdir dumpfile=testexp01.dmp |
|
1 |
expdp hr/hr DIRECTORY=dpump_dir1 . . . |
|
1 |
expdp LOGFILE=dpump_dir2:salapati.log . . . |
|
1 |
expdp salapati/password TABLES=employees,departments DUMPFILE=emp-dept.dmp |
|
1 |
expdp system/manager DIRECTORY=dpump_dir1 DUMPFILE=expdat1.dmp |
sistem kullanıcıs ile farklı şemalar export alınabilir.
|
1 |
expdp system/şifre DUMPFILE=scott.dmp SCHEMAS=SCOTT |
Bir tablespace deki tüm objelerin (tablo,index view vb. exportu alınmak istenirse) tablespaces parametresi kullanılır.
default ta sıkıştırma enable durumdadır. kapatılmak istenirse "COMPRESSION=NONE" kullanılması gerekir.
default şema modda çalışır.
|
1 |
expdp hr/hr PARFILE=exp.par |
Parametre Dosyası_1
|
1 2 3 4 |
SCHEMAS=HR DIRECTORY=dpump_dir1 DUMPFILE=system1.dmp SCHEMAS=hr |
|
1 |
expdp PARFILE=myfile.txt |
Parametre Dosyası_2
|
1 2 3 4 5 |
DIRECTORY=dpump_dir1 DUMPFILE=dataonly.dmp CONTENT=DATA_ONLY EXCLUDE=TABLE:"IN ('COUNTRIES', 'LOCATIONS', 'REGIONS')" QUERY=employees:"WHERE department_id !=20 ORDER BY employee_id" |
DataPump ile Full Alınmış exporttan bir şemanın/kullanıcının verilerini belirli bir kullanıcıya/şemaya alınması (kullanıcının kendi tablespace ine)
Kaynak kullanıcı : kaynakK
Hedef kullanıcı : hedefk
Kaynak tablespace : KaynakTBS
Hedef tablespace : HedefTBS
|
1 |
impdp kullanıcı/şifre dumpfile=FullDataPump.dmp schemas=kaynakK remap_schema=KaynakK:HedefK logfile=impdp.log directory=DataPump remap_tablespace=KaynakTBS:HedefTBS |
Parametreler
EXCLUDE=TABLE:"LIKE 'EMP%'" -EMP ile başlayan tabloları alma
EXCLUDE=INDEX
EXCLUDE=SCHEMA:"=’HR'"
INCLUDE=TABLE:"IN (’EMPLOYEES’, 'DEPARTMENTS’)"
INCLUDE=PROCEDURE
INCLUDE=INDEX:"LIKE 'EMP%'"
EXCLUDE=TABLE:"=’EMP'", EXCLUDE=FUNCTION:"=’Fonksiyon_adı"",
ENCRYPTION_PASSWORD=123456
Internetten alıntı
paralel full export almak
|
1 |
$ expdp "'/ as sysdba'" full=y directory=DUMP_DIR dumpfile=expdpmydbfull_%U.dp logfile=expdpmydbfull.log parallel=4 |
#Buradaki parallel=4 parametresi ile işlemin 4 ayrı process aracılığıyla ve 4 ayrı dosyada gerçekleşmesi sağlanıyor. Her bir dosyanın içinde ayrı yedekler bulunmakta ama sağlıklı import edebilmeniz için 4 dosyaya da ihtiyacınız var.
%U sembolü de Oracle’ın paralel şekilde dosya oluşabilmesi için koyduğu bir sembol (rasgele bir harf veremezsiniz). Bu işlem sonunda ilgili dizinde: expdpmydbfull_01.dp, expdpmydbfull_02.dp, expdpmydbfull_03.dp, expdpmydbfull_04.dp isminde 4 adet dosya oluşacaktır. Importu paralel yapmak zorunda değilsiniz. Zaten data pump import işlemi, eski nesil importa göre 50 kata kadar hızlı olduğu için paralel importa pek ihtiyaç duymayabilirsiniz. Bunun yanında 10.2.0.1 sürümünde DATAPUMP ile import ederken istatistikleri hesaplama işlemi çok uzun sürüyor(bug olabilir). Bu nedenle import sırasında EXCLUDE=STATISTICS demenizde hız açısından yarar var. Import bittikten sonra ilgili tabloların istatistiklerini manuel olarak hesaplatmanız çok daha hızlı olacaktır.
Tek tablo exportu
|
1 |
expdp "'/ as sysdba'" tables=EXPUSR.tabloadi directory=DUMP_DIR dumpfile=expdptabloadi.dp logfile=expdptabloadi.log |
Tek tablo exportunu başka kullanıcıya import etmek
|
1 |
impdp "'/ as sysdba'" directory=DUMP_DIR dumpfile=expdptabloadi.dp logfile=expdptabloadi.log remap_schema=EXPUSR:IMPUSR |
Full exporttan, bir schemanın tüm objelerini başka bir şemaya import etmek
|
1 2 |
impdp "'/ as sysdba'" dumpfile=expdpmydbfull_%U.dp schemas=EXPUSR remap_schema=EXPUSR:IMPUSR remap_tablespace='TSEXPUSR':'TSIMPUSR' logfile=impdpimpusr.log directory=DUMP_DIR |
Burada remap_tablespace parametresindeki tırnak işaretlerini ( ’ ) vermeyi unutmayın.
Full exporttan tek bir tabloyu başka bir kullanıcıya import etmek
|
1 |
impdp "'/ as sysdba'" directory=DUMP_DIR dumpfile=expdpmydbfull_%U.dp logfile=impdptabloadi.log remap_schema=EXPUSR:IMPUSR remap_tablespace='TSEXPUSR':'TSIMPUSR' tables=expusr.tabloadi |
Queryli impdp
|
1 2 |
impdp "'/ as sysdba'" directory=DUMP_DIR dumpfile=expdptabloadi.dp logfile=impdptabloadi.log remap_schema=EXPUSR:IMPUSR TABLE_EXISTS_ACTION=replace query=tabloadi:"where kolonadi1<1000000 style="font-weight: bold;">multiple |
remap_schema ve remap_tablespace importu
|
1 |
impdp "'/ as sysdba'" dumpfile=expdpmydbfull_%U.dp remap_schema=EXPUSR:IMPUSR,EXPUSR_ING:IMPUSR_ING remap_tablespace='TSEXPUSR':'TSIMPUSR','TSEXPUSRING':'TSIMPUSRING' directory=DUMP_DIR |
Tablonun rasgele %5’inin exportunu almak
|
1 |
expdp "'/ as sysdba'" tables=EXPUSR.tabloadi directory=DUMP_DIR dumpfile=expdptabloadi.dp logfile=expdptabloadi.log sample=5 |
Flashback kullanarak geçmiş bir zamana ait verilerin exportunu almak
|
1 2 |
expdp "'/ as sysdba'" full=y directory=DUMP_DIR dumpfile=expdpmydbfull_%U.dp logfile=expdpmydbfull.log parallel=4 FLASHBACK_TIME="TO_TIMESTAMP( '30-12-2007 00:13:47','DD-MM-YYYY HH24:MI:SS')" |
Parametre dosyası kullanarak export almak
|
1 |
expdp "'/ as sysdba'" parfile=parametredosyam(full path i ile birlikte) |
## Parametre dosyası kullanmak özellikle UNIX/Linux ortamlarında bazen işleri kolaylaştırmaktadır. Çünkü, aşağıdaki INCLUDE veya QUERY gibi parametrelerde tırnak işaretleri ve boşluk geçen ifadeleri kullanabilmeniz için bu ortamlarda karakterini doğru bir şekilde kullanmaya özen göstermek gerekir. Parametre dosyası içinde ise bu karakteri kullanmanıza gerek kalmaz. Bu nedenle işler kolaylaşır.
parametre dosyası örneği (1)
SCHEMAS=(EXPUSR,EXPUSRING)
INCLUDE=TABLE:"LIKE '%KUTUK%'"
DIRECTORY=DUMP_DIR
DUMPFILE=expdpusr_usring.dp
LOGFILE=expdpusr_usring.log
parameter file örneği (2)
full=y
directory=DUMP_DIR
dumpfile=expdpfull.dp
logfile=expdpfull.log
exclude=SCHEMA:"=’SYS'"
exclude=SCHEMA:"=’SYSTEM'"
exclude=SCHEMA:"=’SYSMAN'"
exclude=SCHEMA:"=’WMSYS'"
exclude=SCHEMA:"=’WK_TEST'"
exclude=SCHEMA:"=’WKSYS'"
exclude=SCHEMA:"=’OLAPSYS'"
exclude=SCHEMA:"=’OUTLN'"
Sadece metaverinin exportu (1)
|
1 |
expdp "'/ as sysdba'" schemas=hr dumpfile=expdphrobjects.dp logfile=expdphrobjects.log include=package,function,procedure,trigger directory=DUMP_DIR |
#Fakat burada, include a aldığınız türler dışındaki objelere ihtiyacınız olması durumunda çaresiz kalırsınız.
Sadece metaverinin exportu (2)
|
1 |
expdp "'/ as sysdba'" dumpfile=expdpexpusrsource.dp logfile=expdpexpusrsource.log full=y content=METADATA_ONLY directory=DUMP_DIR |
# Aldığınız bu exportu başka bir şemaya import ederseniz tüm kayıt desenleri ve objeler yeni şemada bulunur ve tablolarda veri olmaz. Ancak, aşağıdaki gibi sqlfile parametresini de kullanırsanız import işlemi gerçekleşmez ve tüm işlemlerin scripti belirlediğiniz dosyaya yazılır. Siz de buradan örneğin istediğiniz triggerın scriptine erişebilirsiniz.
|
1 |
impdp "'/ as sysdba'" dumpfile=expdpexpusrsource.dp logfile=impdpexpusrsource.log sqlfile=hr.sql schemas=expusr directory=DUMP_DIR [isterseniz include=function,procedure,package,trigger vs.vs] |
Export almadan network_link ile import etme
|
1 |
impdp dumdum/dumdum directory=DUMP_DIR tables=gecici network_link=todigerdbhr remap_schema=hr:dumdum remap_tablespace='hr':'TSXXX' |
DMP dosyasının içeriğini görmek için
|
1 |
imp kullanıcı_ismi/sifre file= log= show=yes full=yes |
Dump içeriğinde tablespace leri oluşturduktan sonra full imp verilebilir. kullanıcılara atanan default tbs leri bulamadığında aynı yola tbs oluşturmaya çalışır aynı path yoksa (örneğin windows server dan unix e alırken ) tbs yi oluşturmaz ve imp işlemini sonlandırır.
Create TableSpace
|
1 2 3 4 5 6 7 8 9 |
CREATE TABLESPACE test_TBS DATAFILE '/u01/app/oracle/oradata/smp/test01.dbf' SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE 1024M LOGGING PERMANENT EXTENT MANAGEMENT LOCAL AUTOALLOCATE BLOCKSIZE 8K SEGMENT SPACE MANAGEMENT MANUAL FLASHBACK ON; |
FLASHBACK ON 10G ve üzeri ise kullanılabilir.
Drop Tablespace
|
1 |
DROP TABLESPACE TestTBS INCLUDING CONTENTS AND DATAFILES; |
Create User
10G
|
1 2 3 4 |
CREATE USER testuser IDENTIFIED BY "testuser" DEFAULT TABLESPACE deneme1 TEMPORARY TABLESPACE "TEMP" QUOTA UNLIMITED ON deneme1; |
Create User
9i
|
1 2 3 4 |
CREATE USER Mehmet IDENTIFIED BY "mehmet" DEFAULT TABLESPACE TestTBS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON TestTBS; |
User permissions
10G
|
1 2 3 4 5 |
GRANT "CONNECT" TO testuser; GRANT "IMP_FULL_DATABASE" TO testuser; GRANT "RESOURCE" TO testuser; ALTER USER testuser DEFAULT ROLE NONE; GRANT create session TO testuser; |
User permissions
9i
|
1 2 3 4 5 |
GRANT "CONNECT" TO Mehmet; GRANT "IMP_FULL_DATABASE" TO Mehmet; GRANT "RESOURCE" TO Mehmet; ALTER USER Mehmet DEFAULT ROLE NONE; GRANT create session TO Mehmet; |
Imp
|
1 |
imp mehmet/mehmet file=/u01/ONDBA_15112006.dmp log=imp.log buffer=30000 touser=mehmet fromuser=ondba |
