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