15
VERİTABANI YÖNETİMİ DATABASE’I ARCHIVE MODA ALMA 7/24 çalışan database’ler için Archive moda olmak çok öenmlidir,çünkü bu sistemeler herhangi bir veri kaybına tahammülü olmayan sistemlerdir. Archive Moda olmayan bir sistem şu şekildedir. Redologlar dairesel bir şekilde işlem görür. Redologlar bir check pointten sonra yeniden kullanılabilir Bu Sistemde Redolog filelar Archive dosyalarına yazılmaz böylece her bir yeni bilgi redologlar üzerine yazılır,bu şekilde eski bilgiler ezilmiş üzerine yenileri gelmiş olur. * Herhangi bir datafile üzerinde arıza oluştuğu zaman,İlgili datafile drop yada database restore olana kadar database çalışmayacaktır. * Backup almak için operating sistem komutları kullanılacaktır,aynı zamanda database’in kapalı olması gerekmektedir. * Her backup setine datafileları ve control fileları muhakak koymalıyız fakat online redologlara gerek yoktur. * Her seferinde online redologlar ezildiği için herhangi bir tehlike anında geriye dönüş olmayacaktır. Restore Anında ise; Restore etmek için full datafile ları ve control file ları kullanmak zorundayız.

DATABASEI ARCHIVE MODA ALMA

Embed Size (px)

Citation preview

Page 1: DATABASEI ARCHIVE MODA ALMA

VERİTABANI YÖNETİMİ

DATABASE’I ARCHIVE MODA ALMA

7/24 çalışan database’ler için Archive moda olmak çok öenmlidir,çünkü bu sistemeler herhangi bir veri

kaybına tahammülü olmayan sistemlerdir.

Archive Moda olmayan bir sistem şu şekildedir.

Redologlar dairesel bir şekilde işlem görür.

Redologlar bir check pointten sonra yeniden kullanılabilir

Bu Sistemde Redolog filelar Archive dosyalarına yazılmaz böylece her bir yeni bilgi redologlar üzerine

yazılır,bu şekilde eski bilgiler ezilmiş üzerine yenileri gelmiş olur.

* Herhangi bir datafile üzerinde arıza oluştuğu zaman,İlgili datafile drop yada database restore olana

kadar database çalışmayacaktır.

* Backup almak için operating sistem komutları kullanılacaktır,aynı zamanda database’in kapalı olması

gerekmektedir.

* Her backup setine datafileları ve control fileları muhakak koymalıyız fakat online redologlara gerek

yoktur.

* Her seferinde online redologlar ezildiği için herhangi bir tehlike anında geriye dönüş olmayacaktır.

Restore Anında ise;

• Restore etmek için full datafile ları ve control file ları kullanmak zorundayız.

Page 2: DATABASEI ARCHIVE MODA ALMA

• Yada export uygulaması ve import uygulaması kullanılarak backup/recovery yapılabilir.Bu şekilde

işleme incomplate recovery olarak adlandırılmaktadır.

Archive Modda olan bir sistem şu şekildedir.

• Bu şekilde her bir değişiklik Archive dosylarına yazılmaktadır.

• Data kayıplarına karşı en yüksek düzeyde koruma sağlanmış olacaktır

• Database online modda da backup alınabilir.

Restore aşamasında ise,

• Restore için ilgili bozuk dta file’ın backup’ı ve online redologlar yeterlidir

• Point in time recovery dediğimiz kavram ile database’i istediğimiz ana getirebiliriz.

• Database i ancak archive redologların son tarihine kadar restore edebiliriz.

• Aynı şekilde database ilgili bir SCN anına kadar da restore edebiliriz.

Page 3: DATABASEI ARCHIVE MODA ALMA

Archive moda sistem şekildeki gibi alınmaktadır.

//YUKARIDAKİ İŞLEMLER TOAD İLE

YAPILIR(LOG_ARCHİVE_DEST,LOG_ARCHİVE_FORMAT,LOG_ARCHİVE_START)

VE SİSTEM AÇILIP KAPANIR.

SQL>select name,log_mode from v$database; ile database archive moda olup olmadığı kontrol edilir.

LOG_ARCHIVE_MAX_PROCESSES parametresi ile arşiv proseslerinin sayısı kontrol edilebilir.

SQL > ALTER SYSTEM SET LOG_ARCHIVE_MAX_PROCESSES = 3;

Page 4: DATABASEI ARCHIVE MODA ALMA

Archive Loglarının yazılacağı yer şu komutlarlada ayarlanabilir.

SQL> ARCHIVE LOG LIST; Arşiv listesi görülebilir.

UNIX:

SQL> ALTER SYSTEM ARCHIVE LOG START TO ‘/ORADATA/ARCHIVE1‘;

WINDOWS :

SQL> ALTER SYSTEM ARCHIVE LOG START TO ‘c:\u04\Oracle\TEST\log‘;

Page 5: DATABASEI ARCHIVE MODA ALMA

Parametre file kullanılarak arşivlemenin otomatik olup olmayacağı ayarlanabilir.

1-) SQL>select name,log_mode from v$database; ile database archive moda olup olmadığı

kontrol edilir.

SQL> select * from v$log; ile sistemde bulunan log dosyalarının konumları tespit edilir.

SQL> select * from v$datafile; ile sistemde bulunan data dosyalarının konumları tespit edilir.

SQL> select * from v$controlfile; ile sistemde bulunan control dosyalarının konumları tespit edilir.

2-) SQL> shutdown abort/immediate/transactional; ile sistem kapatılır.

$ ps -fe|grep -i oracle ile sistemde oracle’a ait iş kalıp kalmadığı sorgulanabilir.

3-) $ORACLE_HOME/dbs altında bulunan init.ora dosyasının bir yedeği alınmalıdır.

Daha sonra init.ora açılıp içine

log_archive_dest= d:\archive

log_archive_start = true

SQL > CREATE SPFILE='/u01/oracle/dbs/spfilemynewdb.ora' FROM

PFILE='/u01/oracle/admin/initmynewdb/scripts/init.ora'; ile PFİLE dan SPFİLE oluşturulması sağlanır.

4-) Artık Database’i archive moda açabiliriz.

SQL> startup mount newdb

SQL> alter database newdb archivelog;

SQL> alter database newdb open;

5-) Archive Logların ilgili dizine yazması içinde,

SQL> alter system switch logfile; komutunu kullanıyoruz.

Page 6: DATABASEI ARCHIVE MODA ALMA

Otomatik arşivlemeyi durdurmak için,

SQL > ALTER SYSTEM ARCHIVE LOG STOP; komutu kullanılır. Yada log_archive_start parametresi

false yapılır.

Eğer logların birden fazla yere yazması isteniyorsa aşağıdaki parametreler ayarlanmalıdır.

log_archive_dest_1 = "LOCATION=/archive1 MANDATORY REOPEN "

log_archive_dest_2 = " SERVICE=standby_db1 MANDATORY REOPEN=600"

log_archive_dest_3 ="LOCATION=/archive2 OPTIONAL"

---Burdaki location Local Disk alanı anlamına gelir, Service ise Uzaktaki Disk alanı anlamına

gelir.Mandotary ‘nin anlamı arşivleme esnasında online redologların tekrar yazılabilmesi için arşivlemenin

doğru olarak tamamlanması gerekmektedir.Optional de ise arşivlemenin doğru tamamlanmaması önemli

değildir.

SQL> ARCHIVE LOG LIST; komutu ile archiveleme durumu hakkında bilgi alınabilir.

Eğer arşivlemenin elle yapılması isteniyorsa;

ALTER SYSTEM ARCHIVE LOG SEQUENCE 052; komutunu kullanmak yeterlidir.

Page 7: DATABASEI ARCHIVE MODA ALMA

LOG_ARCHIVE_MIN_SUCCEED_DEST = 2 Bu parametre ile destination sayısını minimize

edebiliriz.Minumum 2 tane örnekteki gibi kullanılmalıdır.Dikkat edilmesi gereken destinationlarda

mandotary olmalıdır.

SQL > ALTER SYSTEM SET log_archive_dest_state_3 = DEFER

Yukarıdaki komut ile 2 nolu destinationu kulanılmaz hale getirebiliriz.

SQL > ALTER SYSTEM SET log_archive_dest_state_3 = ENABLE

Yukarıdaki komut ile 2 nolu destinationu kulanılabilir hale getirebiliriz.

LOG_ARCHIVE_FORMAT bize arşiv dosyalaranın nasıl formatlanacağı hakkında bilgi verir.

Page 8: DATABASEI ARCHIVE MODA ALMA

log_archive_format=%s.arc gibi değerler yazılmalıdır.

%s veya %S ile Log’ların sıra numarasını (Sequence #)

%t veya %T ile Log’ların thread numarasını (Sequence #)

.arc ile de uzantısını belirlemiş oluyoruz.

Yukarıdaki viewlardan ise arşivleme hakkında bilgi alabiliriz.

V$ARCHIVED_LOG: Kontrol file dan arşivleme bilgisini gösterir.

V$ARCHIVE_DEST: Mevcut instance üzerinde tüm Arşivleme bilgisini gösterir.

SELECT destination, binding, target, status

FROM v$archive_dest;

DESTINATION BINDING TARGET STATUS

---------------------- --------- ------- --------

/db1/oracle/DEMO/arch MANDATORY PRIMARY VALID

/db2/oracle/DEMO/arch OPTIONAL PRIMARY DEFERRED

standbyDEMO OPTIONAL STANDBY ERROR

OPTIONAL PRIMARY INACTIVE

OPTIONAL PRIMARY INACTIVE

V$LOG_HISTORY: Kontrol file daki log bilgilerini verir.

V$DATABASE: Arşivlemenin mevcut durumunu verir.

V$ARCHIVE_PROCESSES: Arşivleme prosesleri hakkında bilgi alabiliriz.

Page 9: DATABASEI ARCHIVE MODA ALMA

SELECT * FROM v$archive_processes;

PROCESS STATUS LOG_SEQUENCE STAT

------------- ---------- ------------- -----

0 ACTIVE 2014 BUSY

1 ACTIVE 0 IDLE

2 ACTIVE 0 IDLE

3 STOPPED 0 IDLE

4 STOPPED 0 IDLE

5 STOPPED 0 IDLE

6 STOPPED 0 IDLE

7 STOPPED 0 IDLE

8 STOPPED 0 IDLE

9 STOPPED 0 IDLE

10 rows selected.

SQL> ARCHIVE LOG LIST;

Database log mode Archive mode

Automatic archival Enabled

Archive destination /ORADATA/ARCHIVE1/

Oldest online log sequence 1304

Next log sequence to archive 1305

Current log sequence 1305

ORACLE EXPORT VE IMPORT İŞLEMİ

9i ve öncesinde imp ve exp ile yaptığımız işlemleri expdp/impdp ile çok daha hızlı yapabilriiz.Öncelikli

olarak bu işlem için bir directory tanımlamalı ve bu directory i kullanack user veya userlara gerekli hakları

vermeliyiz.

SQL > CREATE OR REPLACE DIRECTORY dump_dir AS '/home/oracle/archive';

SQL > GRANT READ, WRITE ON DIRECTORY dump_dir TO public;

Bu işlemden sonra aşağıdaki komutla bir şemanın exportunu alabiliriz.İstersek işlemci sayısına göre

paralellik verip işlemleri hızlandırab,ilriiz.

CMD > expdp system/oracle schemas=BAHADIR directory=dump_dir dumpfile=FILE.dmp

logfile=FILE.log

Page 10: DATABASEI ARCHIVE MODA ALMA

istersek FULL=Y ibaresini kullanıp full db exportuda alabiliriz.istersek sadece tekbir tablo yada tabloların

exportunuda alabiliriz.

CMD > expdp system/oracle FULL=Y directory=dump_dir dumpfi le=FILE.dmp parallel=8

logfile=FILE.log

CMD > > expdp system/xxxx@DBNAME1 schemas=SCHEMA_NAME

TABLES=deneme1,deneme2 directory=pump_dir dumpfi le=FILE.dmp parallel=8

logfile=FILE.log

Bu işlemlerden sonra sıra tam tersi olrak alınan bir exportun import edilmesi vardır.Eğer x bir userla

alınmış export y user'ına import edilecekse remap şema yapmalıyız,yine aynı şekilde şemanın objeleri t1

tablepsacesinden alınmışşsa import ederken t2 tablespace ine import edilecekse remap_tablespace

yapmalıyız.paralel yapma imkanımız varsa yine yapmalıyız.

CMD > impdp system/oracle schemas=BAHADIR directory=dump_dir dumpfile=FILE.dmp

logfile=FILE2.log

bazen başka bir db deki bir şemayı kendi makinamıza almak istiyorsak iki makina arasındaki db linkini

kullanrak sadece aşağıdaki komutu kullanarak işlerimizi yapabiliriz.

CMD > impdp system/xxxx schemas=SCHEMA_NAME

remap_schema=SCHEMA1:SCHEMA2 remap_tablespace=TAB:HUUU directory=pump_dir

network_link=LINK_NAME parallel=4 logfile=FILE.log

http://www.oracle-base.com/articles/11g/PartitioningEnhancements_11gR1.php

Oracle Data Pump ile Single parit iton export/transport

Page 11: DATABASEI ARCHIVE MODA ALMA

Oracle 11g ile birlikte single table partitionlarını veritabanları arasında taşımak mümkün hale gelmiştir,

Normal olarak tablonun tamamını taşımaktansa sadece belli partition’unu taşımak çok daha mantıklıdır.

Bunu örnekle dahada iyi açıklayabilmek adına partititonlarımızı saklayacak 2 tane tablespace yaratacağız

ve test açamçlı olarak bu tablespace ler üzerinde quotalar vereceğiz.

[oracle@rac1 ~]$ sqlplus '/as sysdba'

SQL> CREATE TABLESPACE transport_test_ts_1 DATAFILE 'tt_ts1.dbf' SIZE 128K AUTOEXTEND ON NEXT 128K;

SQL> CREATE TABLESPACE transport_test_ts_2 DATAFILE 'tt_ts2.dbf' SIZE 128K AUTOEXTEND ON NEXT 128K;

SQL> ALTER USER test QUOTA UNLIMITED ON transport_test_ts_1 QUOTA UNLIMITED ON transport_test_ts_2;

SQL> CONN test/test

Test kullanıcımızla bağlandıktan sonra örnek bir partition tablo yaratıyoruz ve içini veri ile dolduruyoruz.

SQL> CREATE TABLE transport_test_tab ( id NUMBER NOT NULL, code VARCHAR2(10) NOT NULL, description VARCHAR2(50), created_date DATE, CONSTRAINT transport_test_pk PRIMARY KEY (id))PARTITION BY RANGE (created_date)( PARTITION part_2010 VALUES LESS THAN (TO_DATE('01-10-2010','DD-MM-YYYY')) TABLESPACE transport_test_ts_1, PARTITION part_2011 VALUES LESS THAN (TO_DATE('01-10-2011','DD-MM-YYYY')) TABLESPACE transport_test_ts_2);

SQL> INSERT INTO transport_test_tab VALUES (1, 'ONE', '1 ONE', SYSDATE);SQL> INSERT INTO transport_test_tab VALUES (2, 'TWO', '2 TWO', SYSDATE);SQL> INSERT INTO transport_test_tab VALUES (3, 'THREE', '3 THREE', ADD_MONTHS(SYSDATE,12));SQL> INSERT INTO transport_test_tab VALUES (4, 'FOUR', '4 FOUR', ADD_MONTHS(SYSDATE,12));SQL> COMMIT;

Tablomuzun istatistiğini alıp ,tablomuza ait partitionları ve içerdikleri kayıtlara bir bakalım.

Page 12: DATABASEI ARCHIVE MODA ALMA

SQL> EXEC DBMS_STATS.gather_table_stats(USER, 'TRANSPORT_TEST_TAB');

SQL> COLUMN table_name FORMAT A20SQL> COLUMN partition_name FORMAT A20SQL> COLUMN tablespace_name FORMAT A20SQL> set linesize 1000

SQL> SELECT table_name, partition_name, tablespace_name, num_rowsFROM user_tab_partitionsWhere table_name='TRANSPORT_TEST_TAB';

TABLE_NAME PARTITION_NAME TABLESPACE_NAME NUM_ROWS-------------------- -------------------- -------------------- ----------TRANSPORT_TEST_TAB PART_2010 TRANSPORT_TEST_TS_1 2TRANSPORT_TEST_TAB PART_2011 TRANSPORT_TEST_TS_2 2

Görüldüğü gibi her partition 2 şer kayıt içeriyor.

Transport yapacağımız tablespace ler kesinlikle readonly modda olmalıdır.

SQL> ALTER TABLESPACE transport_test_ts_1 READ ONLY;

Şu an herşey hazır 2010 parititonunu export yapabiliriz.

[oracle@rac1 ~]$ sqlplus '/as sysdba'

SQL> CREATE OR REPLACE DIRECTORY data_pump_dir AS '/u01/app11g/backup/';SQL> GRANT READ, WRITE ON DIRECTORY data_pump_dir TO public;

[oracle@rac1 ~]$ expdp system/oracle tables=test.transport_test_tab:part_2010 transportable=always directory=data_pump_dir dumpfile=part_2010.dmp

Yapılan export’un ouput’u aşağıdaki gibi olacaktır.

Export: Release 11.2.0.1.0 - Production on Wed Sep 8 13:35:17 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsStarting "SYSTEM"."SYS_EXPORT_TABLE_01": system/******** tables=test.transport_test_tab:part_2010 transportable=always directory=data_pump_dir dumpfile=part_2010.dmp Processing object type TABLE_EXPORT/TABLE/PLUGTS_BLKProcessing object type TABLE_EXPORT/TABLE/TABLEProcessing object type TABLE_EXPORT/TABLE/INDEX/INDEXProcessing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINTProcessing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSProcessing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICSProcessing object type TABLE_EXPORT/TABLE/END_PLUGTS_BLKMaster table "SYSTEM"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded******************************************************************************

Page 13: DATABASEI ARCHIVE MODA ALMA

Dump file set for SYSTEM.SYS_EXPORT_TABLE_01 is: /u01/app11g/backup/part_2010.dmp******************************************************************************Datafiles required for transportable tablespace TRANSPORT_TEST_TS_1: /u01/app11g/oracle/product/11.2.0/db_1/dbs/tt_ts1.dbfDatafiles required for transportable tablespace USERS: /u01/app/oracle/oradata/EDUCATE/users01.dbfJob "SYSTEM"."SYS_EXPORT_TABLE_01" successfully completed at 13:36:23

Şimdi geri dönme yani backuptan geri alma testi yapacağız bunun için ilgili tabloyu ve onun ait olduğu

tablespace leri drop ediyoruz.

[oracle@rac1 ~]$ sqlplus '/as sysdba'

SQL> DROP TABLE test.transport_test_tab;

SQL> DROP TABLESPACE transport_test_ts_1 INCLUDING CONTENTS;

SQL> DROP TABLESPACE transport_test_ts_2 INCLUDING CONTENTS AND DATAFILES;

Dikkat edersek 1.tablespace te sadece content yani syntax bilgisini drop ettik,tablespace in datafile’ı halen

mevcuttur.

Şimdi artık aldığımız export backup ındaki bilgiyi import edebiliriz.

[oracle@rac1 ~]$ impdp system/oracle partition_options=departition dumpfile=part_2010.dmp transport_datafiles='tt_ts1.dbf'

İşlemin output bilgiside aşağıdaki gibi olacaktır,

$ impdp system/password partition_options=departition dumpfile=part_2007.dmp transport_datafiles='/u01/app/oracle/oradata/DB11G/tt_ts_1'

Import: Release 11.2.0.1.0 - Production on Wed Sep 8 13:42:38 2010

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsMaster table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloadedStarting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system/******** partition_options=departition dumpfile=part_2010.dmp transport_datafiles=tt_ts1.dbf Processing object type TABLE_EXPORT/TABLE/PLUGTS_BLKProcessing object type TABLE_EXPORT/TABLE/TABLEProcessing object type TABLE_EXPORT/TABLE/INDEX/INDEXORA-39083: Object type INDEX failed to create with error:ORA-00942: table or view does not existFailing sql is:

Page 14: DATABASEI ARCHIVE MODA ALMA

CREATE UNIQUE INDEX "TEST"."TRANSPORT_TEST_PK" ON "TEST"."TRANSPORT_TEST_TAB" ("ID") PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(SEG_FILE 4 SEG_BLOCK 635 OBJNO_REUSE 85559 INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" PARALLEL 1 Processing object type TABLE_EXPORT/TABLE/CONSTRAINT/CONSTRAINTORA-39083: Object type CONSTRAINT failed to create with error:ORA-00942: table or view does not existFailing sql is:ALTER TABLE "TEST"."TRANSPORT_TEST_TAB" ADD CONSTRAINT "TRANSPORT_TEST_PK" PRIMARY KEY ("ID") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(SEG_FILE 4 SEG_BLOCK 635 OBJNO_REUSE 85559 INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS" ENABLEProcessing object type TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICSORA-39112: Dependent object type INDEX_STATISTICS skipped, base object type INDEX:"TEST"."TRANSPORT_TEST_PK" creation failedProcessing object type TABLE_EXPORT/TABLE/END_PLUGTS_BLKJob "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" completed with 3 error(s) at 13:42:50

Tablo segmenti tablo ismi ve partition isimlerinin kombinasyonu ile isimlendirilmiştir, bu yüzden buna bağlı

olan objeler hata vermiştir çünkü yanlış tablo ismini aramaktadırlar.O yüzden verilen hataları görmezden

geliyoruz. Şimdi artık oluşan yeni segmenti aşağıda görebiliriz.

[oracle@rac1 ~]$ sqlplus '/as sysdba'

SQL> CONN test/test

SQL> EXEC DBMS_STATS.gather_schema_stats(USER);

SQL> COLUMN table_name FORMAT A30SQL> COLUMN tablespace_name FORMAT A20SQL> set linesize 1000

SQL> SELECT table_name, tablespace_name, partitioned, num_rowsFROM user_tablesWhere tablespace_name like '%TRANSPORT_TEST_TS_1%';

TABLE_NAME TABLESPACE_NAME PAR NUM_ROWS------------------------------ -------------------- --- ----------TRANSPORT_TES_PART_2007 TRANSPORT_TEST_TS_1 NO 2

1 row selected.

NORMAL EXPORT/IMPORT

[oracle@rac1 ~]$ exp system/oracle owner=DOGANHAYAT file=/temp_data1/DOGANHAYATExport.dmp log=/temp_data1/DOGANHAYATExport.log

[oracle@rac1 ~]$ imp system/oracle fromuser=DOGANHAYAT touser=DOGANHAYAT file=/temp_data1/DOGANHAYATExport.dmp log=/temp_data1/DOGANHAYATExport.log buffer=10000000 commit=y &

Page 15: DATABASEI ARCHIVE MODA ALMA

[oracle@rac1 ~]$ buffer=10000000 commit=y full=y statistics=none &

SQL> @/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/utlrp.sql;SQL> @?/rdbms/admin/utlrp.sql;