zoukankan      html  css  js  c++  java
  • drop user和drop user cascade的区别(转)

     drop user和drop user cascade的区别

    http://blog.chinaunix.net/uid-21187846-id-3049198.html

    分类: Oracle

    1.oracle数据库中删除用户有两种命令,一种是 drop user xxx;另外一个种是drop user xxx cascade;

    2.官方的说明如下:

    Dropping a Database User: Example If user Sidney's schema contains no objects, then you can drop sidney by issuing the statement:

    DROP USER sidney;

    If Sidney's schema contains objects, then you must use the CASCADE clause to drop sidney and the objects:

    DROP USER sidney CASCADE;

    大概就是说drop user xxx必须是这个用户下面没有任何对象;这样才可以使用这个命令,否则就会报错;如果用户下面有对象,就得用drop user xxx cascade来删除这个用户以及这个用户下的所有对象了;

    3.测试实验;

    环境:我的DELL笔记本电脑,系统是XP,oracle10g 32位

    脚本如下:


    C:Documents and SettingsAdministrator>sqlplus /nolog

    SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 12月 26 22:46:12 2011

    Copyright (c) 1982, 2005, Oracle.  All rights reserved.

    SQL> conn / as sysdba;
    已连接。
    SQL> show user;
    USER 为 "SYS"
    SQL> create user mary identified by mary;

    用户已创建。

    SQL> grant dba to mary;

    授权成功。

    SQL> --创建好用户mary后,查看这个用户下面是否有对象;
    SQL> select object_type,count(*) from all_objects where owner='MARRY' group by object_type

    未选定行

    SQL> --发现没有任何对象,那我们试着来删除用户mary;
    SQL> drop user mary;

    用户已删除。

    SQL> --现在我们再重新创建一个用户jack;
    SQL> create user jack identified by jack;

    用户已创建。

    SQL> grant dba to jack;

    授权成功。

    SQL> --以jack用户连接到数据库,并创建一个表;
    SQL> conn jack/jack;
    已连接。
    SQL> show user;
    USER 为 "JACK"
    SQL> create table test (id number(2),
      2  name varchar2(10));

    表已创建。

    SQL> --再以sys用户连接来查看jack下面是否有对象;
    SQL> conn / as sysdba
    已连接。
    SQL> show user;
    USER 为 "SYS"
    SQL> select object_type,count(*) from all_objects where owner='JACK' group by object_type;

    OBJECT_TYPE           COUNT(*)
    ------------------- ----------
    TABLE                        1

    SQL> --发现下面有一个表,然后我们尝试用drop user命令来删除用jack;
    SQL> drop user jack;
    drop user jack
    *
    第 1 行出现错误:
    ORA-01922: 必须指定 CASCADE 以删除 'JACK'


    SQL> --发现报错了,无法删除,因为用户jack下面有对象;然后我们用drop user cascade来删除jack;
    SQL> drop user jack cascade;

    用户已删除。

    SQL> --测试成功;

  • 相关阅读:
    spring读取配置文件内容并自动注入
    xshell免费下载安装使用
    cas sso原理
    sql两列相除,保留n位小数
    mysql 报zone什么的错误
    mysql union出错: "Every derived table must have its own alias"
    mysql jdbc操作
    sql 对某列取值进行if判断
    Python深入:02浅拷贝深拷贝
    Python基础:22__slots__类属性
  • 原文地址:https://www.cnblogs.com/gongyu/p/4103035.html
Copyright © 2011-2022 走看看