

ORA-01110: data file 14:'/opt/oracle/10.2.0.3.0/dbs/MISSING00014'
I forbindelse med nogle natlige flytninger, er det gået lidt galt for nogen databaser. Og f.eks kunne TS PROTALTAB se ud som ovenstående. Kigger man nærmere på operativ systemmet - ligger datafilen tilhørende TS helt fint, men refereres altså med navnet MISSING, og i dette tilfælde fil nummer 14.
Databasen er her en udviklings database, og for tilfældet vil jeg forsøge, at tage systemtest og hente ind via transportable tablespaces.
1. Sørg for datafilen for tablespacet er offline
2. Find en database hvor der ikke findes segment referencer udenfor TS og sæt TS read only.
[workday:SOURCE:/home1/usr/oracle/kbirch/] sqlplus / as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jul 30 08:29:21 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
SQL> begin
2 sys.dbms_tts.transport_set_check('PROTALTAB',TRUE);
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> select * from sys.transport_set_violations;
no rows selected
SQL> alter tablespace PROTALTAB read only;
Tablespace altered.
SQL> exit;
Vend tilbage til target databasen og drop tablespacet
[workday:TARGET:/home1/usr/oracle/kbirch/ALTER]sqlplus / as sysdba
SQL*Plus: Release 10.2.0.3.0 - Production on Wed Jul 30 08:29:21 2008
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options
SQL> drop tablespace protaltab including content;
Tablespace dropped.
SQL> exit;
[workday:TARGET:/home1/usr/oracle/kbirch/ALTER] cd /oradev/databases/TARGET/
[workday:TARGET:/home1/usr/oracle/kbirch/ALTER] ls -ltr protaltab*
-rw-r----- 1 oracle dba 671096832 Jul 3 17:03 protaltab_01.dbf
[workday:TARGET:/home1/usr/oracle/kbirch/ALTER] rm protaltab_01.dbf
Vend tilbage til source databasen og Lav exporten - det skal gøres som sysdba (på Solaris gøres dette med escape karakterer)
[workday:SOURCE:/home1/usr/oracle/kbirch/dump]exp "sys as sysdba" full=N file=protaltab.dmp tablespaces=PROTALTAB transport_tablespace=Y tts_full_check=Y
Punkt 2 hvor vi checkede efter segment referencer og selectede fra sys.transport_set_violations. Hvis der nu havde været nogen, og man tænkte man ville prøve alligevel, er det her det bliver straffet med
ORA-29341: The transportable set is not self-contained
Næste step er kopiering (enten ftp eller cp) af datafil fra source databasen til target samt vores dump fil fra exporten.
Her ligger datafilen i, og placeres (kopieres) i:
[workday:TARGET:/home1/usr/oracle/kbirch/]cp /oradev/databases/SOURCE/protaltab_01.dbf /oradev/databases/TARGET/protaltab_01.dbf
Nu skulle vi så være klar til at importere vores TS metadata.
[workday:TARGET:/home1/usr/oracle/kbirch/] imp "sys as sysdba" file=protaltab.dmp tablespaces=PROTALTAB transport_tablespace=Y datafiles=/oradev/databases/TARGET/protaltab_01.dbf