• 技术文章 >数据库 >Oracle

    oracle怎么删除schema

    长期闲置长期闲置2022-05-25 17:47:25原创203

    在oracle中,可以利用drop语句删除schema,语法为“drop user username cascade;”;drop语句用于删除表的结构,包括schema,schema是数据库对象的集合,也可以理解为用户。

    本教程操作环境:Windows10系统、Oracle 11g版、Dell G3电脑。

    oracle怎么删除schema

    删除schema语法如下:

    drop user username cascade;

    52.png

    示例如下:

    1)查看用户的默认表空间及临时表空间

    set lines 300
    col username for a30
    select username ,default_tablespace,TEMPORARY_TABLESPACE from dba_users where username='MESPRD';
    -----------------------------------
    USERNAME   DEFAULT_TABLESPACE     TEMPORAR    Y_TABLESPACE
    MESPRD    HTTBS_MESPRD                        TEMP

    2)查看该用户的权限和角色

    select privilege from dba_sys_privs where grantee='SYSADM'
    union
    select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='MESPRD' );
    -----------------------------------
    PRIVILEGE
    CREATE CLUSTER
    CREATE INDEXTYPE
    CREATE OPERATOR
    CREATE PROCEDURE
    CREATE SEQUENCE
    CREATE SESSION
    CREATE TABLE
    CREATE TRIGGER
    CREATE TYPE

    已选择9行。

    3)获取获得授予用户权限的脚本

    select 'grant '||privilege||' to SYSADM;' from (select privilege from dba_sys_privs where grantee='SYSADM'
    union
    select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='SYSADM' ));

    4)执行脚本获得删除该schema下对象的脚本 mesprd为要删除的schema

    connect mesprd/MESPRD
    spool E:\app\Administrator\del_mesprd.sql;
    select 'alter table '||table_name||' drop constraint '||constraint_name||' ;' from user_constraints where constraint_type='R';
    select 'truncate table '||table_name ||';' from user_tables;
    select 'drop table '||table_name ||' purge;' from user_tables;
    select 'drop index '||index_name ||';' from user_indexes;
    select 'drop view ' ||view_name||';' from user_views;
    select 'drop sequence ' ||sequence_name||';' from user_sequences;
    select 'drop function ' ||object_name||';'  from user_objects  where object_type='FUNCTION';
    select 'drop procedure '||object_name||';' from user_objects  where object_type='PROCEDURE';
    select 'drop package '|| object_name||';' from user_objects  where object_type='PACKAGE';
    select 'drop database link '|| object_name||';' from user_objects  where object_type='DATABASE LINK';
    spool off;

    5)sqlplus连接到该schema下,执行如上获得的脚本

    执行前查看下该schema下的对象,执行后再次查看下该schema下的对象

    @?\E:\app\Administrator\del_mesprd.sql;
    SQL> select object_type,count(*) from user_objects group by object_type;

    6)kill掉连接数据库的session

    select 'alter system kill session '''||sid||','||serial#||''' immediate;' from v$session where username='MESPRD';

    7)删除该schema

    drop user MESPRD cascade;

    推荐教程:《Oracle视频教程

    以上就是oracle怎么删除schema的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:oracle
    上一篇:怎么删除oracle被锁的表 下一篇:oracle怎么修改db name
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• oracle怎么判断索引是否失效• oracle怎么使外键失效• Oracle的12505错误怎么解决• oracle怎么修改sequence• 什么是oracle表分区
    1/1

    PHP中文网