oracle清除用户对象

在使用Oracle数据库的时候,经常会遇到需要把一个用户的所有对象重新导入的操作。这里介绍两种常用的方法,方便大家使用。

一、使用drop user cascade; 可以删除用户及所相关的所有对象,可以通过重新创建一个同名对象,然后使用imp 命令从dmp文件导入新的对象。

二、通过脚本把清空用户的所有对象,包含数据表、函数、存储过程等其他对象。采用这种方法,可以无需dba权限,在你需要完整导入一个用户数据的时候非常好用。

附:清除用户对象脚本

--PL/SQL Developer Test script 3.0

--120

------------------------------------------------------------------

-- Created on 2007-5-18 by GUIPEI

-- drop oracle user‘s all objects

--

--

------------------------------------------------------------------

DECLARE

-- Local variables here

i INTEGER;

CURSOR cur_objects(obj_type VARCHAR2) IS

SELECT object_name FROM user_objects WHERE object_type IN (obj_type);

obj_name VARCHAR(200);

sql_str VARCHAR(500);

BEGIN

--drop all tables;

OPEN cur_objects(‘TABLE‘);

LOOP

FETCH cur_objects

INTO obj_name;

EXIT WHEN cur_objects%NOTFOUND;

dbms_output.put_line(‘delete table: ‘ || obj_name);

sql_str := ‘drop table ‘ || obj_name || ‘ CASCADE CONSTRAINTS ‘;

EXECUTE IMMEDIATE sql_str;

END LOOP;

CLOSE cur_objects;

--drop all SEQUENCE;

OPEN cur_objects(‘SEQUENCE‘);

LOOP

FETCH cur_objects

INTO obj_name;

EXIT WHEN cur_objects%NOTFOUND;

dbms_output.put_line(‘delete SEQUENCE: ‘ || obj_name);

sql_str := ‘drop SEQUENCE ‘ || obj_name;

EXECUTE IMMEDIATE sql_str;

END LOOP;

CLOSE cur_objects;

--drop all VIEW;

OPEN cur_objects(‘VIEW‘);

LOOP

FETCH cur_objects

INTO obj_name;

EXIT WHEN cur_objects%NOTFOUND;

dbms_output.put_line(‘delete VIEW: ‘ || obj_name);

sql_str := ‘drop VIEW ‘ || obj_name || ‘ CASCADE CONSTRAINTS ‘;

EXECUTE IMMEDIATE sql_str;

END LOOP;

CLOSE cur_objects;

--drop all FUNCTION;

OPEN cur_objects(‘FUNCTION‘);

LOOP

FETCH cur_objects

INTO obj_name;

EXIT WHEN cur_objects%NOTFOUND;

dbms_output.put_line(‘delete FUNCTION: ‘ || obj_name);

sql_str := ‘drop FUNCTION ‘ || obj_name;

EXECUTE IMMEDIATE sql_str;

END LOOP;

CLOSE cur_objects;

--drop all PROCEDURE;

OPEN cur_objects(‘PROCEDURE‘);

LOOP

FETCH cur_objects

INTO obj_name;

EXIT WHEN cur_objects%NOTFOUND;

dbms_output.put_line(‘delete PROCEDURE: ‘ || obj_name);

sql_str := ‘drop PROCEDURE ‘ || obj_name;

EXECUTE IMMEDIATE sql_str;

END LOOP;

CLOSE cur_objects;

--drop all PACKAGE;

OPEN cur_objects(‘PACKAGE‘);

LOOP

FETCH cur_objects

INTO obj_name;

EXIT WHEN cur_objects%NOTFOUND;

dbms_output.put_line(‘delete PACKAGE: ‘ || obj_name);

sql_str := ‘drop PACKAGE ‘ || obj_name;

dbms_output.put_line(sql_str);

EXECUTE IMMEDIATE sql_str;

END LOOP;

CLOSE cur_objects;

END;

oracle解锁的SQL....

select t2.username,t2.sid,t2.serial#,t2.logon_time 
from v$locked_object t1,v$session t2 
where t1.session_id=t2.sid order by t2.logon_time;
--查看锁


--alter system kill session ‘sid,serial#‘;
--把锁给KILL掉
alter system kill session ‘146,21177‘;

时间: 2024-10-25 07:48:02

oracle清除用户对象的相关文章

Oracle下用户对象的迁移,包(package),表,试图,序列

问题:       在开发系统时候,有时我们希望能够限制前端页面对数据库的访问行为,比如在Oracle数据库当中,我们采用A用户创建数据库的表结构,package,视图,序列,因此A用户具有访问这些对象的所有权限,           如果前端页面是另一个团队(BTeam)开发,另一个团队对数据库的表结构了解不够熟悉,为了防止BTeam错误的操作导致数据的混乱,我们为BTeam用户创建一个用户B,BTeam通过用户B来访问A用户下           创建的对象,由于BTeam通过B用户来访问数

[转]Oracle DB 用户

? 创建和管理数据库用户帐户: – 验证用户 – 分配默认存储区(表空间) 1.数据库用户帐户 要访问数据库,用户必须指定有效的数据库用户帐户,而且还要根据该用户帐户的要求成功通过验证.每个数据库用户都有一个唯一的数据库帐户. Oracle 建议采用这种做法,从而避免潜在的安全漏洞,并为特定的审计活动提供有意义的数据.但是,有时候若干用户会共享一个公用数据库帐户. 在这些罕见的情况下,操作系统和应用程序必须为数据库提供足够的安全性. 每个用户帐户都包括以下项: ? 唯一的用户名:用户名不能超过3

oracle查看用户信息

1.查看所有用户:select * from dba_users; select * from all_users; select * from user_users;2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限):select * from dba_sys_privs; select * from user_sys_privs; (查看当前用户所拥有的权限)3.查看角色(只能查看登陆用户拥有的角色)所包含的权限sql>select * from role_sys_privs;4.

oracle创建用户、授予权限及删除用户1

oracle创建用户.授予权限及删除用户 创建用户 oracle对表空间 USERS 无权限 alter user 用户名 quota unlimited on users; //创建临时表空间 create temporary tablespace test_temp tempfile 'E:/oracle/product/10.2.0/oradata/testserver/test_temp01.dbf' size 32m autoextend on next 32m maxsize 204

Oracle笔记之对象权限与系统权限总结

对象权限与系统权限 创建表和创建session是系统权限: 系统管理员是有权限去訪问其它表的 以sys登录 sqlplus sys/on_change_install as sysdba; 创建用户wangwu create user wangwu identified by wangwu; 系统权限 grant create session to wangwu; grant create table to wangwu; grant unlimited tablespace to wangwu

oracle的用户权限和角色

oracle的用户权限和角色 系统权限 定义:指特定类型的sql命令的权利.  常见的有: create  session  连接数据库 create   table    建表 create    view    建视 create  public  synonym  建同义词 create procedure  建过程.函数.包 create trigger    建触发器 create cluster   建簇 如何使用select来查询有哪些系统权限 select * from syst

oracle 查看用户表数目,表大小,视图数目等

查看当前用户的缺省表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user_role_privs; 查看当前用户的系统权限和表级权限 SQL>select * from user_sys_privs; SQL>select * from user_tab_privs; 查看用户下所有的表 SQL>select * from user_tables;

如何实现Oracle修改用户权限 .

这里将介绍Oracle修改用户权限的实现过程,包括一些权限管理方面的东西.希望通过本文能对大家了解Oracle修改用户权限有所帮助. ORACLE数据库用户与权限管理 ORACLE是多用户系统,它允许许多用户共享系统资源.为了保证数据库系统的安全,数据库管理系统配置了良好的安全机制. 2. 1 ORACLE数据库安全策略 建立系统级的安全保证 系统级特权是通过授予用户系统级的权利来实现,系统级的权利(系统特权)包括:建立表空间.建立用户.修改用户的权利.删除用户等.系统特权可授予用户,也可以随时

Oracle 默认用户汇总

Oracle帐户有两种: 必须的帐户,如SYS/SYSTEM/SYSMAN等 存储各种应用的帐户: 用户 口令 说明 ANONYMOUS ANONYMOUS 用于访问ORACLEXMLDB知识库的帐户. CTXSYS CTXSYS interMedia  Text用户,有CONNECT\RESOURCE\DBA权限 DIP DIP 目录集成平台的帐户(DIRECTORYINTEGERATIONPLATFORM) DBSNMP DBSNMP 目录集成平台用户,DBSNMP包括CONNECT,RES