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 数据库提供的工具 exp 和 imp 实现数据库的备份恢复和数据的导入导出。本文将详细介绍 Oracle 19c 备份恢复-导入导出的基本命令、工作...
例如,使用SYS用户以SYSDBA模式登录Oracle,然后创建一个新的用户,如`impexp`,用于测试导入导出操作。在SQL*Plus环境中执行相应的DML语句,如`DROP USER impexp CASCADE`以删除用户及其所有关联对象。 在实际操作...
"Oracle导入导出可执行文件"指的是Oracle的`expdp`和`impdp`命令行工具。这两个工具分别用于数据的导出和导入,它们能够帮助用户快速地将数据从一个数据库转移到另一个数据库,或者从一个表空间到另一个表空间。在...
- 直接路径方式:这是数据泵的主要工作方式,它绕过数据库缓存,直接将数据写入数据文件,从而提高了导入导出的速度。这种方式适用于大量数据的快速移动。 - 外部表方式:数据泵可以通过创建外部表来读取和写入...
### Oracle经典教程第七章:数据库导入导出详解 在Oracle数据库管理中,数据的导入导出是一项基础且关键的操作,用于实现数据的备份与恢复、数据迁移等需求。本章节将深入探讨Oracle数据库的导入导出机制,涵盖其...
"ORACLE导入数据文件到指定的表空间"这个主题涉及了Oracle数据库的导入工具(IMP)、数据泵(IMPDP)以及如何规划和管理表空间。 首先,我们需要了解Oracle的导入工具IMP。IMP是Oracle Data Pump Import的简称,它...
为了方便数据的迁移、备份或恢复,Oracle提供了多种导入导出工具,这些工具使得数据操作变得更为高效和便捷。本文将详细介绍Oracle的导入导出工具及其使用方法。 1. **Data Pump (expdp/impdp)** Oracle Data Pump...
### Oracle数据库创建表空间、建立用户、授权及备份恢复详解 #### 一、创建与管理表空间 在Oracle数据库中,表空间是物理空间分配的基本单位。为了有效地管理和使用存储资源,合理地创建和配置表空间是非常重要的...
以下是关于Oracle数据库导入导出的详细总结。 1. **数据泵导出(expdp)**: - **基本语法**:`expdp username/password directory=dir_name dumpfile=filename.dmp logfile=logfile.log` - **主要参数**:`...
Oracle数据导入导出是数据库管理中的重要操作,用于在不同环境之间转移数据,备份或恢复数据,以及在系统升级或迁移时保持数据完整性。Oracle提供了一对工具,即IMP(Import)和EXP(Export),来执行这些任务。下面...
### Oracle导入导出概述 #### 1. Oracle导入导出工具 Oracle提供了多种工具来实现数据的导入导出功能,主要包括`EXPDP`(Export Data Pump)和`IMPDP`(Import Data Pump)。这些工具相较于早期版本中的`EXP`和`IMP...
- 示例中创建了一个名为`bp_oracle`的表空间,并创建了同名用户。 ```sql CREATE TABLESPACE bp_oracle LOGGING DATAFILE '/u02/oradata/devdb/bp_oracle.dbf' SIZE 100M AUTOEXTEND ON NEXT 50M MAXSIZE 200M ...
若仅需导出特定用户或表,则需额外设定相应的用户、表空间和表信息。 8. **权限与数据导出**:默认选择“导出权限”和“导出数据”,除非有特别需求。 9. **压缩区设置**:选择是否启用压缩,这有助于减少导出文件的...
### Oracle-导出、导入某用户所有数据 #### 概述 在Oracle数据库管理中,导出和导入数据是一项常用且重要的操作。这项技术主要用于数据迁移、备份与恢复等场景。通过导出命令(`exp`)和导入命令(`imp`),我们...
总结起来,Oracle数据库的导入导出涉及多个方面,包括选择合适的工具、指定导出导入的对象、处理已存在的表以及优化性能等。理解并熟练掌握这些命令和参数对于数据库管理员来说至关重要,因为它直接关系到数据的安全...
总结以上知识点,我们可以了解到Oracle数据库导入导出过程包括了用户管理、权限分配、以及使用exp和imp命令进行数据的导出和导入操作。在执行这些操作时,DBA需要确保操作与本地数据库的版本保持一致,避免因版本不...
本资料"Oracle 导入导出命令集"提供了一套完整的Oracle命令行工具,帮助用户高效地进行数据操作。 Oracle的导入(IMP)和导出(EXP)工具是两个关键的实用程序,分别用于将数据从.dmp文件导入到数据库中和将数据库...