详解Oracle建立用户和对用户的管理

数据库 Oracle
本文是Oracle建立用户和对用户的管理基础性的文章,适合大家学习Oracle中的相关知识。包括建立、删除用户,建立表等等内容。

# 合法的Oracle标识符号

1、不能是保留关键字

2、必须使用1到30个字符。数据库的名称最多是8个字符。

3、必须以数据库字符集中的字母字符开头

4、只能够包含数据库字符集中的字母字符,以及以下字符:#、$、_,另外数据库链接可以包含@符号和'.'(句号)

5、不能包含引号

# 建立用户

create user angeos identified by angeos;

建立了用户:angeos,密码为:angeos

# 对用户授权

grant connect,resource to angeos;

对用户angeos授予了连接数据库和访问资源的权限

# 对用户授权

grant create session,dba to angeos;

CREATE SESSION是一个系统特权,它可以为用户提供连接数据库的能力。

DBA是一个具有超过120个系统特权的角色,所以它可以让用户在数据库中完成几乎任何工作。

# 改变用户的密码

alter user angeos identified by oracle;将用户angeos的密码改变为:oracle.

# 锁定帐号以及解锁

alter user oe account unlock;

然后用用户oe登录数据库服务器,密码为oe.注意:用户解锁后,要重启服务。

# 修改表空间的设置

默认情况下,它会使用表空间SYSTEM和TEMP(用于存放临时数据)。
不推荐采用这种方法。所以我们需要改变表空间。

通过系统用户连接数据库服务器


conn sys/sysadmin@hostname_services as sysdba;

然后查看表空间


select tablespace_name,contents from dba_tablespaces
order by tablespace_name;

使用USER表空间代替SYSTEM表空间


alter user angeos default tablespace users
temporary tablespace temp;

尝试建立一张表


create table table1
(
     fieldA varchar2(10)
)

# 删除用户

angeos

drop user angeos;

由于用户angeos有一张表table1,所以删除用户时,我们需要指定关键字CASCADE

drop user angeos cascade;

# 解释术语模式Schema

数据库的模式定义为数据库对象的集合,而模式的名称就是拥有或者控制这个数据库对象集合的用户名称。
所有数据库对象,例如表、视图、索引、触发器、Java存储过程、PL/SQL程序包,函数等,都是由Oracle
数据库中的一个用户所拥有。甚至Oracle的数据词典,系统编目也是名为SYS的模式的一部分。

用户的传统解释就是能够唯一标识一组信任凭证的名称和密码组合。

# 解释系统特权

在Oracle数据库中有两类特权:

(1)对象级别特权是由用户赋予的访问或者操作数据库对象的特权。

(2)系统特权不是控制对指定数据库对象的访问,而是用来许可对各种特性的访问,或者许可Oracle数据库中的特定任务。

查询特权

connect system/sysadmin

desc dba_sys_privs;

查询

select distinct privilege from dba_sys_privs order by privilege

赋予系统特权的语句

GRANT system_priviege to username [with admin option];

撤销系统特权的语句

REVOKE system_priviege from username;

注意:在任何用户能够连接到Oracle数据库之前,都需要向它们赋予CREATE SESSION特权,为他们提供连接许可。

##################################
# 建立数据表
##################################

# 语法规则
CREATE TABLE [SCHEMA.] (
     [default ] []
     [, [default ] []]
     [,...]
);

# 建表的例子
********************************************************************
CREATE TABLE CD_COLLECTION (
     ALBUM_TITLE     VARCHAR2(100),
     ARTISTVARCHAR2(100),
     COUNTRYVARCHAR2(25),
     RELEASE_DATE     DATE,
     LABELVARCHAR2(25),
     PRIMARY KEY (ALBUM_TITLE, ARTIST)
);
********************************************************************
CREATE TABLE seagal.SONGS (
     SONG_TITLEVARCHAR2(100),
     COMPOSER     VARCHAR2(100),
     LENGTHNUMBER,
     TRACKNUMBER,
     ARTISTVARCHAR2(100),
     ALBUM_TITLE     VARCHAR2(100),
     FOREIGN KEY (ARTIST, ALBUM_TITLE) REFERENCES seagal.CD_COLLECTION(ARTIST,   ALBUM_TITLE),
     PRIMARY KEY (SONG_TITLE, ARTIST, ALBUM_TITLE)
);


********************************************************************
select * from seagal.cd_collection;
select * from seagal.songs;
********************************************************************

********************************************************************
INSERT INTO seagal.CD_COLLECTION 
VALUES('Black Sheets of Rain', 'Bob Mould', 'USA',to_date('01-01-92','DD-MM-YY'), 'Virgin');

INSERT INTO seagal.CD_COLLECTION
VALUES('Candy Apple Grey', 'Husker Du', 'USA',to_date('01/01/86','DD/MM/YY'), 'Warner Brothers');

INSERT INTO seagal.SONGS
VALUES('Black Sheets of Rain','Mould', NULL,1, 'Bob Mould', 'Black Sheets of Rain');

INSERT INTO seagal.SONGS
VALUES('Crystal','Mould', 3.28, 1, 'Husker Du', 'Candy Apple Grey');

INSERT INTO seagal.SONGS
VALUES('Don''t want to know if you are lonely ','Hart', 3.28, 2, 'Husker Du', 'Candy Apple Grey');

INSERT INTO seagal.SONGS
VALUES('I don''t know for sure','Mould', 3.28, 3, 'Husker Du', 'Candy Apple Grey');

INSERT INTO SONGS VALUES('Black Sheets of Rain','Mould', NULL,1, 'Bob Mould', 'Black Sheets of Rain');

COMMIT;
*******************************************************

******************************************************
DROP TABLE FRUITS;

CREATE TABLE FRUITS (
FRUIT VARCHAR2(12),
COLOR VARCHAR2(12),
QUANTITY NUMBER,
PRICE NUMBER,
PICKED DATE
);

INSERT INTO FRUITS VALUES('Apple', 'Green', 12, 0.5, '12-Sep-2002');
INSERT INTO FRUITS VALUES('Apple', 'Red', 12, 0.5, '15-Sep-2002');
INSERT INTO FRUITS VALUES('Mango', 'Yellow', 10, 1.5,
'22-Sep-2002');
INSERT INTO FRUITS VALUES('Mangosteen', 'Purple', 5, 2,
'25-Sep-2002');
INSERT INTO FRUITS VALUES('Durian', 'NULL', 2, 15, NULL);
INSERT INTO FRUITS VALUES('Orange', 'Orange', 10, 1.5, '28-Aug-2002');

COMMIT;
*********************************************************
COMMIT;

# CREATE TABLE AS SELECT的语句

通过查询一个表,并且将查询结果集物化到一个常规表中来建立表。
复制表的结构,但是约束、索引和触发器等对象不会被放入新的表中。

例子:

create table emp_copy as

select * from scott.emp;

# 数据词典

每一个数据库都有一个数据词典,任何管理Oracle数据库,或者使用Oracle构建应用的用户都需 要使用数据词典。
数据词典是Oracle数据库的编目。

当建立用户、表、约束和其它数据库对象的时候,Oracle都会自动维护一个在数据库中存储的项  目编目。

例如:USER_TABLES视图可以展示当前用户所拥有的所有表的信息。

使用DESCRIBE命令查看USER_TABLES视图的结构信息。

具有DBA权限的用户可以查看DBA_TABLES

select owner ,table_name,tablespace_name from dba_tables

where owner in('SCOTT','HR')

order by owner,tablesapce_name,table_name

【编辑推荐】

  1. 实例讲解Oracle 9i数据坏块的处理
  2. Oracle数据库管理脚本浅析
  3. Oracle 11g中实现自我调整功能
责任编辑:彭凡 来源: 新浪博客
相关推荐

2010-10-28 11:42:28

Oracle只读用户角

2010-02-07 13:45:29

Ubuntu orac

2010-04-23 15:58:20

Oracle用户

2018-09-29 14:48:22

用户管理

2010-11-29 14:33:22

Sybase用户管理

2010-10-29 10:46:23

Oracle超级用户

2009-10-29 15:56:12

Oracle用户权限视

2009-11-24 17:20:48

Oracle查看用户表

2010-03-31 15:38:33

Oracle用户

2010-10-28 11:36:16

Oracle用户

2009-10-22 17:17:54

Oracle给用户解锁

2009-10-26 14:37:03

Oracle如何解锁用

2009-10-22 16:01:43

Oracle用户管理

2009-10-22 16:38:09

Oracle用户

2010-10-29 11:55:48

oracle用户

2010-04-20 16:04:22

Oracle管理员

2009-10-27 18:01:46

2010-11-19 10:26:19

Oracle创建用户

2009-11-02 14:53:30

Oracle创建用户权

2009-11-03 17:08:38

Oracle修改用户权
点赞
收藏

51CTO技术栈公众号