Oracle数据库的开发与应用(2)

2019-05-17 16:20

方法二具体步骤如下:

? 打开ORACLE配置和移植工具中的Net Configuration Assistant,选中本地NET服务名配置,下一

步,添加,下一步,服务名处输入数据库例程名,下一步,选中TCP,下一步,主机名处输入服务器所在机器的主机名或IP地址,选中使用标准端口号,下一步至完成。

? 方法二中也可以对已经配置好的NET服务进行重新配置或者重新命名、删除测试。

2 管理用户访问

2.1 表空间、用户及方案概述

表空间是数据库的逻辑组成部分。从物理上说,数据库数据存放在数据文件中;从逻辑上说,数据库数据存放在表空间(tablespace)中,并且表空间是由一个或多个数据文件组成的。

一个表空间是由一个或多个数据文件组成的。

用户(也称为帐户)是定义在数据库中的一个名称,它是Oracle数据库的基本访问控制机制。当连接到Oracle数据库时,默认情况下必须要提供用户名和口令。只有在输入了正确的用户名和口令之后,才能够连接到数据库,并执行各种管理操作和数据访问操作。

方案(Schema)是用户所拥有数据库对象的集合。在Oracle数据库中对象是以用户来组织的,用户与方案是一一对应的关系,并且二者名称相同。例SCOTT用户所拥有的所有对象都属于SCOTT方案,而SYSTEM用户所拥有的所有对象都属于SYSTEM方案。当访问数据库对象时,有一些注意事项:

? 在同一个方案中不能存在同名对象,但不同方案可以具有同名对象。 ? 用户可以直接访问其方案对象,但如果要访问其他方案对象,则必须具有对象权限。如用户SCOTT

可以直接查询其方案表EMP,但如果用户SMITH要检索SCOTT方案的表EMP,则必须在EMP表上具有SELECT对象权限。

? 当用户访问其他方案对象时,必须加方案名为前缀。例,如用户SMITH要访问SCOTT方案的

EMP表,则必须使用SCOTT.EMP。

2.2 用户访问

在多用户环境里,一个数据库可能有多个用户同时在访问。当有不同的用户同时访问数据库时,保护数据库安全,防范非授权访问非常重要。因此,必须在数据库里创建用户,并为用户指定用户名和密码,这样可以保证只有经过授权的,即有正确用户名和密码的用户才能访问数据库。数据库管理员(DBA)是最高级别的用户,他可以创建其他用户。在创建了用户后,DBA需要按用户的需求为用户分配权限。权限指用户执行特定语句的许可,这意味并非所有用户都被允许修改重要数据。例如,某个用户可能只需要有连接数据库和查询某些表的记录的权限。类似地,另一个用户可能要求有创建和修改表的权限。

DBA有访问数据库的一切权限,并有权为其他用户分配权限。下表列出了部分DBA权限:

DBA权限 CREATE USER DROP USER DROP ANY TABLE BACKUP ANY TABLE SELECT ANY TABLE

有权执行 创建新用户 撤消用户 撤消表 为表制作备份 查询数据库对象,如表和视图 6

CREATE ANY TABLE 创建表 为了维护存储在数据库中数据的安全,Oracle提供了以下数据库安全措施: ? 管理和控制数据库访问

? 用Oracle数据字典验证权限

? 为指定用户提供对数据库特定对象(表、视图和序列等)的访问 ? 为数据库对象提供同义词

可被数据库操作采用的数据库的安全策略包括:

? 系统安全:系统安全涉及系统级的访问,如允许用户通过指出用户名和密码连接Oracle,为用户

分配磁盘空间,限定用户所能执行的操作。用户能执行的操作包括:查询数据库对象的内容、创建数据库对象和更改数据库对象。

? 数据安全:数据安全涉及对数据库对象的访问和使用,以及用户在数据库对象上所拥有的权限的

程度。

2.3 创建用户

2.3.1 命令创建用户

CREATE USER语句用于创建新用户。在创建新用户时,必须为新用户指定用户名和密码。为了使新用户能登录服务器和访问数据库,DBA必须显式地为用户分配权限。只有拥有CREATE USER权限的用户才能创建新用户。例如,DBA创建了新用户Susan,但Susan无权创建其他新用户。只有当Susan有了CREATE USER这个权限后,她才能创建别的新用户。

创建用户的语法示例:

CREATE USER user IDENTIFIED BY password DEFAULT TABLESPACE data01 TEMPORARY TABLESPACE temp QUOTA 3M ON data01 PASSWORD EXPIRE;

其中IDENTIFIED BY用于指定用户口令(密码);DEFAULT TABLESPACE用于指定用户的默认表空间,当建立表或者索引时,如果不指定TABLESPACE子句,那么Oracle会自动在默认表空间上为这些对象分配空间;TEMPORARY TABLESPACE用于指定用户的临时表空间,当用户执行排序操作时,或临时数据超过PGA工作区,则会在该表空间上建立临时段;QUOTA用于指定表空间配额,即用户对象在表空间上可占用的最大空间;PASSWORD EXPIRE用于指定终止口令,最终强制用户在登录时改变口令。当建立了新用户之后,需要注意以下问题:

? 初始创建的数据库用户没有任何权限,不能执行任何数据库操作。

? 如果在建立用户时不指定DEFAULT TABLESPACE子句,那么Oracle会将数据库默认表空间作

为用户的默认表空间。在Oracle Database 10g之前,如果不指定DEFAULT TABLESPACE子句,那么Oracle会将SYSTEM表空间作为用户的默认表空间。 ? 如果在建立用户时不指定TEMPORARY TABLESPACE子句,那么Oracle会将数据库默认临时表

空间作为用户的临时表空间。

? 如果在建立用户时没有为特定表空间指定QUOTA子句,那么用户在特定表空间上的配额为0,

这样用户将不能在相应表空间上建立数据对象。

7

2.3.2 管理工具创建用户

打开Enterprise Manager Console,选中数据库,用具有DBA权限的用户登录,进入后,点左侧安全性,点用户,右键选创建,一般信息页中输入数据库用户名称,口令,表空间处选择数据库表空间及临时表空间,角色页中给用户授相应角色,系统页中授相应系统权限,单击创建即可。

2.3.3 修改用户

修改用户信息是使用ALTER USER命令完成的。一般情况下,该命令是由DBA来执行的,如果以其他用户身份修改用户信息,必须要具有ALTER USER系统权限。

1.修改口令

创建用户时为每个用户指定一个初始密码。之后可修改密码,修改密码的方法有两种: ? 管理员修改:ALTER USER user IDENTIFIED BY password;(password为用户的新密码) ? 用户自己修改:用户登录后输入命令:PASSWORD; 2.修改表空间配额

表空间配额用于限制用户对象在表空间上可占用的最大空间。如果用户对象己经占满了表空间配额所允许的最大空间,那么该用户将不能在该表空间上分配新的空间。此时如果执行了涉及到空间分配的SQL操作(如INSERT、UPDATE、CREATE TABLE等),则会显示错误,修改表空间语法:

ALTER USER user QUOTA 10M ON data01;

修改用户也可以由具有DBA权限的用户在Enterprise Manager Console工具中修改。

2.3.4 授予用户访问权

用户创建后,数据库管理员需要为他分配权限。权限关系到数据库的安全,它决定了用户在数据库上所能执行的操作。GRANT语句用于为用户分配权限。语法如下:

GRANT privilege TO user;

[注释:授予所有系统权限GRANT ALL PRIVILEGES to test_2;]

[注释:授予所有对象权限 GRANT ALL [PRIVILEGES] ON DEMO.DEPT TO TEST_1;] 可分配给用户的权限有:

? 系统权限:允许用户访问数据库的权限称为系统权限。

? 对象权限:允许用户在数据库对象上执行查询、更新、删除或添加数据等操作的权限,此称为对

象权限。

常用的系统权限有: 系统权限 CREATE SESSION CREATE TABLE CREATE VIEW CREATE PUBLIC SYNONYM CREATE SEQUENCE CREATE PROCEDURE CREATE TRIGGER CREATE CLUSTER

有权执行 创建会话 创建表 创建视图 建立同义词 创建序列 建立过程、函数和包 建立触发器 建立簇 8

CREATE TYPE CREATE DATABASE LINK 建立对象类型 建立数据库链 另外,Oracle还提供了一类ANY系统权限,当用户具有该类系统权限时,可以在

任何方案中执行相应操作。例如,如果用户具有SELECT ANY TABLE系统权限,那么用户可以查询任何方案的表(除数据字典基表和数据字典视图DBA_XXX----DBA和特权用户专访)。

如:GRANT CREATE SESSION,CREATE SEQUENCE,CREATE VIEW TO john; 上述命令执行后,用户john将拥有创建会话、视图和序列的系统权限。 Oracle提供了100多种系统权限(ALTER TABLE,ALTER VIEW,ALTER PROCEDURE,DROP TABLE,DROP VIEW,DROP PROCEDURE等)。

一般情况下,授予系统权限是由DBA来完成的;如果要以其他用户身份授予系统权限,则要求该用户必须具有GRANT ANY PRIVILEGE系统权限,或者具有相应系统权限及其转授系统权限选项(WITH ADMIN OPTION),授予系统权限是使用GRANT命令来完成的,其语法如下:

GRANT system_priv[,system_priv,…]

TO {user | role | public},[,{user | role | public}]...

[WITH ADMIN OPTION]; 可以使被授权者能够为其他用户授予系统权限

注:user也可以是用户组PUBLIC;UNLIMITED TABLESPACE权限不能被授予角色 下表列出了所有对象权限。 对象权限 ALTER DELETE EXECUTE INDEX INSERT REFERENCES SELECT UPDATE 表、序列 表、视图 过程 表 表、视图 表(基于表建立从表) 表、视图、序列 表、视图 适用于 如果用户在某个同义词上拥有权限,而这个同义词又需要引用其他基表,那么用户 在同义词上拥有的权限会转换为在基表上的权限。

缺省地,用户对他所创建的对象拥有完全的权限。如用户在用户模式上创建了一个表,那么缺省地,他在用户模式上拥有所创建的这个表的所有权限。

授予对象权限一般情况下是由对象所有者或者DBA用户来完成的;如果以其他用户身份授予对象权限,则要求用户必须具有该对象权限及转授对象权限选项(WITH GRANT OPTION),语法如下:

GRANT { object_priv [ (columns) ][ ,object_priv[(columns) ] ]… | ALL [ PRIVILEGES ]} ON [schema.]object

TO {user | role | PUBLIC} [, {user | role | PUBLIC}]…

[ WITH GRANT OPTION ];允许被授权用户向其他用户授予该权限。 例:grant update on scott..emp to blake;

Grant update(sal) on emp to blake;(只能在insert、update和references上授予列权限)。

9

3 建立和管理表

3.1 简介

表是Oracle数据库最基本的对象,它用于存储用户数据。 ? 设计表

当设计表时,需要考虑以下因素:

? 当规划表和列时,应该使用有意义的名称。当定义表名和列名时,只能使用字符(A-Z,a-z)、

数字(0-9)、_、$和#,名称必须以字符开始,并且长度不能超过30个字符。 ? 当规划表名和列名时,要使用一致的缩写格式、单数或复数格式。

? 为了给用户和其他人员提供有意义的帮助信息,应该使用COMMENT命令描述表、列的作

? 当设计表时,应该使用第一范式(1NF)、第二范式(2NF)和第三范式(3NF)规范化每张

数据库表。

? 当定义表列时,应该选择合适的数据类型和长度。

? 当定义表列时,为了节省存储空间,应该将NULL列放在后面。 ? 常用数据类型

当建立表时,不仅需要指定表名、列名,而且要根据情况为列选择合适的数据类型和长度。下面是常用数据类型。 ? CHAR(N)或CHAR(N BYTE):定义固定长度的字符串(以字节为单位),最大长度为2000

字节。如果CHAR(100)或CHAR(100 BYTE),表示可存储100个字节的字符串,并且占用空间是固定的(100个字节) ? CHAR(N CHAR):定义固定长度的字符串(以字符个数为单位)。如果CHAR(100 CHAR),

表示该列最多可以存储100个字符(单字节或多字节)。如果该列存放的全是汉字,则占用空间最多为200个字节;如果存放的全部是英文字符,则占用空间最多为100个字节。 ? VARCHAR2(N)或VARCHAR2(N BYTE):用于定义变长字符串(以字节为单位),其最

大长度为4000字节。 ? VARCHAR2(N CHAR):用于定义变长字符串(以字符为单位)。 ? NUMBER(P,S):定义数据类型的数据,P表示数字的总位数(最大字节个数,而S表示

小数点后面的位数。当定义整数类型时,可以直接使用NUMBER的子类型INT。

? DATE :定义日期时间数据,其长度为7个字节。当查询DATE类型列时,其数据的默认显

示格式为(DD-MON-YY),如“29-4月-05”。

? TIMESTAMP:是DATE的扩展,在该数据类型上执行DML操作与DATE类型完全相同。

但当查询时,数据的显示格式为(DD-MON-YY HH.MI.SS AM),如“29-4月-03 04.02.03.000000 下午”。

? RAW(N):定义二进制数据,N的上限值为2000。RAW,类似于CHAR,声明方式RAW(L),

L为长度,以字节为单位,作为数据库列最大2000,作为变量最大32767(220 - 1)字节。 ? LONG RAW,类似于LONG,作为数据库列最大存储2G字节的数据,作为变量最大32760

字节。

? 大对象数据类型:早期版本(6,7)中,存储大批量字符数据采用数据类型LONG,存储大

批量二进制数据采用LONG RAW类型。从8版本开始,建议使用CLOB存储大批量字符,建议使用BLOB类型存储大批量二进制数据。

10


Oracle数据库的开发与应用(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:工艺生产实习报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: