oracle表空间可以迁移,Oracle 表空间迁移
遷移表空間databump
使用databump導入導出,兩個庫用戶必須一致,否則另一個庫導入的時候會報錯。所以兩個庫都是用helei用戶。
給兩個數據庫的用戶分別授予dba權限,這里只是實驗更清晰而已。
SQL> create user helei identified by MANAGER;
User created.
SQL> grant connect,resource to helei;
Grant succeeded.
SQL>grant dba to helei;
Grantsucceeded.
我們先查看表空間,我們要把主機HE3中的heleitbs表空間空間遷移到HE4的數據庫當中。
SQL>select TABLESPACE_NAME,STATUS from dba_tablespaces;
TABLESPACE_NAME?????????????? STATUS
---------------------------------------
SYSTEM?????????????????????????????? ONLINE
SYSAUX?????????????????????????????? ONLINE
UNDOTBS1?????????????????????? ONLINE
TEMP?????????????????????????????? ONLINE
USERS?????????????????????????????? ONLINE
EXAMPLE?????????????????????? ONLINE
6 rowsselected.
我們在HE3上的heleitbs表空間中創建一張表,所有的操作都用到helei用戶
SQL>createtablespace heleitbs datafile ‘/u01/app/oracle/oradata/orcl/heleitbs1.dbf‘ size10m;
Tablespacecreated.
SQL> createtable TTT (a int,b varchar2(20));
Tablecreated.
SQL> alter table TTT add constraint TTT_PRIKEYprimary key (a);
insert into ttt values(1,‘helei1‘);
insert into ttt values(2,‘helei2‘);
SQL> commit;
Commit complete.
2.先在兩個虛擬機上創建目錄,并且授權
[[email?protected]~]$ mkdir -p /home/oracle/dumpfile
[[email?protected]~]$ chown -R oracle. dumpfile
[[email?protected]~]$ chmod -R 755 dumpfile
在HE3數據庫中給文件夾做授權
SQL>createdirectory dumpfile as ‘/home/oracle/dumpfile‘;
Directorycreated.
SQL> grant all on directory dumpfile to public;
Grantsucceeded.
在HE4數據庫中給文件夾做授權
SQL>createdirectory dumpfile as ‘/home/oracle/dumpfile‘;
Directorycreated.
SQL> grant all on directory dumpfile to public;
Grantsucceeded.
3.在HE3庫中,需要用sys登錄,檢查一下表空間里面的表是否可以遷移。
查詢代碼:
EXECUTE DBMS_TTS.TRANSPORT_SET_CHECK(‘需要遷移的表空間名字‘, TRUE);
SELECT * FROM TRANSPORT_SET_VIOLATIONS;
SQL> conn / as sysdba
Connected.
SQL>show user
USER is"SYS"
SQL>EXECUTEDBMS_TTS.TRANSPORT_SET_CHECK(‘heleitbs‘,true);
PL/SQLprocedure successfully completed.
SQL> select * from transport_set_violations;
no rowsselected
4.在HE3庫中,把heleitbs表空間變為只讀。
SQL> conn / as sysdba
Connected.
SQL> alter tablespace heleitbs read only;
Tablespacealtered.
SQL>select TABLESPACE_NAME,STATUS from dba_tablespaces;
TABLESPACE_NAME?????????????? STATUS
---------------------------------------
SYSTEM?????????????????????????????? ONLINE
SYSAUX?????????????????????????????? ONLINE
UNDOTBS1?????????????????????? ONLINE
TEMP?????????????????????????????? ONLINE
USERS?????????????????????????????? ONLINE
EXAMPLE?????????????????????? ONLINE
HELEITBS?????????????????????? READ ONLY
7 rowsselected.
5.使用databump導入導出把helei用戶的heleitbs表空間導出到系統中的文件夾中。
[[email?protected]]$expdp helei/MANAGERdumpfile=helei.dmp directory=dumpfile transport_tablespaces=heleitbs
Export: Release11.2.0.1.0 - Production on Sun Dec 13 23:59:37 2015
Copyright (c) 1982,2009, Oracle and/or its affiliates.? Allrights reserved.
Connected to: OracleDatabase 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With thePartitioning, OLAP, Data Mining and Real Application Testing options
Starting"HELEI"."SYS_EXPORT_TRANSPORTABLE_01":? helei/******** dumpfile=helei.dmpdirectory=dumpfile transport_tablespaces=heleitbs
Processing objecttype TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processing objecttype TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Master table"HELEI"."SYS_EXPORT_TRANSPORTABLE_01" successfullyloaded/unloaded
******************************************************************************
Dump file set forHELEI.SYS_EXPORT_TRANSPORTABLE_01 is:
/home/oracle/dumpfile/helei.dmp
******************************************************************************
Datafiles requiredfor transportable tablespace HELEITBS:
/u01/app/oracle/oradata/orcl/heleitbs1.dbf
Job"HELEI"."SYS_EXPORT_TRANSPORTABLE_01" successfullycompleted at 23:59:56
6.用scp把HE3的dumpfile文件夾里面的helei.dmp拷貝到HE4的dumpfile文件夾中。
[[email?protected]]$ scp -rp helei.dmpHE4:/home/oracle/dumpfile/
helei.dmp??????????????????????????????????????????????????????????????????100%?? 80KB? 80.0KB/s
在HE4虛擬機里查看一下dumpfile文件夾有沒有helei.dmp
[[email?protected]~]$ cd dumpfile/
helei.dmp
7.分別查看weixiaobin庫和ronger庫的數據文件存在的位置。
HE3庫
SQL>select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf
/u01/app/oracle/oradata/orcl/heleitbs1.dbf
6 rowsselected.
HE4庫
SQL>select name from v$datafile;
NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/example01.dbf
8.把HE3庫的數據文件heleitbs1.dbf拷貝到HE4庫里的數據文件當中。
[[email?protected]~]$cd /u01/app/oracle/oradata/orcl/
[[email?protected]]$ scp heleitbs1.dbfHE4:/u01/app/oracle/oradata/orcl/
heleitbs1.dbf??????????????????????????????????????????????????????????????100%?? 10MB? 10.0MB/s??00:00
然后查看一下HE4有沒有heleitbs1.dbf文件
[[email?protected]]$ cd /u01/app/oracle/oradata/orcl/
control01.ctl? example01.dbf?redo01.log? redo03.log??? system01.dbf? undotbs01.dbf
control02.ctl? heleitbs1.dbf?redo02.log? sysaux01.dbf? temp01.dbf???users01.dbf
9.這時用使用databump導入導出把HE4的dumpfile文件家里面的helei.dmp導入到自己的數據庫中
[[email?protected]~]$impdp helei/MANAGERdumpfile=helei.dmp directory=dumpfile transport_datafiles=‘/u01/app/oracle/oradata/orcl/heleitbs1.dbf‘
Import:Release 11.2.0.1.0 - Production on Mon Dec 14 00:36:33 2015
Copyright(c) 1982, 2009, Oracle and/or its affiliates.?All rights reserved.
Connectedto: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bitProduction
With thePartitioning, OLAP, Data Mining and Real Application Testing options
Mastertable "HELEI"."SYS_IMPORT_TRANSPORTABLE_01" successfullyloaded/unloaded
Starting"HELEI"."SYS_IMPORT_TRANSPORTABLE_01":? helei/******** dumpfile=helei.dmpdirectory=dumpfiletransport_datafiles=/u01/app/oracle/oradata/orcl/heleitbs1.dbf
Processingobject type TRANSPORTABLE_EXPORT/PLUGTS_BLK
Processingobject type TRANSPORTABLE_EXPORT/POST_INSTANCE/PLUGTS_BLK
Job"HELEI"."SYS_IMPORT_TRANSPORTABLE_01" successfullycompleted at 00:36:49
10.把兩個庫中的heleitbs表空間都設置為讀寫模式。
兩個庫命令是一致的使用dba用戶和weixiaobin用戶都可以
SQL> alter tablespace heleitbs read write;
Tablespacealtered.
11.驗證,看看HE4虛擬數據中是不是HELEITBS表空間。看看表空間里有沒有TTT的表
SQL> select TABLE_NAME,TABLESPACE_NAME fromdba_tables where TABLESPACE_NAME=‘HELEITBS‘;
TABLE_NAME?????????????????????? TABLESPACE_NAME
------------------------------------------------------------
TTT?????????????????????????????? HELEITBS
原文:http://suifu.blog.51cto.com/9167728/1722903
總結
以上是生活随笔為你收集整理的oracle表空间可以迁移,Oracle 表空间迁移的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle实列关闭,Oracle单实例
- 下一篇: c语言中常量有何作用,C语言const的