Oracle 表空间清理 及 数据库重装

    技术2022-07-13  73

    本地创建数据库的表空间过大,磁盘空间不足,需要删除用户和表空间后进行重建:

    首先导入每个用户下的对象和对应的数据:

    exp 用户名/用户密码@实例名file= E:\xxx.dmp

    使用exp命令导出的文件中,如果表为空表,则不会导出,所以最终重新导入后,会缺表。

    所有需要首先在PLSQL>tools下,导出所有的用户对象,创建时,也首先创建用户用户,然后再导入数据,会避免少表的问题。

    删除用户 DROP USER XXX CASCADE ; DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES; 本地有有三个用户,其中一个删除时报错,另外两个正常,报错信息为,无法删除当前连接的用户。如图:

     

    处理步骤如下:

    先查询对应的会话ID

    Select username ,sid ,serial# from v$session;

     

     

    然后找到想要删除的用户:

    Alter system kill session ‘92,225’;

     

    再次执行用户删除命令,可以成功执行:

     

    删除掉对应的表空间后,数据库的根目录只减少了一半,仍有10多G,此时只能卸载重装。

    本机为win10,在搜索框中输入universal Installer ,找到oracle的卸载程序,进入删除产品页面:

     

    执行,报错,提示需要到对应的目录下执行删除功能:

     

    找到11g对应的deinstall.bat 脚本,执行,中间会有询问,一直回车:

     

     

    运行完后,执行手动删除app根目录,卸载完成。

     

    重新安装数据库,并创建用户,导入数据:

    需要首先看导入的用户对象中,用到的表空间是否是系统表空间,如果不是系统表空间,需要首先创建表空间后,再用PLSQL的command 界面执行sql文件。

    创建表空间:

    create tablespace tablespace_name logging datafile 'D:\app\Administrator\oradata\实例名\tablespace_name.DBF' size 50m -- 根据文件数据量进行调整 autoextend on  next 50m extent management local ;

    导入sql文件:

     

    完成。

     

     

     

     

    Processed: 0.012, SQL: 10