[b]最近工作中碰见ORACLE导入数据文件到指定的表空间中的事,虽然导入成功了。但这个功能应该算是我们在工作中经常碰见的需求,所以在此作个记录,以后用到也方便查找。
下面直接贴操作流程![/b]
[u]ORACLE中国官网:[/u]
[url]http://www.oracle.com/technology/global/cn/index.html[/url]
下面直接贴操作流程![/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]