Oracle之Exp、Imp(二)

Oracle中的Exp和Imp在使用中是最多的,它支持从一个表空间导入到另外一个表空间,具体的实现如下:
1、利用操作系统认证连接Oracle数据库
[oracle@localhost ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 1月 29 17:28:10 2013

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


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options
2、创建表空间test1
SQL> create tablespace test1 datafile '/opt/oracle/product/10.2.0/oradata/testdb/test1.dbf' size 50M autoextend on next 2000k;

Tablespace created.
3、创建用户u_test1,创建用户时需注意几点,如用户名或者指定的表空间用双引号时,双引号内的字母必须大写,否则会报异常,同时PASSWORD必须使用双引号
SQL> create user u_test1 identified by "181818"
  2  default tablespace test1
  3  temporary tablespace temp
  4  profile default
  5  account unlock
  6  quota unlimited on test1;

User created.
3、给用户授予权限,一般情况下给用户权限connect和resource就可以了,with admin option是指该用户被授予的权限可以授权同样的权限给其他用户,同时当revoke收回
权限时,其他用户的权限不会被收回,简言之with admin option是Oracle默认的系统权限,对应的还有一个with grant option,
SQL> grant connect,dba to u_test1 with admin option;

Grant succeeded.
4、收回用户u_test1的权限,unlimited tablespace是指授予用户不限定表空间的权限,意思是该用户可以操作所有的表空间,在赋予dba时就默认赋予了unlimited tablespace的权限
SQL> revoke unlimited tablespace from u_test1;

Revoke succeeded.
5、给用户test1配置不受限制的表空间u_test1
SQL> alter user u_test1 quota unlimited on test1;

User altered.
6、创建表test1,查看表所属用户和表空间
SQL> create table u_test1.test1 (record_no number primary key);

Table created.
SQL> col table_name format a20
SQL> col tablespace_name format a20
SQL> select owner,table_name,tablespace_name from dba_tables where table_name = 'TEST1';

OWNER                          TABLE_NAME           TABLESPACE_NAME
------------------------------ -------------------- --------------------
U_TEST1                        TEST1                TEST1

SQL>
7、导出数据
D:\>exp u_test1/181818@testdb file=D:\20130129.dmp tables=test1

Export: Release 10.2.0.1.0 - Production on 星期二 1月 29 17:45:21 2013

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Produc
tion
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集

即将导出指定的表通过常规路径...
. . 正在导出表                           TEST1导出了           0 行
成功终止导出, 没有出现警告。

8、创建表空间
SQL> create tablespace test2 datafile '/opt/oracle/product/10.2.0/oradata/testdb/test2.dbf' size 20m autoextend on next 2000k;

Tablespace created.
9、创建用户
SQL> create user u_test2 identified by "181818"
  2  default tablespace test2
  3  temporary tablespace temp
  4  profile default
  5  account unlock
  6  quota unlimited on test2;

User created.
10、授予权限,同时收回unlimited tablespace权限
SQL> grant connect,dba to u_test2 with admin option;

Grant succeeded.

SQL> revoke unlimited tablespace from u_test2;

Revoke succeeded.
11、指定用户u_test2对表空间test2配额不受限,同时对表空间test1配额0m
SQL> alter user u_test2 quota unlimited on test2;

User altered.

SQL> alter user u_test2 quota 0m on test1;

User altered.
12、将用户u_test1的导出的数据导入用户u_test2
D:\>imp u_test2/181818@testdb file=D:\20130129.dmp tables=test1

Import: Release 10.2.0.1.0 - Production on 星期二 1月 29 17:54:08 2013

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


连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Produc
tion
With the Partitioning, OLAP and Data Mining options

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

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

已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 U_TEST1 的对象导入到 U_TEST2
. 正在将 U_TEST1 的对象导入到 U_TEST2
. . 正在导入表                         "TEST1"导入了           0 行
成功终止导入, 没有出现警告。

13、查询表test1的所属用户和表空间,发现导入的数据所属表空间为test2,当以上步骤缺少10和11时,则导入的数据所属表空间则会是test1,而不是test2。
SQL> select owner,table_name,tablespace_name from dba_tables where table_name = 'TEST1';

OWNER                          TABLE_NAME           TABLESPACE_NAME
------------------------------ -------------------- --------------------
U_TEST2                        TEST1                TEST2
U_TEST1                        TEST1                TEST1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值