Oracle imp 匯入資料到另一個表空間
很多人在進行資料遷移時,希望把資料匯入不同於原系統的表空間,在匯入之後卻往往發現,資料被匯入了原表空間。
本例舉例說明解決這個問題:
如果預設的使用者具有DBA許可權,那麼匯入時會按照原來的位置匯入資料,即匯入到原表空間,下面透過演示匯入不同表空間。
[oracle@testsvr3 orcl]$ sqlplus '/as sysdba'
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 3月 28 19:09:40 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> CREATE TABLESPACE TESTSPACE
DATAFILE '/var/oracledata/orcl/TEST01.dbf' size 120M
EXTENT MANAGEMENT local; 2 3
DATAFILE '/var/oracledata/orcl/TEST01.dbf' size 120M
EXTENT MANAGEMENT local; 2 3
表空間已建立。
SQL> disc
從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options 斷開
SQL> conn ms/ms
已連線。
SQL> create table test_objects tablespace TESTSPACE as select * from dba_objects;
從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options 斷開
SQL> conn ms/ms
已連線。
SQL> create table test_objects tablespace TESTSPACE as select * from dba_objects;
表已建立。
SQL> create index ind_object_type on test_objects(OBJECT_TYPE) tablespace TESTSPACE;
索引已建立。
SQL> set linesize 200
SQL> col segment_name for a50
SQL> select segment_name,segment_type from dba_segments where tablespace_name='TESTSPACE';
SQL> col segment_name for a50
SQL> select segment_name,segment_type from dba_segments where tablespace_name='TESTSPACE';
SEGMENT_NAME SEGMENT_TYPE
-------------------------------------------------- ------------------
TEST_OBJECTS TABLE
IND_OBJECT_TYPE INDEX
SQL> quit
從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options 斷開
-------------------------------------------------- ------------------
TEST_OBJECTS TABLE
IND_OBJECT_TYPE INDEX
SQL> quit
從 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options 斷開
上面建立了一個新的表空間,並在表空間上新建了一個表。
下面備份這個表。
[oracle@testsvr3 orcl]$ exp ms/ms file=test_objects.dmp tables=test_objects log=exptab.log
Export: Release 10.2.0.1.0 - Production on 星期一 3月 28 19:19:08 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
已匯出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即將匯出指定的表透過常規路徑...
. . 正在匯出表 TEST_OBJECTS匯出了 53433 行
成功終止匯出, 沒有出現警告。
. . 正在匯出表 TEST_OBJECTS匯出了 53433 行
成功終止匯出, 沒有出現警告。
備份後,刪除剛才的表空間:
SQL> drop tablespace TESTSPACE INCLUDING CONTENTS;
表空間已刪除。
建立要匯入的新使用者:
SQL> CREATE USER test IDENTIFIED BY test
PROFILE DEFAULT
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK; 2 3 4 5
PROFILE DEFAULT
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
ACCOUNT UNLOCK; 2 3 4 5
使用者已建立。
SQL> grant connect,resource,dba to test;
授權成功。
回收使用者unlimited tablespace許可權,這樣就可以匯入到使用者預設表空間:
SQL> revoke unlimited tablespace from test;
撤銷成功。
SQL> alter user test quota 0 on USERS;
使用者已更改。
SQL> alter user test quota unlimited on USERS;
使用者已更改。
重新匯入資料
[oracle@testsvr3 orcl]$ imp test/test file=test_objects.dmp fromuser=ms touser=test
Import: Release 10.2.0.1.0 - Production on 星期一 3月 28 19:26:32 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
經由常規路徑由 EXPORT:V10.02.01 建立的匯出檔案
警告: 這些物件由 MS 匯出, 而不是當前使用者
已經完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的匯入
. 正在將 MS 的物件匯入到 TEST
. . 正在匯入表 "TEST_OBJECTS"匯入了 53433 行
成功終止匯入, 沒有出現警告。
[oracle@testsvr3 orcl]$
. 正在將 MS 的物件匯入到 TEST
. . 正在匯入表 "TEST_OBJECTS"匯入了 53433 行
成功終止匯入, 沒有出現警告。
[oracle@testsvr3 orcl]$
[oracle@testsvr3 orcl]$ sqlplus '/as sysdba'
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 3月 28 19:26:48 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
連線到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
SQL> select segment_name,segment_type,tablespace_name from dba_segments where segment_name='TEST_OBJECTS';
SEGMENT_NAME
--------------------------------------------------------------------------------
SEGMENT_TYPE TABLESPACE_NAME
------------------ ------------------------------
TEST_OBJECTS
TABLE USERS
--------------------------------------------------------------------------------
SEGMENT_TYPE TABLESPACE_NAME
------------------ ------------------------------
TEST_OBJECTS
TABLE USERS
發現該表已經成功匯入了test使用者預設表空間USERS中。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-689891/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料匯出匯入(exp/imp)Oracle
- Oracle如何把一個表匯出匯入到另一個伺服器上的另一個表裡Oracle伺服器
- Oracle資料庫匯入匯出。imp匯入命令和exp匯出命令Oracle資料庫
- OracleDatabase——資料庫表空間dmp匯出與匯入OracleDatabase資料庫
- imp-匯入小寫字母的表
- Oracle表空間Oracle
- oracle 表空間Oracle
- SQLServer匯出匯入資料到MySQLServerMySql
- GeoRapter工具將shapefile資料匯入到Oracle空間資料庫中APTOracle資料庫
- 增加oracle表空間Oracle
- oracle temp 表空間Oracle
- oracle建立臨時表空間和資料表空間以及刪除Oracle
- oracle 表移動表空間Oracle
- Oracle表移動表空間Oracle
- oracle表空間的整理Oracle
- Oracle 批量建表空間Oracle
- Oracle清理SYSAUX表空間OracleUX
- Python批量匯入Excel資料到MySQLPythonExcelMySql
- Oracle Temp 表空間切換Oracle
- Oracle 表空間增加檔案Oracle
- Oracle OCP(49):表空間管理Oracle
- Oracle表空間收縮方案Oracle
- Oracle RMAN 表空間恢復Oracle
- oracle匯出使用者、表空間和角色的建立語句Oracle
- Oracle臨時表空間檢視、新增臨時表空間資料檔案、修改預設臨時表空間 方法!Oracle
- Oracle新建使用者、表空間、表Oracle
- mysql怎麼複製一張表的資料到另一張表MySql
- oracle 普通表空間資料檔案壞塊Oracle
- Oracle案例11——Oracle表空間資料庫檔案收縮Oracle資料庫
- oracle單表按時間匯出Oracle
- Oracle的表空間quota詳解Oracle
- oracle臨時表空間相關Oracle
- oracle sql 表空間利用率OracleSQL
- Oracle OCP(47):表空間的建立Oracle
- 【Oracle 恢復表空間】 實驗Oracle
- 【TABLESPACE】Oracle表空間最佳實踐Oracle
- Oracle 資料匯入匯出Oracle
- Oracle資料匯入匯出Oracle
- MongoDB 複製一個collection裡的資料到另一個collectionMongoDB