原标题:在不更换表空间的情况下,重建oracle数据库(用户),并重新导入数据
1. 删除前的准备工作:
(1) 连接数据源,导出备份数据
<pre><code>
exp tianzhi_smart/tianzhi_smart@1localhost:1521/orcl file='E:\tianzhi_smart.dmp';
</code></pre>
(2) 登录即将被删除的用户,查看当前连接用户缺省表空间:
<pre><code>
SQL>select username,default_tablespace from user_users;
</code></pre>
2. 删除工作:
(1) 以sysdba管理员登录,
<pre><code>
sqlplus /nolog
conn /as sysdba;
</code></pre>
(2) 删除数据库(用户),并没有删除对应的表空间
<pre><code>
drop user tianzhi_smart cascade;
</code></pre>
3. 创建用户:
(1) 创建用户,并指定表空间,还是原来的表空间,前面已经查询到
<pre><code>
create user tianzhi_smart identified by tianzhi_smart default tablespace casic_smart quota 500m on users;
</code></pre>
(2) 授予权限
<pre><code>
grant all privileges to tianzhi_smart;
</code></pre>
4. 导入数据
<pre><code>
imp tianzhi_smart/tianzhi_smart@localhost:1521/orcl file='C:\tianzhi_smart.dmp' full=y;
</code></pre>
说明:
在硬盘盘符下看到的文件是数据库存放数据的数据文件,执行完drop user xxx cascade;后,会把用户及用户所属的表删除掉,但表空间还是存在的,只是里面的数据已被删除掉了。
最后说一点,删除了用户和数据后是不会自动释放表空间的,表空间容量是建立数据库的时候初始化的,比方说XXX tablespace 容量为1G,你删除数据是不影响这个容量的,它在硬盘上仍然占用1G空间。
说明内容文字来源于CSDN论坛技术回答:http://bbs.csdn.net/topics/370131138