溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Oracle可傳輸表空間怎么理解

發(fā)布時(shí)間:2021-12-07 11:29:46 來(lái)源:億速云 閱讀:150 作者:iii 欄目:建站服務(wù)器

這篇文章主要講解了“Oracle可傳輸表空間怎么理解”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Oracle可傳輸表空間怎么理解”吧!

我們?cè)?span lang="EN-US">Oracle環(huán)境中,有很多進(jìn)行數(shù)據(jù)備份和移植手段,如exp/imp、expdp/impdprman等。在這些方法中,可傳輸表空間(Transportable Tablespace)一直是傳統(tǒng)意義上最快數(shù)據(jù)移植的技術(shù)手段。理想情況下,Transportable Tablespace可以實(shí)現(xiàn)近似網(wǎng)絡(luò)直傳的速率特點(diǎn)。

 

1、Transportable Tablespace概述

 

其他傳統(tǒng)意義上的備份遷移手段,大都是遵循“抽取-傳輸-還原”的模式。以expdp為例,Oracle使用專門(mén)的內(nèi)部調(diào)度作業(yè),將需要導(dǎo)出的數(shù)據(jù)(Used Block)轉(zhuǎn)化為dmp格式文件進(jìn)行存儲(chǔ)保存。之后,通過(guò)網(wǎng)絡(luò)進(jìn)行傳輸?shù)?span lang="EN-US">Target Envionment,最后再還原到新環(huán)境上。這種模式的加速優(yōu)化,主要體現(xiàn)在抽取和還原上,如使用并行等手段。

 

Transportable Tablespace完全不是這樣的概念。如果比喻的話,它類似一種Portable/Plugin的理念。相同平臺(tái)、字符集的表空間,完全可以將數(shù)據(jù)文件直接拷貝到Target EnvironmentOracle層面只需要讓數(shù)據(jù)字典知道這些數(shù)據(jù)的metadata就可以了。

 

相對(duì)于其他手段,Transportable Tablespace最大的好處就在于不需要進(jìn)行繁復(fù)的抽取和還原過(guò)程,而且對(duì)中間環(huán)境的空間要求很小。下面通過(guò)一系列的實(shí)驗(yàn)來(lái)進(jìn)行演示。

 

2、環(huán)境準(zhǔn)備和前提條件

 

Oracle Transportable Tablespace(以下簡(jiǎn)稱為TTS)出現(xiàn)的很早。傳統(tǒng)的TTS有三個(gè)層面基礎(chǔ)限制,分別為:

 

ü  表空間內(nèi)容self contained。我們一次性導(dǎo)出的表空間(一個(gè)或者多個(gè)),不能在其他表空間中存在依賴對(duì)象。比如,我們常常將一個(gè)數(shù)據(jù)表數(shù)據(jù)和索引分布在不同的表空間上,這樣如果我們使用Transportable Tablespace,就要求必須將這些表空間一次性全部導(dǎo)出;

ü  SourceTarget DBCharacter Set、National Character Set必須完全相同;

ü  操作系統(tǒng)Source Target DB要求兼容。注意:在10g以上版本,這個(gè)限制已經(jīng)取消;

 

我們會(huì)在下面更加直觀的介紹這些約束和檢查方法。由于筆者環(huán)境的限制,一些實(shí)驗(yàn)只能在一臺(tái)服務(wù)器上進(jìn)行。具體實(shí)驗(yàn)選擇Oracle 11gR2

 

 

SQL> select * from v$version;

BANNER

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

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production

PL/SQL Release 11.2.0.1.0 - Production

CORE        11.2.0.1.0         Production

 

--構(gòu)造兩個(gè)實(shí)驗(yàn)表空間

SQL> create tablespace ttstbl datafile size 10m autoextend on

  2  extent management local uniform. size 1m

  3  segment space management auto;

Tablespace created

 

SQL> create tablespace ttsind datafile size 10m autoextend on

  2  extent management local uniform. size 1m

  3  segment space management auto;

Tablespace created

 

--測(cè)試用戶

SQL> create user test identified by test default tablespace ttstbl;

User created

 

SQL> grant resource, connect to test;

Grant succeeded

 

SQL> grant select_catalog_role to test;

Grant succeeded

 

 

使用test用戶在表空間中創(chuàng)建一些對(duì)象。

 

 

SQL> conn test/test@ora11gp;

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as test

 

SQL> create table t tablespace ttstbl as select * from dba_objects;

Table created

 

SQL> create index idx_t_id on t(object_id) tablespace ttsind;

Index created

 

 

3、Pre-Condition Check

 

作為先決條件,首選確定Source數(shù)據(jù)庫(kù)的字符集信息。

 

 

SQL> select value from nls_database_parameters where parameter='NLS_CHARACTERSET';

VALUE

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

AL32UTF8

 

SQL> select value from nls_database_parameters where parameter='NLS_NCHAR_CHARACTERSET';

VALUE

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

AL16UTF16

 

 

希望導(dǎo)出新創(chuàng)建的表空間ttsindttstbl。

 

 

SQL> select file_name, tablespace_name from dba_data_files where tablespace_name like 'TTS%';

 

FILE_NAME                                                                        TABLESPACE_NAME

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

/u01/app/oradata/ORA11G/datafile/o1_mf_ttstbl_8bmyjf3w_.dbf                      TTSTBL

/u01/app/oradata/ORA11G/datafile/o1_mf_ttsind_8bmyjz69_.dbf                      TTSIND

 

 

[oracle@bsplinux datafile]$ ls -l

total 2095500

(篇幅原因,省略部分內(nèi)容)

-rw-r----- 1 oracle oinstall  10493952 Nov 19 18:04 o1_mf_ttsind_8bmyjz69_.dbf

-rw-r----- 1 oracle oinstall  20979712 Nov 19 17:59 o1_mf_ttstbl_8bmyjf3w_.dbf

-rw-r----- 1 oracle oinstall 267395072 Nov 19 18:13 o1_mf_undotbs1_7vpyc2py_.dbf

-rw-r----- 1 oracle oinstall  11804672 Nov 19 17:29 o1_mf_users_7vpyc2xd_.dbf

 

 

傳統(tǒng)的約束條件中,操作系統(tǒng)平臺(tái)OS是使用TTS不能回避的因素。Oracle將支持平臺(tái)劃分為兩個(gè)大類型BigLittle,同平臺(tái)之間可以進(jìn)行自由表空間移植,異平臺(tái)之間不允許進(jìn)行移植。注意:這個(gè)限制在Oracle 10g之后被打破。具體我們后面詳細(xì)介紹。

 

我們可以通過(guò)查詢v$transportable_platform來(lái)確定系統(tǒng)之間是否兼容。

 

 

SQL> col platform_name for a30;

SQL> select platform_name, ENDIAN_FORMAT from v$transportable_platform;

 

PLATFORM_NAME                  ENDIAN_FORMAT

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

Solaris[tm] OE (32-bit)        Big

Solaris[tm] OE (64-bit)        Big

Microsoft Windows IA (32-bit)  Little

Linux IA (32-bit)              Little

AIX-Based Systems (64-bit)     Big

HP-UX (64-bit)                 Big

HP Tru64 UNIX                  Little

HP-UX IA (64-bit)              Big

Linux IA (64-bit)              Little

HP Open VMS                    Little

Microsoft Windows IA (64-bit)  Little

IBM zSeries Based Linux        Big

Linux x86 64-bit               Little

Apple Mac OS                   Big

Microsoft Windows x86 64-bit   Little

Solaris Operating System (x86) Little

IBM Power Based Linux          Big

HP IA Open VMS                 Little

Solaris Operating System (x86- Little

64)                            

Apple Mac OS (x86-64)          Little

 

20 rows selected

 

 

對(duì)于自己的數(shù)據(jù)庫(kù),v$database視圖中可以查詢自己的平臺(tái)情況信息。

 

 

SQL> select PLATFORM_ID , PLATFORM_NAME from v$database;

 

PLATFORM_ID PLATFORM_NAME

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

         10 Linux IA (32-bit)

 

 

確定平臺(tái)兼容之后,我們需要確定一次移植的表空間之間是否“Self Contained”。Oracle提供的dbms_tts包方法來(lái)進(jìn)行驗(yàn)證。

 

 

SQL> exec dbms_tts.transport_set_check('ttstbl, ttsind',true);

PL/SQL procedure successfully completed

 

SQL> select * from transport_set_violations;

 

VIOLATIONS

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

 

 

如果驗(yàn)證出現(xiàn)錯(cuò)誤,我們可以在transport_set_violations中查詢到提示信息。只有解決了self contained問(wèn)題,才能繼續(xù)下面的步驟。

 

4、環(huán)境數(shù)據(jù)導(dǎo)出

 

為了控制變化,我們需要將表空間設(shè)置為只讀。具體語(yǔ)句為:alter tablespace xxx read only。

 

 

SQL> select tablespace_name, status from dba_tablespaces where tablespace_name like 'TTS%';

 

TABLESPACE_NAME                STATUS

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

TTSIND                         READ ONLY

TTSTBL                         READ ONLY

 

 

Oracle TTS需要使用exp/expdp將表空間的元數(shù)據(jù)Metadata信息導(dǎo)出為dmp文件,用于描述表空間信息。注意,這個(gè)過(guò)程時(shí)間很短,而且生成的dmp文件通常很小。

 

 

[root@bsplinux ~]# cd /

[root@bsplinux /]# mkdir transtts

[root@bsplinux /]# chown -R oracle:oinstall transtts/

[root@bsplinux /]# ls -l | grep transtts

drwxr-xr-x   2 oracle   oinstall  4096 Nov 19 18:19 transtts

[root@bsplinux /]#

 

 

Exp支持了TTS工作方法。

 

 

[oracle@bsplinux transtts]$ exp userid=\"/ as sysdba\" transport_tablespace=y tablespaces=ttstbl,ttsind file=ttsdmp.dmp log=res.log statistics=none

 

Export: Release 11.2.0.1.0 - Production on Mon Nov 19 19:32:14 2012

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 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set

Note: table data (rows) will not be exported

About to export transportable tablespace metadata...

For tablespace TTSTBL ...

. exporting cluster definitions

. exporting table definitions

. . exporting table                              T

For tablespace TTSIND ...

. exporting cluster definitions

. exporting table definitions

. exporting referential integrity constraints

. exporting triggers

. end transportable tablespace metadata export

Export terminated successfully without warnings.

 

 

之后,我們只需要直接將數(shù)據(jù)文件拷貝出來(lái)。

 

 

SQL> select 'cp '||file_name ||' /transtts' from dba_data_files where tablespace_name like 'TTS%';

 

'CP'||FILE_NAME||'/TRANSTTS'

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

cp /u01/app/oradata/ORA11G/datafile/o1_mf_ttstbl_8bmyjf3w_.dbf /transtts

cp /u01/app/oradata/ORA11G/datafile/o1_mf_ttsind_8bmyjz69_.dbf /transtts

 

 

[oracle@bsplinux transtts]$ cp /u01/app/oradata/ORA11G/datafile/o1_mf_ttstbl_8bmyjf3w_.dbf /transtts

cp /u01/app/oradata/ORA11G/datafile/o1_mf_ttsind_8bmyjz69_.dbf /transtts

[oracle@bsplinux transtts]$ cp /u01/app/oradata/ORA11G/datafile/o1_mf_ttsind_8bmyjz69_.dbf /transtts

[oracle@bsplinux transtts]$

 

 

 

[oracle@bsplinux transtts]$ ls -l

total 30796

-rw-r----- 1 oracle oinstall 10493952 Nov 19 19:35 o1_mf_ttsind_8bmyjz69_.dbf

-rw-r----- 1 oracle oinstall 20979712 Nov 19 19:35 o1_mf_ttstbl_8bmyjf3w_.dbf

-rw-r--r-- 1 oracle oinstall      724 Nov 19 19:33 res.log

-rw-r--r-- 1 oracle oinstall    16384 Nov 19 19:33 ttsdmp.dmp

 

 

/transtts目錄中,保存了所有需要還原數(shù)據(jù)庫(kù)的信息。

 

5、數(shù)據(jù)環(huán)境恢復(fù)

 

我們需要將數(shù)據(jù)文件通過(guò)FTP/SFTP傳輸?shù)侥繕?biāo)數(shù)據(jù)庫(kù)服務(wù)器上。筆者先將數(shù)據(jù)環(huán)境還原,因?yàn)槭褂玫氖窍嗤臄?shù)據(jù)庫(kù)。

 

 

SQL> drop tablespace ttstbl including contents and datafiles;

Tablespace dropped

 

SQL> drop tablespace ttsind including contents and datafiles;

Tablespace dropped

 

SQL> select file_name from dba_data_files where tablespace_name like 'TTS%';

FILE_NAME

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

 

 

Source數(shù)據(jù)庫(kù)已經(jīng)沒(méi)有TTS表空間了。下面,我們將數(shù)據(jù)文件拷貝到新位置,并且導(dǎo)入Metadata信息。

 

 

[oracle@bsplinux transtts]$ cp o1_mf_ttstbl_8bmyjf3w_.dbf /u01/app/oradata/ORA11G/datafile/

[oracle@bsplinux transtts]$ cp o1_mf_ttsind_8bmyjz69_.dbf /u01/app/oradata/ORA11G/datafile/

 

[oracle@bsplinux datafile]$ ls -l

total 2095500

-rw-r----- 1 oracle oinstall  10493952 Jul  3 03:48 mytesttbl01.dbf

-rw-r----- 1 oracle oinstall  10493952 Jul  3 03:48 mytesttbl02.dbf

-rw-r----- 1 oracle oinstall 104865792 Nov 19 17:29 o1_mf_rman_ts_87bx5kcg_.dbf

-rw-r----- 1 oracle oinstall 838868992 Nov 19 19:46 o1_mf_sysaux_7vpyc2hb_.dbf

-rw-r----- 1 oracle oinstall 807411712 Nov 19 19:43 o1_mf_system_7vpyc1x7_.dbf

-rw-r----- 1 oracle oinstall  60825600 Nov 19 18:02 o1_mf_temp_7vpz05do_.tmp

-rw-r----- 1 oracle oinstall  10493952 Nov 19 19:47 o1_mf_ttsind_8bmyjz69_.dbf

-rw-r----- 1 oracle oinstall  20979712 Nov 19 19:46 o1_mf_ttstbl_8bmyjf3w_.dbf

-rw-r----- 1 oracle oinstall 267395072 Nov 19 19:47 o1_mf_undotbs1_7vpyc2py_.dbf

-rw-r----- 1 oracle oinstall  11804672 Nov 19 17:29 o1_mf_users_7vpyc2xd_.dbf

 

 

Imp命令導(dǎo)入。

 

 

[oracle@bsplinux transtts]$ imp userid=\'/ as sysdba\' file=ttsdmp.dmp transport_tablespace=y tablespaces=ttsind,ttstbl datafiles=/u01/app/oradata/ORA11G/datafile/o1_mf_ttstbl_8bmyjf3w_.dbf,/u01/app/oradata/ORA11G/datafile/o1_mf_ttsind_8bmyjz69_.dbf

 

Import: Release 11.2.0.1.0 - Production on Mon Nov 19 19:51:25 2012

 

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 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

 

Export file created by EXPORT:V11.02.00 via conventional path

About to import transportable tablespace(s) metadata...

import done in AL32UTF8 character set and AL16UTF16 NCHAR character set

. importing SYS's objects into SYS

. importing SYS's objects into SYS

. importing TEST's objects into TEST

. . importing table                            "T"

. importing SYS's objects into SYS

Import terminated successfully without warnings.

[oracle@bsplinux transtts]$

 

 

導(dǎo)入元數(shù)據(jù)后,Oracle中可以確定導(dǎo)入的表空間了。

 

 

SQL> select file_name,tablespace_name from dba_data_files where tablespace_name like 'TTS%';

 

FILE_NAME                                                                        TABLESPACE_NAME

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

/u01/app/oradata/ORA11G/datafile/o1_mf_ttsind_8bmyjz69_.dbf                      TTSIND

/u01/app/oradata/ORA11G/datafile/o1_mf_ttstbl_8bmyjf3w_.dbf                      TTSTBL

 

SQL> conn test/test@ora11gp

Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0

Connected as test

 

SQL> select count(*) from t;

 

  COUNT(*)

----------

     72348

 

注意,導(dǎo)入后的表空間還是read only狀態(tài),需要開(kāi)啟。

 

SQL> alter tablespace ttsind read write;

Tablespace altered

 

SQL> alter tablespace ttstbl read write;

Tablespace altered

感謝各位的閱讀,以上就是“Oracle可傳輸表空間怎么理解”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Oracle可傳輸表空間怎么理解這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI