`
雨过天晴0521
  • 浏览: 159554 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何创建oracle新用户(新schema)

 
阅读更多
oracle中创建新的user, 也就相应地创建了一个新的schema, 用来区别其他目录的同时, 还保存所有相关user的数据对象以及user的表.

How to create a new user? (create a new db)

首先用system(默认密码为manager)用户登陆连接数据库.

The statement create user creates a user.
In the most simple form, the create user statement is one of the following three:

create user alfredo identified by alfredos_secret;
create user alfredo identified externally;
create user alfredo identified globally as 'external_name';


The first one creates a local user, the second one creates an external user while the last one creates global user.


How to create locked users?

A user can be created locked, that is, the user cannot connect to the database.

SQL> create user alfredo identified by passw0rd account lock;

The user is now created, he can be granted some rights, for example the right to connect to the database:

SQL> grant connect to alfredo;


Now, if the user tries to connect to the database, he will get ORA-28000:

SQL> connect alfredo/passw0rd
ERROR:
ORA-28000: the account is locked


The user can now be unlocked with an alter user statement:

SQL> alter user alfredo account unlock;


Which allows Alfredo to log on to the database now:

SQL> connect alfredo/passw0rd
Connected.


如何赋予用户权限或角色?

可以用grant直接给用户赋予权限, 也可以赋予用户角色, 角色可以看做是权限的集合.
这里我们只讨论角色, 权限可以参考http://www.techonthenet.com/oracle/grant_revoke.php

注意前面grant仅仅赋予了用户connect role, 这个role仅仅是给予用户的一些常见权利,最基本的, 不包括创建表等privileges  
   
   ALTER    SESSION    --修改会话  
   CREATE    CLUSTER    --建立聚簇  
   CREATE    DATABASE    LINK    --建立数据库链接  
   CREATE    SEQUENCE    --建立序列  
   CREATE    SESSION    --建立会话  
   CREATE    SYNONYM    --建立同义词  
   CREATE    VIEW    --建立视图  

如需要可以再赋予resource角色:    --是授予开发人员的  
   
   CREATE    CLUSTER    --建立聚簇  
   CREATE    PROCEDURE    --建立过程  
   CREATE    SEQUENCE    --建立序列  
   CREATE    TABLE    --建表  
   CREATE    TRIGGER    --建立触发器  
   CREATE    TYPE    --建立类型

SQL> grant connect, resource to alfredo;


但是实际查找oracle 10 2.0.1.0 系统时,发现两个role的privileges和上诉有所不同:

用sys登陆到oracle中,执行以下两条语句:

         select * from role_sys_privs WHERE ROLE LIKE 'CONNECT';  --查询connect角色的权限

         select * from role_sys_privs WHERE ROLE LIKE 'RESOURCE';  --查询 resource角色的权限


CONNECT角色:    --是授予终端用户的典型权利,最基本的      
   CREATE    SESSION    --建立会话  
       
RESOURCE角色:    --是授予开发人员的     
   CREATE    CLUSTER         --建立聚簇  
   CREATE    PROCEDURE       --建立过程  
   CREATE    SEQUENCE        --建立序列  
   CREATE    TABLE           --建表  
   CREATE    TRIGGER         --建立触发器  
   CREATE    TYPE            --建立类型
   CREATE    OPERATOR        --创建操作者
   CREATE    INDEXTYPE       --创建索引类型
   CREATE    TABLE           --创建表

也就是说不同oracle版本两个role的privilege会有所区别.

如何删除user(schema)?

如果想要快速的删除一个Schema下的所有数据库对象,您会使用什么样的手段来完成呢?
如果您是DBA,可能更倾向于先删除用户(Drop User)然后再重新创建用户。
优点:删除的彻底,不留任何痕迹(这是DBA伟大和危险的真实体现)。
缺点:要求的操作权限比较高,往往需要DBA亲力亲为;有一定误操作的风险;不便于书写到自动化脚本中,因为在当前用户有session连接的情况下是无法实现用户删除的。

如果drop user 用户名:  时出现下边的错误:
情况 1.
12:19:13  [DROP - 0 row(s), 0.000 secs]  [Error Code: 1922, SQL State: 42000]  ORA-01922: CASCADE must be specified to drop 'MIKE'

drop user 用户名  cascade;
注意:
drop user xx :只是删除用户
drop user xx cascade :会删除此用户名下的所有表和视图

情况 2.

SQL〉DROP USER mike01 CASCADE

ERROR:ORA-01940: cannot drop a user that is currently connected


由于当前用户正连接到数据库,所以无法删除

解决办法:

1) 查询此用户的会话进程,

SQL〉SELECT SID,SERIAL# FROM V$SESSION WHERE USERNAME='mike01';

       SID    SERIAL#
---------- ----------
        24      25341
        86      18117


2) 结束此用户的所有会话

SQL>ALTER  SYSTEM  KILL SESSION '24,25341';

System altered.

SQL>ALTER SYSTEM KILL SESSION '86,18117';

System altered.


3) 删除用户

SQL〉DROP USER USER1 CASCADE;



如果您是一名开发人员,可能会倾向于使用开发工具(如Toad、PL/SQL Developer等)点选的方式完成清理工作。
优点:要求权限不高,如果工具功能掌握熟练可以较快的完成删除任务。
缺点:无法实现自动化和批量操作的目的,人工成本太高,效率极低;存在工具软件异常假死的现象,不推荐使用。
分享到:
评论

相关推荐

    oracle创建表,索引,表空间,触发器,schema用户,序列的Sql文

    这创建了一个名为MyUser的新用户,密码为password,并赋予了创建表和索引的权限。 6. **创建序列**:序列是Oracle中的一个特殊对象,用于生成唯一的整数序列号。例如: ```sql CREATE SEQUENCE seq_employee_id ...

    oracle中schema指的是什么意思

    在Oracle中,虽然有`CREATE SCHEMA`语句,但这并不是用来直接创建新的Schema的,而是通过创建用户来间接实现Schema的创建。因此,Schema的数目与User的数目相同,每个Schema都有一个与之对应且同名的User。 当我们...

    oracle hr schema

    创建新用户"hr"的SQL语句可能如下: ```sql CREATE USER hr IDENTIFIED BY password; GRANT CONNECT, RESOURCE, CREATE VIEW TO hr; ``` 这里,`IDENTIFIED BY password`指定了用户的密码,`CONNECT`、`RESOURCE`...

    oracle hr用户创建脚本

    1. **创建用户并授权**:定义一个新用户,为其分配密码,并赋予连接到数据库和管理对象的权限。 ```sql CREATE USER hr IDENTIFIED BY password; GRANT CREATE SESSION, CREATE TABLE, CREATE VIEW, CREATE INDEX, ...

    用Toad for Oracle的Data Dump导入和导出Schema中的数据.txt

    - 点击 **New Export** 创建新的导出任务。 - 在 **Schema** 标签页下,选择需要导出的 Schema。 - 在 **Items to Export** 部分,可以选择导出所有表或特定表。 - 在 **Params** 选项卡中: - **Content to export...

    Oracle创建hr用户的脚本

    首先,创建一个新用户在Oracle中涉及到几个关键步骤,包括定义用户名、密码、默认表空间、临时表空间以及权限设置。以下是一个简单的创建HR用户的SQL脚本示例: ```sql CREATE USER hr IDENTIFIED BY Welcome123; `...

    oracle创建表空间,创建用户,授权给新建的用户实例全解

    本篇文章将深入解析如何在Oracle中创建表空间、创建用户以及如何将权限授予新创建的用户。 一、创建表空间 在Oracle中,表空间用于组织和存储数据库对象,如表、索引、视图等。创建表空间的步骤如下: 1. **定义...

    Oracle创建表空间、创建用户、授权、授权对象的访问以及查看权限

    在这个例子中,我们创建了一个名为`usertest`的新用户,其默认表空间为`TEST_DATA`,临时表空间为`TEST_TEMP`。 ### 三、授权 #### 3.1 授权用户 在Oracle中,管理员可以通过GRANT语句来授予用户各种权限。例如,...

    Oracle HR Schema

    通过Oracle HR Schema,用户可以学习如何设计和管理关系数据库,理解SQL语言,以及如何在实际业务环境中使用Oracle数据库。对于开发者和DBA来说,这是一个极好的实践平台,可以加深对数据库管理和开发的理解。

    ORACLE11g研究新特性

    Oracle 11g对XML的支持进一步加强,包括更快的XML索引、XML Schema支持和XML数据类型增强,使得处理XML数据更加便捷。 以上只是Oracle 11g新特性的一部分,实际的学习资料可能涵盖了更多细节和实用技巧。通过深入...

    Oracle过程中创建视图

    -- 创建新的表 EXECUTE IMMEDIATE 'CREATE TABLE WJT_' || v_string2 || '(ID NUMBER, NAME VARCHAR2(10))'; -- 检查视图是否存在,如果存在则删除 SELECT COUNT(1) INTO v_cnt FROM USER_VIEWS WHERE VIEW_...

    解析Oracle数据库中的对象集合schema

    当创建一个新用户时,Oracle会自动为该用户创建一个同名的Schema。用户可以通过自己的Schema来管理对象,执行数据操作。在企业级应用中,经常会有多个Schema共享同一个数据库实例,这使得资源分配和权限管理更为灵活...

    手动添加schema文件

    4. **处理权限和角色**:根据schema文件中的定义,可能需要创建用户、角色并分配相应的权限。这通常涉及到`GRANT`和`REVOKE`语句。 5. **验证结果**:导入完成后,通过查询数据库来验证是否正确创建了所有预期的...

    最完整的Toad For Oracle使用手册

    - **Create New Connection**:指导用户创建新的连接。 - **Selecting Connection Color**:允许用户为不同的连接选择颜色以便区分。 - **SET ROLE**:讲述了如何使用SET ROLE命令切换角色。 - **Auto Connect**:...

    数据库的catalog与schema

    在SQL中,Schema通常以用户名的形式出现,比如`CREATE SCHEMA 用户名`命令用于创建一个新的Schema。在创建表时,可以指定该表属于哪个Schema,如`CREATE TABLE 用户名.表名 (...)`. 这样做有助于保持数据库的整洁,...

    Oracle dmp文件导出导入(还原)到不同的表空间和不同的用户操作

    假设需要将一个名为`EXPDAT.dmp`的DMP文件从用户`qfyx`的`qfyx_ts`表空间导入到新用户`qctyx`下的`qctyx_ts`表空间中,可以按照以下步骤操作: 1. **创建表空间和用户**: - 创建表空间`qctyx_ts`。 - 创建用户`...

    oracle示例数据库OT_oracle数据库

    `ot_create_user.sql`用于创建新的数据库用户,并可能包含分配权限和角色的部分。这在实际环境中很重要,因为你需要控制谁可以访问数据库,以及他们能进行哪些操作。学习者可以通过这个文件了解如何管理用户账户,...

    力控与Oracle数据库的连接[整理].pdf

    本文主要介绍了力控与Oracle数据库的连接配置注意事项,并提供了详细的步骤指导用户如何创建新的数据库、用户和数据表,并与力控进行连接。 一、Oracle数据库的结构 Oracle数据库的结构简单来说可以表示为数据库→...

    Oracle用户、权限、角色管理

    - **CONNECT**: 拥有Connect权限的用户可以登录Oracle,但不能创建实体或数据库结构。 对于不同类型的用户,权限授予也有所不同: - **普通用户**:通常授予`CONNECT`和`RESOURCE`权限。 - **DBA管理用户**:除了`...

Global site tag (gtag.js) - Google Analytics