create tablespace ivan datafile '/home/oracle/dba.dbf' size 100m autoextend on next 10m maxsize unlimited;
1) DATAFILE: 表空间数据文件存放路径
2) SIZE: 起初设置为200M
3) UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k
4) 空间名称ivan 与 数据文件名称 dba.dbf 不要求相同,可随意命名.
5) AUTOEXTEND ON/OFF 表示启动/停止自动扩展表空间
创建用户语法:
CREATE USER user
IDENIFIED BY password [default tablespace 默认表空间名/temporary tablespace 临时表空间名 quota 配额大小 on 表空间名]
default tablespace:用户的默认表空间
temporary tablespace:用户的临时表空间
quota on:表示允许该用户在表空间中使用的空间总大小。可以设置多个不同的表空间。
执行该语句当用户需要有‘创建用户’的权限,一般为系统的DBA用户
创建用户并指定表空间:
create user test identified by test default tablespace ivan;
登录权限
用户如果想登录,至少需要有"CREATE SESSION"的权限
grant create session to test;
用户建表相关权限
·对新建用户,默认情况,用户对于其所拥有对象具有所有的数据的增删改查权限,但没有定义的权限(如创建表等)。用户要想创建对象,需要有对象的创建权限CREATE TABLE、CREATE SEQUENCE等
·以test用户身份建表:
CREATE TABLE emp1(id NUMBER,las_name VARCHAR2(20),salary NUMBER);
返回权限不足。
CREATE TABLE emp1
*
ERROR at line 1:
ORA-01031: insufficient privileges
用户建表想关权限
·赋予test用户的创建表的权限
conn / as sysdba
GRANT CREATE TABLE TO test;
·test用户身份执行建表操作:
CREATE TABLE emp1(id NUMBER,last_name VARCHAR2(20),salary NUMBER);
如果这步返回表空间ivan无权限的话
·建表的相关权限
-CREATE TABLE
-空间使用权限,需要DBA来分配。
·用户空间分配和管理
-给用户分配表空间的配额;
-给用户指定一个默认的表空间,如果没有特殊指定,则对象都是在该用户默认表空间创建的。若不指定默认表空间,则系统缺省默认表空间是USERS,默认情况下,USERS表空间是有给任何普通用户分配配额的。如果是默认表空间是新建的,则需要给空间分配配额。
·查询数据库表空间。以sys用户身份
select * from v$tablespace;
select * from dba_tablespaces;
insert into emp1 values (1,'xy',5000);
返回ORA-01950: no privileges on tablespace 'IVAN'
问题:没有分配表空间配额:
修改默认表空间及配额
·语法
ALTER USER 用户名
DEFAULT TABLESPACE 默认表空间名;
ALTER USER 用户名
QUOTA 10M ON 表空间名;
conn / as sysdba
alter user test quota 10M ON ivan;
conn test/test
insert into emp1 values (1,'xy',5000);
这样就可以插入数据了。
修改用户密码
·语法
ALTER USER user IDENTIFIED BY 新密码;
·DBA可以修改任何普通用户的密码,而不需要知道用户的旧密码。
·在SQLPLUS下执行password命令来修改登录用户自己的密码,提示会输入旧密码和新密码。
用户状态
·用户状态:OPEN、EXPIRED、LOCKED
-OPEN表示正常状态,为用户帐号初始创建后状态。
-EXPIRED表示密码过期,用户下次登录的时候需要修改密码;
-LOCKED表示该账户已被锁定,不能执行任何ORACLE相关操作(即使拥有相关的权限)。
·状态管理语句:
ALTER USER user PASSWORD EXPIRE;--密码过期
ALTER USER user ACCOUNT LOCK[UNLOCK];--账户锁定/解锁
删除用户
·删除用户语法
DROP USER user [CASCADE]
·CASCADE表示系统先自动删除该用户下的所有对象,然后再删除该用户的定义。
·已经登录的用户是不允许被删除的。
数据字典视图
·与用户信息相关的数据字典视图有
-DBA_USERS是关于用户的属性信息
-DBA_TS_QUOTAS是用户的相关表空间的配额信息
·数据字典视图一般是以system用户身份执行:
SELECT username,account_status,default_tablespace FROM dba_users;
SELECT * FROM dba_ts_quotas;
权限管理
·oracle中存在两种权限
-系统权限(SYSTEM PRIVILEGE):允许用户在数据库中执行指定的行为,一般可以理解成比较通用的一类权限。
-对象权限(OBJECT PRIVILEGE):允许用户访问和操作一个指定的对象,该对象是一个确切存储在数据库中的命名对象。
系统权限
·包含100多种系统权限,其主要作用:
-执行系统端的操作,比如CREATE SESSION是登录的权限,CREATE TABLESPACE创建表空间的权限
-管理某类对象,比如CREATE TABLE是用户建表的权限
-管理任何对象,比如CREATE ANY TABLE,ANY关键字表明该权限“权力”比较大,可以管理任何用户下的表,所以一般只有DBA来使用该权限,普通用户是不应该拥有这个该类权限的。
表的系统权限
·CREATE TABLE (建表)
·CREATE TABLE (在任何用户下建表)
·ALTER ANY TABLE(修改任何用户的表的定义)
·DROP ANY TABLE (删除任何用户的表)
·SELECT ANY TABLE (从任何用户的表中查询数据)
·UPDATE ANY TABLE (更改任何用户表的数据)
·DELETE ANY TABLE (删除任何用户的表的记录)
索引及会话系统权限
·索引:
-CREATE ANY INDEX (在任何用户下创建索引)
-ALTER ANY INDEX (修改任何用户的索引定义)
-DROP ANY INDEX (删除任何用户的索引)
·会话:(SESSION)
-CREATE SESSION (创建会话,登录权限)
-ALTER SESSION (修改会话)
表空间系统权限
·表空间
-CREATE TABLESPACE (创建表空间)
-ALTER TABLESPACE (修改表空间)
-DROP TABLESPACE (删除表空间)
-UNLIMITED TABLESPACE (不限制任何表空间的配额)
·注意:表空间的所有权限都不应该分配给普通用户。
系统特权
·系统特权权限SYSDBA和SYSOPER
-SYSOPER的权限:启动停止数据库,恢复数据库等
-SYSDBA的权限:所有SYSOPER功能的管理权限;创建数据库等权限。
·注意:以系统特权权限登录的用户一般都是特权用户,或称为超级用户。以SYSDBA身份登录的用户在ORACLE中是权限最大的用户,可以执行数据库的所有操作。这些特权权限是不应该随便赋予给普通用户的。
系统权限授予
·授予用户系统权限语法
GRANT sys_priv_list TO usr_list [WITH ADMIN OPTION]
·sys_priv_list:是一个系统特权的列表,由逗号分隔
·user_list:是一个用户的列表,由逗号分隔
·WITH ADMIN OPTION:允许权限的接受者再把此特权授予其他用户。
系统权限授予
·授予test用户CREATE SESSION权限
GRANT create session TO test WITH ADMIN OPTION;
·以test身份执行CREATE SESSION权限管理:
GRANT create session TO neu;
系统权限回收
·回收系统权限
语法:REVOKE 系统权限列表 FROM user列表;
·只能回收使用GRANT授权过的权限,权限被回收后,用户就失去了原权限的使用权和管理权(如果有管理权限的话)。
·注意:使用WITH ADMIN OPTION选项授予的权限在回收时候的级联回收策略如下:
-如果用户A授予权限给用户B,同时带有选项WITH ADMIN OPTION,用户B给予出去的权限(用户C对该权限的使用权)是否还继续存在。在系统权限管理中,ORACLE的策略是继续保留权限,用户C继续拥有该权限的使用权。
-也就是说,系统权限不会级联回收。所以在权限回收时必须将获权用户的权限一一回收。
对象权限
·对象权限是在指定的表、视图、序列或过程上执行指定动作的权限或权利。
·每个对象都有一个特殊的可授予的权限集。