transportabelt tabellutrymme över olika plattformar
___________________________________________________
i vårt exempel kommer vi att transportera ett bordrum som heter TEST. Tabellutrymmet ska vara fristående utan några objekt som hänvisar till andra tabellutrymmen så för att kontrollera om tabellutrymmet os fristående med hjälp av nedanstående fråga:
utför dbms_tts.transport_set_check (’TEST’, TRUE, TRUE);
välj * från transport_set_violations;
om du har korsrefererade objekt. Släpp dessa objekt från TESTTABELLEN(Observera att detta görs i en testmiljö så att jag enkelt kan släppa de korsrefererade objekten. Tappa inte några föremål utan att rådfråga din senior DBA i en produktionsmiljö. Du vet aldrig vilket objekt som har vilket beroende. Antag att du har index i testtabellen som pekar på tabeller i ett annat tabellutrymme. Du kan säkert flytta dessa index med hjälp av nedan PL / sql-proceduren:
börja
för c1 in (välj indexnamn a1 från user_index)
loop
kör omedelbart ’alter index ’||c1.A1 / / ’ återuppbygga online tablespace <tablespace name>’;
end loop;
end;
/
fortsätt nu och kontrollera överträdelser igen. Om du får ett fel som:
välj * från transport_set_violations;
överträdelser
—————————
överträdelse 46: kontakta Oracle support
överträdelse 46: kontakta Oracle support
överträdelse 46 : kontakta Oracle support
kör den här frågan för att kontrollera varför överträdelsen kastar
välj TRIM (OBJ1_OWNER)//’, ’ / / TRIM(OBJ1_NAME) || ’, ’ ||
TRIM (OBJ1_SUBNAME)//’, ’ / / TRIM (OBJ1_TYPE) || ’, ’ ||
TRIM (TS1_NAME)//’, ’ / / TRIM (OBJ2_OWNER) || ’, ’ ||
TRIM (OBJ2_NAME)//’, ’ / / TRIM(OBJ2_SUBNAME) || ’, ’ ||
TRIM (OBJ2_TYPE)//’, ’ / / TRIM (TS2_NAME) || ’, ’ ||
TRIM (CONSTRAINT_NAME)||’, ’ / / TRIM(REASON)
från PLUGGABLE_SET_CHECK
där MESG_ID=46;
detta kommer att ge utmatning av vad exakt överträdelsen är för det transportabla tabellutrymmet. Fixa dessa överträdelser och starta själva proceduren för transport av bordrummet. I mitt exempel hade jag använt Transparent Data Encryption (TDE) för några kolumner i databasen. Frågan rapporterade att du inte kan använda TT_TBS när du har krypterade kolumner. Så jag var tvungen att dekryptera kolumnerna som jag krypterade med en fråga som.
välj * från dba_encrypted_columns;
ändra TABELLKONTO ändra (kortinnehavare dekryptera);
efter dekryptering av kolumnerna. Vi fortsätter vidare
1. Kontrollera ENDIAN-versionen av både källa och mål med hjälp av nedanstående skript:
—
— vilka är de tillgängliga transportabla Bordplattformsmöjligheterna?
—
välj
platform_name
, endian_format
från V$transportable_platform
Beställ efter platform_name
;
—
— vad är den nuvarande ENDIAN-ness av min databas och plattform?
—
välj
D.name
, TP. endian_format
från
v$transportable_platform TP
, v$databas d
där TP.platform_name = D. platform_name
;
det kommer att rapportera om ENDIAN är ”liten” eller ”stor”. Om endian är densamma på både mål och källa, behöver du inte gå för transportabelt bordrum. Du kan helt enkelt exportera tabellutrymmet och importera det till målet. Om inte fortsätt som under
2. Ändra tabellutrymmet och sätt det i skrivskyddat läge på källan. I vårt exempel kommer vi att transportera ett tabellutrymme som kallas TEST till målservern.
ALTER TABLESPACE test skrivskyddad;
3. exportera nu tabellrymdmetadata.
##Windows # # #
exp USERID= ’system / oracle@Source som SYSDBA’ TRANSPORT_TABLESPACE=y TABLESPACES=test FILE=test_repository.dmp log=test_repository.txt
###Unix # # #
exp \ ’sys / oracle som SYSDBA \’ TRANSPORT_TABLESPACE=y TABLESPACES=test FILE=test_repository.dmp log=test_repository.txt
gå till target och kopiera dumpfile till valfri plats tillsammans med datafilerna i det tabellutrymmet.
imp \’sys/oracle som SYSDBA\’ TABLESPACES=test TRANSPORT_TABLESPACE=y FILE=test_repository.dmp datafiles=’users_01.dbf’
4. Till ovan är för när du exporterar ett tabellutrymme till en maskin med samma endian information. Om du en annan endian fortsätt som nedan. Vi kommer att konvertera från Solaris 64-bitars SPARC (BIG) till Windows 32-bitars(Little)
5. Konvertera datafilerna med RMAN och db_file_name_convert
#använd inte den här metoden: på Källmaskin: med originalfilnamn
RMAN> konvertera tabellutrymme ’TEST’
till plattform ’Microsoft Windows IA (32-bit)’
format=’ / datafiles / rmanbkp / %N_ % f ’
parallellitet = 4;
## använd den här metoden: på Källmaskinen: Med konverterat filnamn filnamn
RMAN> konvertera tablespace ’TEST’
2> till plattformen ’Microsoft Windows IA (32-bit)’
3> db_file_name_convert ’/ datafiles / oradata / SWX’,’ / datafiles / rmanbkp ’
4> parallellitet = 4;
när filerna har konverterats kan de hittas i ’/ datafiles / rmanbkp’. Kopiera dessa konverterade filer tillsammans med metadatadump av TT_TBS och lägg den på källservern och kör import:
imp USERID= ’system / lösenord@mål som SYSDBA’
TRANSPORT_TABLESPACE = y
DATAFILES=’C:\datafiles\test01.DBF’, ’ C:\datafiles\test02.DBF ’
TABLESPACES=test
FILE = test_repository.dmp
i ovanstående fall konverterade vi filerna på källplattformen. Du kan dock göra det på målplattformen också. Till exempel kan du kopiera fil test01.dbf tillsammans med metadatadumpen på en Windows Server 2003 32-bitars målmaskin och konvertera den där:
RMAN> konvertera
2 > datafil ’c:/users01.DBF ’ # # katalog där du lägger din datafil från källservern
3 > format ’c:/datafiles/rmanbkp/%N_%f’ # # katalog där du får konverterad fil
4> ;
detta tillvägagångssätt skapar en fil i det format som anges i katalogen.
men varför skulle du vilja konvertera datafilerna på målplattformen, exakt? En orsak kan vara kortare stilleståndstid, vilket kräver att tabellutrymmena endast ska läsas endast under kopians varaktighet till målvärden. Du kan tredubbla datafilen, göra tabellutrymmet läsbart, bryta den tredje spegeln och omedelbart göra tabellutrymmet läs/skriv. Denna tredje spegel kan sedan monteras på målsystemet och konverteras på fritiden. Detta arrangemang minimerar varaktigheten för vilken tabellutrymmet måste förbli skrivskyddat.
en annan anledning kan vara prestanda. OLTP-databasen kan vara under konstant belastning och användning av RMAN-konverteringsoperationen kan påverka systemet mer än önskat. Istället kan konverteringen laddas ner till data warehouse-servern, där fler processorer vanligtvis är tillgängliga för parallella operationer.