ORACLE导入数据文件到指定的表空间

[b]最近工作中碰见ORACLE导入数据文件到指定的表空间中的事,虽然导入成功了。但这个功能应该算是我们在工作中经常碰见的需求,所以在此作个记录,以后用到也方便查找。
下面直接贴操作流程![/b]

Microsoft Windows [版本 6.1.7600]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.3.0 - Production on 星期二 8月 10 20:53:45 2010

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

--预防数据库中已经存在同名用户,执行所有操作前先drop一下
SQL> drop user pccuser cascade;
drop user pccuser cascade
*
第 1 行出现错误:
ORA-01918: 用户 'pccUSER' 不存在

--查看数据文件存放的位置
SQL> DESC DBA_DATA_FILES;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

FILE_NAME VARCHAR2(513)
FILE_ID NUMBER
TABLESPACE_NAME VARCHAR2(30)
BYTES NUMBER
BLOCKS NUMBER
STATUS VARCHAR2(9)
RELATIVE_FNO NUMBER
AUTOEXTENSIBLE VARCHAR2(3)
MAXBYTES NUMBER
MAXBLOCKS NUMBER
INCREMENT_BY NUMBER
USER_BYTES NUMBER
USER_BLOCKS NUMBER
ONLINE_STATUS VARCHAR2(7)

SQL> SELECT FILE_NAME,TABLESPACE_NAME FROM DBA_DATA_FILES;

FILE_NAME
----------------------------------------------------------------------

TABLESPACE_NAME
------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\OAMIS\USERS01.DBF
USERS

D:\ORACLE\PRODUCT\10.2.0\ORADATA\OAMIS\SYSAUX01.DBF
SYSAUX

D:\ORACLE\PRODUCT\10.2.0\ORADATA\OAMIS\UNDOTBS01.DBF
UNDOTBS1

已选择6行。

--创建表空间
SQL> CREATE TABLESPACE TEST_pcc_TBS DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\O
AMIS\TEST_pcc_TBS01.DBF' SIZE 100M
2 AUTOEXTEND on NEXT 500M MAXSIZE UNLIMITED
3 LOGGING
4 ONLINE
5 PERMANENT
6 EXTENT MANAGEMENT LOCAL AUTOALLOCATE
7 BLOCKSIZE 8K
8 SEGMENT SPACE MANAGEMENT AUTO;

表空间已创建。
--创建用户,并设置其默认的表空间
SQL> CREATE USER pccUSER IDENTIFIED BY pccUSER DEFAULT TABLESPACE TEST_pcc_TBS;

用户已创建。

SQL> GRANT CONNECT TO pccUSER;

授权成功。

SQL> GRANT RESOURCE TO pccUSER;

授权成功。

--该语句很重要(必须的)
SQL> ALTER USER pccUSER QUOTA 0 ON USERS;

用户已更改。

--让新建用户在其默认的表空间上拥有无限制的操作表空间的权限
SQL> ALTER USER pccUSER QUOTA UNLIMITED ON TEST_pcc_TBS;

用户已更改。
--用已经创建好的用户登录
SQL> CONN pccUSER/pccUSER
已连接。
SQL> SHOW USER;
USER 为 "pccUSER"
SQL> DESC USER_USERS;
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

USERNAME NOT NULL VARCHAR2(30)
USER_ID NOT NULL NUMBER
ACCOUNT_STATUS NOT NULL VARCHAR2(32)
LOCK_DATE DATE
EXPIRY_DATE DATE
DEFAULT_TABLESPACE NOT NULL VARCHAR2(30)
TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30)
CREATED NOT NULL DATE
INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30)
EXTERNAL_NAME VARCHAR2(4000)

SQL> SELECT USERNAME,DEFAULT_TABLESPACE FROM USER_USERS;

USERNAME DEFAULT_TABLESPACE
------------------------------ ------------------------------
pccUSER TEST_pcc_TBS

SQL>

SQL> exit
从 Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options 断开

C:\Users\Administrator>d:

--执行imp导入数据
D:\>imp parfile=imp.txt

Import: Release 10.2.0.3.0 - Production on 星期二 8月 10 21:13:04 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

经由常规路径由 EXPORT:V10.02.01 创建的导出文件
IMP-00013: 只有 DBA 才能导入由其他 DBA 导出的文件
IMP-00000: 未成功终止导入

--从上面的异常信息可以看出,用户需要导入的数据是由具有dba权限的用户所导出的
--因此我们导入的用户也应该具备有dba的权限
D:\>sqlplus / as sysdba;

SQL*Plus: Release 10.2.0.3.0 - Production on 星期二 8月 10 21:14:08 2010

Copyright (c) 1982, 2006, Oracle. All Rights Reserved.


连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
With the Partitioning, OLAP and Data Mining options

--给pccuser用户授以dba的权限
SQL> grant dba to pccuser;

授权成功。

--执行导入imp
D:\>imp parfile=imp.txt

Import: Release 10.2.0.3.0 - Production on 星期二 8月 10 21:14:37 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Pro
With the Partitioning, OLAP and Data Mining options

经由常规路径由 EXPORT:V10.02.01 创建的导出文件

警告: 这些对象由 pcc 导出, 而不是当前用户

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
导出客户机使用 ZHS16CGB231280 字符集 (可能的字符集转换)
. 正在将 pcc 的对象导入到 pccUSER
. . 正在导入表 "COUNTSUM"导入了 1 行
. . 正在导入表 "PCSS_TF_TJ_TAB"导入了 21868 行
. . 正在导入表 "pcc_ALL_LOG_TAB"导入了 407 行
. . 正在导入表 "pcc_ALL_USER_BAK_TAB"导入了 8407 行
. . 正在导入表 "pcc_ALL_USER_TAB"导入了 2659 行
. . 正在导入表 "pcc_CITY_DESC_TAB"导入了 1 行
. . 正在导入表 "pcc_CLIENT_VER"导入了 1 行
. . 正在导入表 "pcc_DELETE_USERS_BAK_T"导入了 6085 行
. . 正在导入表 "pcc_DEL_ENINFO_BACK_TAB"导入了 36 行
. . 正在导入表 "pcc_EN_FILE_TAB"导入了 2422 行
. . 正在导入表 "pcc_EN_GPUSER_BACK_TAB"导入了 97 行
. . 正在导入表 "pcc_EN_GPUSER_TAB"导入了 4874 行
. . 正在导入表 "pcc_EN_GROUP_BACK_TAB"导入了 1 行
. . 正在导入表 "pcc_EN_GROUP_TAB"导入了 427 行
. . 正在导入表 "pcc_EN_INFO_TAB"导入了 222 行
. . 正在导入表 "pcc_EN_LOGO_TAB"导入了 0 行
. . 正在导入表 "pcc_EN_MNUSER_BACK_TAB"导入了 21 行
. . 正在导入表 "pcc_EN_MNUSER_TAB"导入了 205 行
. . 正在导入表 "pcc_EN_QUERY_GTO"导入了 107 行

成功终止导入, 没有出现警告。

--验证导入的数据是否导入到了指定的表空间中
SQL> select table_name,tablespace_name from tabs

TABLE_NAME TABLESPACE_NAME
------------------------------ -----------------
COUNTSUM TEST_pcc_TBS
PCSS_CDR_GTO_GTT_TAB TEST_pcc_TBS
PCSS_CDR_LMQ_TAB TEST_pcc_TBS
PCSS_CDR_OCO_OCT_TAB TEST_pcc_TBS
PCSS_CDR_OFO_OFT_TAB TEST_pcc_TBS
PCSS_CDR_OTO_OTT_TAB TEST_pcc_TBS
PCSS_CDR_UAG_UDG_TAB TEST_pcc_TBS
PCSS_CDR_ULO_ULF_TAB TEST_pcc_TBS
PCSS_TF_TJ_TAB TEST_pcc_TBS
pcc_ALL_LOG_TAB TEST_pcc_TBS
pcc_ALL_USER_BAK_TAB TEST_pcc_TBS


--因为给一个用户授予dba权限,对数据库来说不安全,所以在当该用户执行导入操作完成后,应该收回dba的权限
SQL>CONN / AS SYSDBA;
SQL> revoke dba from pccuser;

撤销成功。


--给出导入脚本文件imp.txt内容如下:
userid=pccuser/pccuser--[说明:如果该登录oracle数据库的用户具有dba权限,则pcc用户不要求一定具有dba权限;该说明只对具有dba权限的用户导出的数据文件起作用]
buffer=4096000
log=imp.log
file=D:\orcl_db.dump
fromuser=pcc
touser=pccuser


[u]ORACLE中国官网:[/u]
[url]http://www.oracle.com/technology/global/cn/index.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值