tablespaces -ийг өөр систем рүү хурдан шилжүүлэх аргыг “Transporting Tablespace” гэж нэрлэдэг. Жишээн дээр тайлбарлая.
A server – Source server (node214)
B server – Target server (node215)
A серверээс В сервер руу шилжүүлнэ
A сервер дээр хийгдэх үйлдлүүд
Юуны өмнө ямар системээс хааш нь шилжүүлэх гэж байгааг тодорхойлоод форматын мэдээллийг sys хэрэглэгчээр V$TRANSPORTABLE_PLATFORM view-ээс шалгана.
SQL> col platform_name for a40
SQL> set pagesize 100
SQL> select * from V$TRANSPORTABLE_PLATFORM order by platform_id;
PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ---------------------------------------- --------------
1 Solaris[tm] OE (32-bit) Big
2 Solaris[tm] OE (64-bit) Big
3 HP-UX (64-bit) Big
4 HP-UX IA (64-bit) Big
5 HP Tru64 UNIX Little
6 AIX-Based Systems (64-bit) Big
7 Microsoft Windows IA (32-bit) Little
8 Microsoft Windows IA (64-bit) Little
9 IBM zSeries Based Linux Big
10 Linux IA (32-bit) Little
11 Linux IA (64-bit) Little
12 Microsoft Windows x86 64-bit Little
13 Linux x86 64-bit Little
15 HP Open VMS Little
16 Apple Mac OS Big
17 Solaris Operating System (x86) Little
18 IBM Power Based Linux Big
19 HP IA Open VMS Little
20 Solaris Operating System (x86-64) Little
21 Apple Mac OS (x86-64) Little
20 rows selected.
SQL>
ENDIAN_FORMAT нь ижил tablespace -үүдийн хувьд хөрвүүлэх үйлдэл шаардахгүй бөгөөд хэрэв өөр бол тухайн системд таарах хөрвүүлэлтийг хийх шаардлагатай.
Дараагийн алхамуудад бид demotbs нэртэй tablespace -ийг А сервер дээр байрлах TEST1 баазад үүсгэнэ. Мөн үүнд харгалзах хүснэгт үүсгэж бичлэг нэмсний дараагаар В сервер дээр байрлах ORCL бааз руу зөөх болно.
SQL>
SQL> create tablespace demotbs datafile '/u01/app/oracle/oradata/TEST1/demotbs01.dbf' size 10M autoextend on next 20M extent management local segment space management auto;
Tablespace created.
SQL>
SQL> create user oracloud identified by oracloud default tablespace demotbs quota unlimited on demotbs;
User created.
SQL> grant connect, resource to oracloud;
Grant succeeded.
SQL> conn oracloud/oracloud
Connected.
SQL> create table test(id number,descr varchar2(255));
Table created.
SQL> insert into test values(1,'This is demo for transporting tablespace');
1 row created.
SQL> commit;
Commit complete.
SQL>
Тухайн tablespace-ийг “self contained” эсэхийг шалгана. “self contained” гэдэг нь тухайн tablespace -ийн объектууд бусад объектуудтай холбоотой эсэхийг шалгана гэсэн үг юм. Зөвхөн “self contained” төрлийн tablespace үүдэд Transporting tablespace аргыг ашиглаж болно. Шалгахын тулд дараах коммандыг ашиглана.
SQL> EXECUTE SYS.DBMS_TTS.TRANSPORT_SET_CHECK('demotbs',TRUE);
PL/SQL procedure successfully completed.
SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;
no rows selected
SQL>
Дээрхи коммандыг ажиллуулахад алдаа гарахгүй бол үргэлжлүүлнэ.
SQL> alter tablespace demotbs read only;
Tablespace altered.
SQL>
Тухайн tablespace read only болж шинэчилэлт авахгүй учир метадатаг гаргаж авна.
[oracle@node214 ~]$ mkdir /home/oracle/ttsdir
SQL> create or replace directory ttsdir as '/home/oracle/ttsdir';
Directory created.
SQL> exit
[oracle@node214 ~]$ cd /home/oracle/ttsdir
[oracle@node214 ttsdir]$
[oracle@node214 ttsdir]$ expdp system/oracle_4U@TEST1 directory=ttsdir dumpfile=expdp_tts.dmp transport_tablespaces=demotbs logfile=expdp_tts.log
Export: Release 11.2.0.1.0 - Production on Tue Feb 14 04:58:21 2017
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 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Starting "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01": system/********@TEST1 directory=ttsdir dumpfile=expdp_tts.dmp transport_tablespaces=demotbs logfile=expdp_tts.log
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Master table "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully loaded/unloaded
******************************************************************************
Dump file set for SYSTEM.SYS_EXPORT_TRANSPORTABLE_01 is:
/home/oracle/ttsdir/expdp_tts.dmp
******************************************************************************
Datafiles required for transportable tablespace DEMOTBS:
/u01/app/oracle/oradata/TEST1/demotbs01.dbf
Job "SYSTEM"."SYS_EXPORT_TRANSPORTABLE_01" successfully completed at 04:58:46
[oracle@node214 ttsdir]$
[oracle@node214 ttsdir]$ ls -la
total 116
drwxr-xr-x 2 oracle oinstall 4096 Feb 14 04:58 .
drwx------ 20 oracle oinstall 4096 Feb 14 04:57 ..
-rw-r----- 1 oracle oinstall 86016 Feb 14 04:58 expdp_tts.dmp
-rw-r--r-- 1 oracle oinstall 1178 Feb 14 04:58 expdp_tts.log
[oracle@node214 ttsdir]$
Metadata-г гаргаж авсны дараагаар dmp файл болон датафайл(/u01/app/oracle/oradata/TEST1/demotbs01.dbf)-г нөгөө систем руу хуулж дуусаад tablespace-ийг буцаан бичих горимд оруулна.
SQL> alter tablespace demotbs read write;
Tablespace altered.
SQL>
В сервер дээр хийгдэх үйлдлүүд
Дараах жишээнд В сервер дээр ижил нэртэй хэрэглэгч үүсгэсэн болно. Хэрэв өөр нэртэй хэрэглэгч үүсгэвэл мэдээллийг оруулахдаа REMAP_SCHEMA тохиргоог ашиглана.
[oracle@node214 ~]$ mkdir /home/oracle/ttsdir
[oracle@node214 ~]$
SQL> create user oracloud identified by oracloud;
User created.
SQL> grant connect, resource to oracloud;
Grant succeeded.
SQL>
SQL> create or replace directory ttsdir as '/home/oracle/ttsdir';
Directory created.
SQL>
Хэрэглэгчийг үүсгэсэн тул одоо tablespace -ийн мэдээллийг оруулна.
[oracle@node215 ttsdir]$
[oracle@node215 ttsdir]$ pwd
/home/oracle/ttsdir
[oracle@node215 ttsdir]$ ls -la
total 124
drwxr-xr-x 2 oracle oinstall 4096 Feb 14 05:14 .
drwx------ 20 oracle oinstall 4096 Feb 14 04:57 ..
-rw-r----- 1 oracle oinstall 86016 Feb 14 04:58 expdp_tts.dmp
-rw-r--r-- 1 oracle oinstall 1178 Feb 14 04:58 expdp_tts.log
-rw-r--r-- 1 oracle oinstall 857 Feb 14 05:14 impdp_tts.log
[oracle@node215 ttsdir]$
[oracle@node215 ttsdir]$ impdp system@ORCL directory=ttsdir dumpfile=expdp_tts.dmp transport_datafiles=/u01/app/oracle/oradata/TEST1/demotbs01.dbf logfile=impdp_tts.log
Import: Release 11.2.0.1.0 - Production on Tue Feb 14 05:14:01 2017
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Password:
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Master table "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully loaded/unloaded
Starting "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01": system@ORCL directory=ttsdir dumpfile=expdp_tts.dmp transport_datafiles=/u01/app/oracle/oradata/TEST1/demotbs01.dbf logfile=impdp_tts.log
Processing object type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing object type TRANSPORTABLE_EXPORT/TABLE
Processing object type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job "SYSTEM"."SYS_IMPORT_TRANSPORTABLE_01" successfully completed at 05:14:15
[oracle@node215 ttsdir]$
Мэдээллийг шалгая.
SQL> column descr format a50
SQL> select * from test;
ID DESCR
---------- --------------------------------------------------
1 This is demo for transporting tablespace
SQL>
Бидний зорилт биелсэн байна. Энэ аргаар self-contained tablespace-үүдийг шилжүүлэх боломжтой юм.
Жич:
Хэрэв зөөх tablespace -ийн индекс өөр tablespace-т хадгалагдаж байвал тухайн индексийг агуулж буй tablespace-ийг ижил аргаар зөөнө. Дараах коммандаар oracloud хэрэглэгчээр ажиллуулан шалгаарай.
SELECT object_type, object_name, tablespace_name FROM user_objects, user_segments WHERE object_name = segment_name
Хэрэв А болон В серверүүдийн үйлдлийн систем өөр бөгөөд хөрвүүлэх шаардлагатай бол дараах жишээг харна уу.
[oracle@node214 ttsdir]$ rman target /
RMAN> CONVERT TABLESPACE finance,hr
TO PLATFORM 'Linux IA (32-bit)'
FORMAT='/tmp/transport_linux/%U';
Datafile уудыг /tmp/transport_linux/ хавтас руу хөрвүүлэх бөгөөд уг файлуудыг В сервер руу хуулж ашиглана.
Хэрэв зөвхөн датафайл хөрвүүлэх бол дараах коммандыг ашиглана.
RMAN> convert datafile '/u01/app/oracle/oradata/TEST1/demotbs01.dbf' from platform 'Linux x86 64-bit' format='/tmp/aaaa.dbf';
Хөрвүүлэх коммандыг аль нэг сервер дээр зөвхөн нэг удаа гүйцэтгэнэ.
Tablespace, datafile уудыг хөрвүүлэхэд анхаарах зүйлс:
- 2 бааз аль аль нь 10.0 болон түүнээс дээш хувилбарууд байх
- Дэмжих үйлдлийн системүүдийг V$TRANSPORTABLE_PLATFORM -ээс татаж харна уу
- 10g хувилбарын хувьд өөр үйлдлийн систем рүү хөрвүүлэхээс өмнө tablespace нь багадаа нэг удаа read-write горим руу шилжсэн байх шаардлагатай
- RMAN зөвхөн тухайн системүүдэд тохирох формат руу датафайлыг хөрвүүлэх бөгөөд хэрэглэгчийн datatype-ийг хөрвүүлэхгүй
- 10g хүртэлх хувилбаруудад CLOB баганы хувьд цаанаа SQL коммандуудын тусламжтайгаар хөрвүүлэх үйлдэл хийгддэг. Oracle 10g дээр CLOB ууд нь үйлдлийн систем харгалзахгүйгээр AL16UTF16 character set тэй хадгалагддаг