`
loupeng0916
  • 浏览: 5077 次
社区版块
存档分类
最新评论

oralce创建用户,角色,授权,表空间,导入导出总结(完整版)

 
阅读更多

oracle数据库的权限系统分为系统权限与对象权限。系统权限( database system privilege )可以让用户执行特定的命令集。例如,create table权限允许用户创建表,grant any privilege 权限允许用户授予任何系统权限。对象权限( database object privilege )可以让用户能够对各个对象进行某些操作。例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、序列(sequences)或快照(snapshots)中查询信息。

 

  每个oracle用户都有一个名字和口令,并拥有一些由其创建的表、视图和其他资源。oracle角色(role)就是一组权限(privilege)(或者是每个用户根据其状态和条件所需的访问类型)。用户可以给角色授予或赋予指定的权限,然后将角色赋给相应的用户。一个用户也可以直接给其他用户授权

       一、创建用户

       oracle内部有两个建好的用户:system和sys。用户可直接登录到system用户以创建其他用户,因为system具有创建别 的用户的 权限。 在安装oracle时,用户或系统管理员首先可以为自己建立一个用户。例 如 :

 

Sql代码 

       创建用户:

       create user cmis identified by  "cmis";  

    修改口令:

        alter user cmis identified by "cmis2008"; 

  除了alter user命令以外,用户还可以使用password命令。如果使用password命令,用户输入的新口令将不在屏幕上显示。有dba特权的用户可以通过password命令改变任何其他用户的口令;其他用户只能改变自己的口令。

 

  当用户输入password命令时,系统将提示用户输入旧口令和新口令,如下所示:

 

  password

    changing password for cmis

       old password:cmis2008

       new password:cmis

       retype new password:

       当成功地修改了口令时,用户会得到如下的反馈:

       password changed

 

  二 、删除用户

 

  删除用户,可以使用drop user命令,如下所示:

 

  drop user cmis;

 

  如果用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。下面的例子用来删除用户与其对象:

 

  drop user cmis cascade;

 

  三 、3种标准角色

 

  qracle为了兼容以前的版本,提供了三种标准的角色(role):connect、resource和dba。

 

  1. connect role(连接角色)

 

  临时用户,特别是那些不需要建表的用户,通常只赋予他们connect role。connect是使用oracle的简单权限,这种权限只有在对其他用户的表有访问权时,包括select、insert、update和delete等,才会变得有意义。拥有connect role的用户不能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym )、会话(session)和与其他数据库的链(link)。

 

  2. resource role(资源角色)

 

  更可靠和正式的数据库用户可以授予resource role。resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。

 

  3. dba role(数据库管理员角色)

 

  dba role拥有所有的系统权限----包括无限制的空间限额和给其他用户授予各种权限的能力。system由dba用户拥有。下面介绍一些dba经常使用的典型权限。

 

  (1)grant(授权)命令

 

  下面对刚才创建的用户cmis 授权,命令如下:

 

  grant connect, resource to cmis;

 

  (2)revoke(撤消)权限

 

  已授予的权限可以撤消。例如撤消(1)中的授权,命令如下:

 

  revoke connect, resource from cmis;

 

  一个具有dba角色的用户可以撤消任何别的用户甚至别的dba的connect、resource 和dba的其他权限。当然,这样是很危险的,因此,除非真正需要,dba权限不应随便授予那些不是很重要的一般用户。 撤消一个用户的所有权限,并不意味着从oracle中删除了这个用户, 也不会破坏用户创建的任何表;只是简单禁止其对这些表的访问。其他要访问这些表的用户可以象以前那样地访问这些表。

 

  四、创建角色

 

  除了前面讲到的三种系统角色----connect、resource和dba,用户还可以在oracle创建自己的role。用户创建的role可以由表或系统权限或两者的组合构成。为了创建role,用户必须具有create role系统权限。下面给出一个create role命令的实例:

 

  create role student;

 

  这条命令创建了一个名为student的role。

 

  一旦创建了一个role,用户就可以给他授权。给role授权的grant命令的语法与对对用户的语法相同。在给role授权时,在grant命令的to子句中要使用role的名称,如下所示:

 

  grant select on class to student;

 

  现在,拥有student 角色的所有用户都具有对class 表的select权限。

 

  五、删除角色

 

  要删除角色,可以使用drop role命令,如下所示:

 

  drop role student;

 

  指定的role连同与之相关的权限将从数据库中全部删除。

 

    六.删除表的注意事项

        在删除一个表中的全部数据时,须使用truncate; 

        truncate table 表名  

        因为用drop table,delete * from 表名时,tablespace表空间该表的占用空间并未释放,反复几次drop,delete操作后,该tablespace上百兆的空间就被耗光了。

        关于oracle使用delete删除的问题
 
问题:
 
在oracle里使用delete删除数据以后,数据库的存储容量不会减少,而且使用delete
删除某个表的数据以后,查询这张表的速度和删除之前一样,不会发生变化。
 
原因:
        因为oralce有一个HWM高水位,它是oracle的一个表使用空间最高水位线。当插入了数据以后,
高水位线就会上涨,但是如果你采用delete语句删除数据的话,数据虽然被删除了,但是高水位线却没有降低,还是你刚才删除数据以前那么高的水位。除非使用truncate删除数据。那么,这条高水位线在日常的增删操作中只会上涨,不会下跌,所以数据库容量也只会上升,不会下降。而使用select语句查询数据时,数据库会扫描高水位线以下的数据块,因为高水位线没有变化,所以扫描的时间不会减少,所以才会出现使用delete删除数据以后,查询的速度还是和delete以前一样。
 
  
解决方案:
 
1.首先导出表,然后truncate这张表,最后导入这张表;
2.在存储空间当中移动表,但是由于rowid会被打乱,所以需要重建索引;
3.如果是oracle 10g版本,那么可以直接更新表的高水位线。
 
对应的SQL如下:
9i版本:
create table aa_bak as select * from aa where record_time > sysdate - 10;
truncate table aa; 
insert into aa select * from aa_bak;
drop table aa_bak; 
10g版本:
alter tablename enable row movement;
alter tablename shrink space; 

 

 

创建表空间:

create tablespace tbs_cmis datafile 'E:\oracle\product\10.2.0\oradata\orcl\tbs_cmis .dbf' size 500M
AUTOEXTEND ONNEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;

 

 

CREATE TEMPORARY TABLESPACE tbs_temp TEMPFILE 'E:\oracle\product\10.2.0\oradata\orcl\tbs_temp.dbf'
SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL;

drop user cmis cascade;

CREATE USER cmis IDENTIFIED BY "cmis2008"
DEFAULT TABLESPACE tbs_cmis TEMPORARY TABLESPACE tbs_temp;

alter user cmis quota unlimited on  tbs_cmis;
alter talbe tablename move tablespace tbs_cmis;

 

在move表之后,需要把与这些表相关的所有索引重建一下,因为他们失效了,用下面的语句重建索引:

alter index  索引名 rebuild;

重建分区索引:alter index index_name rebuild partition partition_name;

 

 


 

分享到:
评论

相关推荐

    Oracle 19c 备份恢复-导入导出

    Oracle 19c 备份恢复-导入导出 Oracle 19c 备份恢复-导入导出是指使用 Oracle 数据库提供的工具 exp 和 imp 实现数据库的备份恢复和数据的导入导出。本文将详细介绍 Oracle 19c 备份恢复-导入导出的基本命令、工作...

    Oracle导入导出.ppt

    例如,使用SYS用户以SYSDBA模式登录Oracle,然后创建一个新的用户,如`impexp`,用于测试导入导出操作。在SQL*Plus环境中执行相应的DML语句,如`DROP USER impexp CASCADE`以删除用户及其所有关联对象。 在实际操作...

    Oracle可执行文件,包含导入导出可执行文件

    "Oracle导入导出可执行文件"指的是Oracle的`expdp`和`impdp`命令行工具。这两个工具分别用于数据的导出和导入,它们能够帮助用户快速地将数据从一个数据库转移到另一个数据库,或者从一个表空间到另一个表空间。在...

    oracle 数据泵与传统的导入导出的区别与实践

    - 直接路径方式:这是数据泵的主要工作方式,它绕过数据库缓存,直接将数据写入数据文件,从而提高了导入导出的速度。这种方式适用于大量数据的快速移动。 - 外部表方式:数据泵可以通过创建外部表来读取和写入...

    Oracle经典教程7——数据库导入导出

    ### Oracle经典教程第七章:数据库导入导出详解 在Oracle数据库管理中,数据的导入导出是一项基础且关键的操作,用于实现数据的备份与恢复、数据迁移等需求。本章节将深入探讨Oracle数据库的导入导出机制,涵盖其...

    ORACLE导入数据文件到指定的表空间

    "ORACLE导入数据文件到指定的表空间"这个主题涉及了Oracle数据库的导入工具(IMP)、数据泵(IMPDP)以及如何规划和管理表空间。 首先,我们需要了解Oracle的导入工具IMP。IMP是Oracle Data Pump Import的简称,它...

    Oracle 导入导出工具

    为了方便数据的迁移、备份或恢复,Oracle提供了多种导入导出工具,这些工具使得数据操作变得更为高效和便捷。本文将详细介绍Oracle的导入导出工具及其使用方法。 1. **Data Pump (expdp/impdp)** Oracle Data Pump...

    Oracle数据库创建表空间、建立用户、授权、还原备份.docx

    ### Oracle数据库创建表空间、建立用户、授权及备份恢复详解 #### 一、创建与管理表空间 在Oracle数据库中,表空间是物理空间分配的基本单位。为了有效地管理和使用存储资源,合理地创建和配置表空间是非常重要的...

    oracle数据库导入导出总结

    以下是关于Oracle数据库导入导出的详细总结。 1. **数据泵导出(expdp)**: - **基本语法**:`expdp username/password directory=dir_name dumpfile=filename.dmp logfile=logfile.log` - **主要参数**:`...

    Oracle数据导入导出

    Oracle数据导入导出是数据库管理中的重要操作,用于在不同环境之间转移数据,备份或恢复数据,以及在系统升级或迁移时保持数据完整性。Oracle提供了一对工具,即IMP(Import)和EXP(Export),来执行这些任务。下面...

    oracle导入导出代码

    ### Oracle导入导出概述 #### 1. Oracle导入导出工具 Oracle提供了多种工具来实现数据的导入导出功能,主要包括`EXPDP`(Export Data Pump)和`IMPDP`(Import Data Pump)。这些工具相较于早期版本中的`EXP`和`IMP...

    Oracle11g_数据库导入导出.pdf

    - 示例中创建了一个名为`bp_oracle`的表空间,并创建了同名用户。 ```sql CREATE TABLESPACE bp_oracle LOGGING DATAFILE '/u02/oradata/devdb/bp_oracle.dbf' SIZE 100M AUTOEXTEND ON NEXT 50M MAXSIZE 200M ...

    Oracle数据库的导出与导入操作

    若仅需导出特定用户或表,则需额外设定相应的用户、表空间和表信息。 8. **权限与数据导出**:默认选择“导出权限”和“导出数据”,除非有特别需求。 9. **压缩区设置**:选择是否启用压缩,这有助于减少导出文件的...

    Oracle-导出、导入某用户所有数据

    ### Oracle-导出、导入某用户所有数据 #### 概述 在Oracle数据库管理中,导出和导入数据是一项常用且重要的操作。这项技术主要用于数据迁移、备份与恢复等场景。通过导出命令(`exp`)和导入命令(`imp`),我们...

    Oracle数据库导入导出.pdf

    总结起来,Oracle数据库的导入导出涉及多个方面,包括选择合适的工具、指定导出导入的对象、处理已存在的表以及优化性能等。理解并熟练掌握这些命令和参数对于数据库管理员来说至关重要,因为它直接关系到数据的安全...

    oracle数据库导入导出

    总结以上知识点,我们可以了解到Oracle数据库导入导出过程包括了用户管理、权限分配、以及使用exp和imp命令进行数据的导出和导入操作。在执行这些操作时,DBA需要确保操作与本地数据库的版本保持一致,避免因版本不...

    Oracle 导入导出命令集.rar

    本资料"Oracle 导入导出命令集"提供了一套完整的Oracle命令行工具,帮助用户高效地进行数据操作。 Oracle的导入(IMP)和导出(EXP)工具是两个关键的实用程序,分别用于将数据从.dmp文件导入到数据库中和将数据库...

Global site tag (gtag.js) - Google Analytics