Oracle数据库删除用户和删除表空间及常见错误解决
最近工作用到了impdp命令(数据库导入),与它对应的是expdp(工作中遇到了,在给大家讲讲遇到的问题),在删除用户和表空间时,遇到了点问题,写一下解决办法,供大家参考。
首先讲下删除用户和表空间
1、在Linux系统用sqlplus登录
1、切换到oracle用户su - oracle
2、登录sys用户sqlplus / as sysdba
2、查找用户
select * from dba_user;
3、删除用户
drop user 用户名 cascade;
例如:
drop user hbnxnc cascade;
4、删除表空间
4.1、删除空的表空间,但是不包含物理文件
drop tablespace tablespace_name;
4.2、删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents;
4.3、删除空表空间,包含物理文件
drop tablespace tablespace_name including datafiles;
4.4、删除非空表空间,包含物理文件
drop tablespace tablespace_name including contents and datafiles;
4.5、如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上CASCADE CONSTRAINTS
drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;
接下来讲下遇到的问题,重点!!
一、在删除用户的时候,会遇到下面的一个错误:
ORA-01940: cannot drop a user that is currently connected
SQL> drop user hbnxnc;
ERROR at line 1:
ORA-01940: cannot drop a user that is currently connected
造成这个问题的原因是很明显的,有用户在连接,不允许drop掉该user。
解决方案:
首先查找这个用户有没有在使用
select username,sid,serial#,PROGRAM from v$session where username='HBNXNC';
--用户名必须大写USERNAME SID SERIAL# ------------------------------ ---------- ---------------------------------------------hbnxnc 634 7
其次是杀死系统中的会话进程
alter system kill session '634,7';
--批量杀死会话进程
SELECT 'ALTER SYSTEM kill SESSION ''' ||SID||','||SERIAL#||''' IMMEDIATE;' FROM V$SESSION where username='HBNXNC';
--使用ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE 来快速回滚事物、释放会话的相关锁、立即---返回当前会话的控制权。
一般情况下,执行完这些,在执行drop user就可以把用户删掉了。但是,有时候刚删掉所有会话进程,又有新的进程出现了,怎么kill也不行,用户删不掉,下面说下解决办法(重中之重!!)
方式一:
1、停止Oracle数据库的监听程序
lnsrctl stop
2、执行上面杀死会话进程的方法
3、执行drop user 语句
方式二:
有时候,你会发现数据库用的是grid创建的监听,没有grid用户,监听停不掉,需要用到了下面的方法
1、用sqlplus登录oracle数据库,将要删除的用户锁定
alter user sysdb account lock;
2、用户锁定后,执行删除会话进程的语句,就可以了
alter system kill session 'SID,SERIAL#';
3、执行drop user语句
二、在删除表空间遇到的错误
ORA-00604和ORA-00054
查看进程
SELECT * FROM dba_datapump_jobs
图片上有个state,对应的是EXECUTING,将这样的JOB_NAME用kill杀掉
2、在Linux用SSH登录所操作数据库,执行下面这句话
impdp hbnxnc1/123456@10.5.140.112/ncdb attach=SYS_IMPORT_FULL_01
出现import后,在import后面,输入kill,等待kill结束,就可以删除表空间了
Oracle数据库删除用户和删除表空间及常见错误解决相关推荐
- oracle 数据库,用户管理以及表空间等相关基础操作
开启超级管理员模式 sqlplus "/as sysdba" 修改BI账户密码为721521 alter user BI identified by 721521; #修改时间格式 ...
- oracle建用户之前是否必须建表空间,Oracle数据库-建库、建表空间,建用户
Oracle数据库-建库.建表空间,建用户 Oracle安装完后,其中有一个缺省的数据库,除了这个缺省的数据库外,我们还可以创建自己的数据库. 对于初学者来说,为了避免麻烦,可以用'Database ...
- Oracle数据库迁移:异构传输表空间TTS HP-UX迁移至Redhat Linux 7.7
墨墨导读:本文来自墨天轮用户"你好我是李白"的投稿,记录一个Oracle数据库迁移过程 :异构传输表空间TTS HP-UX迁移至Redhat Linux 7.7.墨天轮主页:htt ...
- Oracle数据库创建用户和删除用户(持续更...)
1.创建用户步骤 1.用登录到DBA权限,输入sqlplus / as sysdba回车,相当于拥有数据库操作的最高权限,其中/表示不用用户名和密码. 2.创建用户的指令为:create user s ...
- oracle首先创建三个表,oracle一个创建用户、创建表空间、授权、建表的完整过程...
1.首先我们可以用scott用户以sysdba的身份登录oracle. 1. conn scott/tiger as sysdba 2.然后我就可以来创建用户了. 1. create user zzg ...
- oracle报错数据复数,在ORACLE数据库间移动或复制表空间测试
做了个移动表空间的测试 我想把数据库orcl里面的某个表空间,移到另一个数据库epma 先建一些表空间,以及用户 create tablespace tts1 datafile 'D:\ORADATA ...
- Oracle数据库个人整理常用的表空间、用户、授权操作
1.表空间相关sql -- 创建表空间名为test_tablespace_name,存储位置为D:\DB\oradata\orcl\test_tablespace_name.dbf,大小为128m,无 ...
- Linux操作Oracle(8)——Oracle数据库迁移全纪录(1) — 表空间 用户 权限迁移
目录 一.表空间迁移 1.查看源数据库表空间结构 2.表空间创建 二.用户及权限迁移
- 如何估算Oracle数据库所需的UNDO表空间的大小
要确定Oracle需要的UNDO 表空间的大小,需要以下三条信息: UR 以秒为单位的UNDO_RETENTION UPS 每秒生成的还原数据块的数量 DBS db_block ...
最新文章
- CUDA 7 Stream流简化并发性
- 管理的最高境界:残缺中的和谐
- UltraEdit不高亮解决办法
- 五分钟学会悲观乐观锁-java vs mysql vs redis三种实现
- 入职体检——项目列表(12项)
- 中国船级社船舶设计审核云平台
- PHP十六个魔术方法
- 位运算中的左移和右移的计算详解
- mysql启多_MySQL启多个实例
- executable file and DLL
- Java 多线程 通信 通道 (猫狗赛跑)
- Lightroom Classic 教程,如何在 Lightroom 中风格化照片?
- Windows Shell 编程学习总结
- IDEA打包war部署到Tomcat
- 帕丽斯·希尔顿,缺少
- live2dviewer android,Live2DViewerEX
- 论文投稿指南——中国(中文EI)期刊推荐(第6期)
- ipad 顶部时间电池栏 浏览器无法隐藏
- Onvif协议PTZ服务规范(一)PTZ Service Specification
- Windows中Nginx下载、安装、配置
热门文章
- 华为什么机型可以使用鸿蒙系统,华为手机鸿蒙系统支持哪些手机型号-鸿蒙系统支持设备型号说明-红鼠网...
- LVGL 源码分析大全
- 李明顺:互联网金融最需要正能量
- 牛客网SQL题目全部通过答案
- signature=238addc09a2ed2eedaa03f702842ebad,適用於數位內容交易的安全浮水印協定
- excel部分网格线不见了_画线的工具和使用法,变换网格线的式样,画线对作品效果的影响...
- ios podspec学习笔记
- Java透明桌宠并于窗口交互
- 如何选择TVS二极管
- ORB-SLAM2梳理——track线程(一)