知识点:初步认识Oracle数据库,了解Oracle  Database 11g的体系结构、掌握登录Oracle数据库的方法、理解Oracle数据库中用户、角色与权限之间的关系、能够创建、修改和删除用户,并给用户授予权限。

 

1、认识Oracle

1.1  Oracle公司

        甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。

1.2  Oracle数据库

        Oracle Database,又名Oracle RDBMS(关系数据库管理系统Relational Database Management System),或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库解决方案。Oracle数据库也是世界上第一个支持SQL语言的数据库。

Oracle数据库特点:

  • 支持多用户、大事务量的事务处理。
  • 在保持数据安全性和完整性方面性能优越。
  • 支持分布式数据处理。将分布在不同物理位置的数据库用通信网络连接起来,在分布式数据库管理系统的控制下,组成一个逻辑上统一的数据库,完成数据处理任务。
  • 具有可移植性,Oracle可以在Windows、Linux等多个操作系统平台上使用,而SQL Server只能在Windows平台上运行。

 

2. Oracle Database 11g 的体系结构

        Oracle体系结构主要用来分析数据库的组成、工作过程和原理,以及数据在数据库中的组织与管理机制。Oracle数据库是一个逻辑概念,而不是物理概念上的安装了Oracle数据库系统的服务器。

 

2.1 一张图看懂Oracle数据库、实例、用户、表空间、数据文件之间的关系

       数据库比如是一个柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据 表空间可以有多个数据文件,但是一个数据文件必须属于一个表空间。表和表空间来说,表空间就是表存储的地方,表是表空间一种表现形式。

  • 数据库:由基于磁盘的数据文件、控制文件、日志文件、参数文件和归档日志文件等组成的物理文件集合。
  • 数据库服务器:是指管理数据库的各种软件工具(比如SQL PLUS、PL/SQL等)、实例及数据库的三个部分。
  • 实例:是一组Oracle后台进程以及在服务器中分配的共享内存区域。
  • 用户:用户是在实例下建立的。不同实例可以建相同名字的用户。
  • 表空间:表空间是一个用来管理数据存储逻辑概念,表空间只是和数据文件(ORA或者DBF文件)发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
  • 数据文件(dbf、ora): 数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的表空间才行。
  • 数据:表的数据,是由用户放入某一个表空间的,而这个表空间会随机把这些表数据放到一个或者多个数据文件中。由于oracle的数据库不是普通的概 念,oracle是有用户和表空间对数据进行管理和存放的。但是表不是有表空间去查询的,而是由用户去查的。因为不同用户可以在同一个表空间建立同一个名 字的表!这里区分就是用户了!

 

        数据库的主要功能就是存储数据,数据库存储数据的方式通常称为存储结构, Oracle 数据库的存储结构分为逻辑存储结构和物理存储结构。逻辑存储结构用于描述 Oracle 内部组织和管理数据的方式,而物理存储结构用于展示 Oracle 在操作系统中的物理文件组成情况。

 

2.2 物理存储结构

        物理存储结构,相对于具有逻辑层次关系的逻辑存储结构,比较具体和直观,它用来描述 Oracle 数据库在磁盘上的物理组成情况。从大的角度来讲,Oracle 的数据在逻辑上存储在表空间中,而在物理上存储在表空间所包含的物理文件中。

        Oracle 数据库的物理存储结构有多种物理文件组成,主要有数据文件、控制文件、重做日志文件、归档日志文件、参数文件、口令文件和警告日志文件等。

 

2.3 逻辑存储结构

        逻辑结构是面向用户的,当用户使用 Oracle 设计数据库时,其使用的就是逻辑存储结构。逻辑存储结构是 Oracle 数据库存储结构的核心内容,对 Oracle 数据库的所有操作都会涉及逻辑存储结构。逻辑存储结构是从逻辑的角度分析数据库的构成,是对数据存储结构在逻辑概念上的划分。

        Oracle 的逻辑存储结构是一种层次结构,主要由表空间、段、区间和数据块等概念组成。简单的说,逻辑结构之间的关系如图所示:多个块组成区、多个区组成段、多个段组成表空间、多个表空间组成逻辑数据库。一个区只能在一个数据文件中,一个段中的各个区可以分别在多个数据文件中。组成区的块是连续的。由于逻辑的块对应磁盘空间中某个固定大小的尺寸(一般为操作系统数据块的整数倍),所以逻辑结构也是有大小的。

 

2.4 数据字典

        Oracle 数据字典是 Oracle 存放关于数据库内容信息的地方,其用途是用来描述数据库内部的运行和管理情况。比如,一个数据表的所有者、创建时间、所属表空间、用户访问权限等信息,这些信息都可以在数据字典中查找到。当用户操作数据库遇到困难时,就可以通过查询数据字典来提供帮助信息。

 

3、登录Oracle数据库

3.1 启动服务

第一步:右键【我的电脑】->【管理】弹出计算机管理窗口,选择【服务和应用程序】-> 【服务】命令如图所示。

第二步:在服务文件中找到 OracleOraDb11g_homeTNSListener 以及 OracleService ORCL 这两个服务文件,并右键选择启动,如图所示。

说明:

OracleOraDb11g_homeTNSListener:数据库监听服务文件。

OracleServiceORCLOracle 数据库服务文件。

第三步:OracleOraDb11g_homeTNSListener OracleServiceORCL 状态显示已启动,表明 Oracle 数据库服务已开启。

 

3.2 使用SQL Plus登录数据库

        【SQL Plus】是 Oracle 11g 的开发环境,是操作数据库中数据最直接和有效的工具。 用户可以在【SQL Plus】环境下使用 SQL 命令交互式地访问数据库,执行大多数 SQL 命令和查询语句。

        【SQL Plus】是一种直接管理模式,首先必须以合法的用户名和口令登录数据库,然后利用 SQL 语句进行操作。下面介绍如何进入【SQL Plus】环境。

第一步:打开【开始】->【所有程序】->Oracle - OraDb11g_home>SQL Plus】选项,如图所示。

第二步:准备登录数据库,在请输入用户名提示符后输入命令 “/ as sysdba”并回车,表示已超级管理员身份登录。出现“连接到:Oracle Database 11g……”表明登录成功,如图所示。

 

4、Oracle数据库用户、角色与权限

4.1 解锁Oracle数据的scott用户

        在Oracle数据安装最后的界面,有一些oracle的默认用户。除了两个系统用户以外都是锁定状态,此处我们使用sql解锁其中一个常用的用户scott。

解决思路:打开【SQL Plus】窗口,以sys超级用户名,dba角色,即超级管理员身份解锁scott方案/用户,并为scott设置一个密码为tiger。

第一步:以超级管理员身份登录(上一个步骤已完成)

第二步:查看Oracle数据库当前用户状态,语句:select username,account_status from dba_users;

可以看到SCOTT用户的状态是: EXPIRED & LOCKED(“expired”(密码过期),“locked”(账户锁定))


SQL*Plus: Release 11.2.0.1.0 Production on 星期四 8月 22 16:08:49 2019

Copyright (c) 1982, 2010, Oracle.  All rights reserved.

请输入用户名:  /as sysdba

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select username,account_status from dba_users;

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
MGMT_VIEW                      OPEN
SYS                            OPEN
SYSTEM                         OPEN
DBSNMP                         OPEN
SYSMAN                         OPEN
OUTLN                          EXPIRED & LOCKED
FLOWS_FILES                    EXPIRED & LOCKED
MDSYS                          EXPIRED & LOCKED
ORDSYS                         EXPIRED & LOCKED
EXFSYS                         EXPIRED & LOCKED
WMSYS                          EXPIRED & LOCKED

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
APPQOSSYS                      EXPIRED & LOCKED
APEX_030200                    EXPIRED & LOCKED
OWBSYS_AUDIT                   EXPIRED & LOCKED
ORDDATA                        EXPIRED & LOCKED
CTXSYS                         EXPIRED & LOCKED
ANONYMOUS                      EXPIRED & LOCKED
XDB                            EXPIRED & LOCKED
ORDPLUGINS                     EXPIRED & LOCKED
OWBSYS                         EXPIRED & LOCKED
SI_INFORMTN_SCHEMA             EXPIRED & LOCKED
OLAPSYS                        EXPIRED & LOCKED

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
SCOTT                          EXPIRED & LOCKED
ORACLE_OCM                     EXPIRED & LOCKED
XS$NULL                        EXPIRED & LOCKED
BI                             EXPIRED & LOCKED
PM                             EXPIRED & LOCKED
MDDATA                         EXPIRED & LOCKED
IX                             EXPIRED & LOCKED
SH                             EXPIRED & LOCKED
DIP                            EXPIRED & LOCKED
OE                             EXPIRED & LOCKED
APEX_PUBLIC_USER               EXPIRED & LOCKED

USERNAME                       ACCOUNT_STATUS
------------------------------ --------------------------------
HR                             EXPIRED & LOCKED
SPATIAL_CSW_ADMIN_USR          EXPIRED & LOCKED
SPATIAL_WFS_ADMIN_USR          EXPIRED & LOCKED

已选择36行。

SQL>

第三步:解锁scott用户,语句:alter user scott account unlock;

第四步:设置scott用户的密码,语句:alter user scott identified by tiger;

第五步:测试scott/tiger能否成功登录,语句:connect scott/tiger;

===测试使用scott/tiger登录(这里使用另外一种方法登录)

单击快捷键win+r,在弹出的运行框里输入cmd,然后单击回车键,会打开dos窗口,

也可以打开cmd之后,一次性输入用户名密码:sqlplus scott/tiger

 

 

4.2 理解Oracle数据库中用户、角色、权限三者的关系

          作为世界上最安全的数据库系统,Oracle 有一套完善的系统安全体系。它将用户操作数据库的行为,细化为超过 200 多种权限。例如,当用户只是一个普通用户的时候,该用户可能只具备查看某些数据信息的权限,不能对这些数据进行操作。又如果一个更高级的用户访问数据库时,他可能具备创建新表,删除表数据等权限。Oracle 通过给用户赋予权限,控制用户的行为,从而保障数据库系统的安全。

用户:访问数据库的一个实体,可以给他某个角色身份,也可以直接给他赋予某项权限。

角色:具备某些数据库使用权限的一种身份,是一组权限的集合,并不被哪个用户所独 有。角色可以被授予任何用户,也可以从用户中将角色收回。

          为了管理、维护、操作数据库,首先要具备数据库的合法用户——帐号,包括用户名和口令,其次用户要有对数据库进行操作的能力——权限。由于权限的数量较多,为了便于管理和维护,提出了权限集合——角色的概念。归根到底,具备一定权限的合法用户才可以操作数据库,而角色也是权限,是权限的另一种表现。

一张图理解Oracle数据库中用户、角色、权限三者的关系

         根据用户工作的分工,将不同角色授予不同用户。如果应用系统的规模很小,用户数也不多,也可以直接将应用的权限授予用户,即使是这样,用户也必须对 Oracle 系统的预定义角色有所了解,因为一个用户至少被授予一个以上的预定义角色才能使用 Oracle 系统资源。

Oracle 为了兼容以前的版本,提供了三种标准的角色(roleCONNECT、RESOURC 和 DBA

  • CONNECT Role(连接角色):临时用户,特别是那些不需要创建建表的用户,通常只赋予他们 CONNECT 角色。
  • RESOURCE Role(资源角色)更可靠和正式的数据库用户可以授予 RESOURCE角色。RESOURCE 提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
  • DBA Role(数据库管理员角色)拥有管理数据库的最高权限。一个具有 DBA 角色的用户可以撤销任何别的用户甚至别的 DBA 权限,所以这是很危险的,所以不要轻易授予用户该角色。

常见的系统权限:

  • CREATE SESSION:连接到数据库。
  • CREATE TABLE:创建表。
  • CREATE VIEW:创建视图。
  • CREATE SEQUENCE:创建序列。

 

4.3 创建用户

        当创建一个新数据库时,Oracle 将创建一些默认数据库用户,如 SysSystem 和 Scott等。Sys System 用户都是 Oracle 系统用户,而 Scott 用户是 Oracle 数据库的一个示范账户,里面包含一些测试样例表。

Sys 用户:Oracle 中的一个超级用户。数据库中所有数据字典和视图都存储在 SYS 模式中。数据字典存储了用来管理数据库对象的所有信息,是 Oracle 数据库中非常重要的系统信息。Sys 用户只要用来维护系统和管理实例。Sys 用户只能以 SYSOPER 或 SYSDBA角色登录系统。

System 用户:Oracle 中默认的系统管理员,它拥有 DBA 权限。该用户拥有 Oracle管理工具使用的内部表和视图。通常通过 System 用户管理 Oracle 数据库的用户、权限和存储等。不建议在 System 模式中创建用户表。System 用户不能以 SYSOPER 或 SYSDBA角色登录系统,只能以默认方式登录。

Scott 用户:Oracle 数据库的一个示范用户,一般在数据库安装时就已经创建。Scott用户模式,包含 4 个示范表,其中一个是 Emp 表。使用 USERS 表空间存储模式对象。

        通常情况下,出于安全考虑,对于不同的数据表需要设置不同的访问权限此时,就需要创建不同的用户。Oracle 中的 CRAETE USER 命令用于创建新用户。每个用户都有一个默认表空间和一个临时表空间。如果没有指定,Oracle 就将 USERS 设为默认表空间,将TEMP 设为临时表空间。

创建用户的步骤:

第一步:以系统管理员身份登录数据库

第二步:创建用户,语法: create user 用户名 identified by 密码;

注意:.用户名必须是一个标识符,密码口令也必须是一个标识符,且不区分大小写。

在编程语言中,标识符是用户编程时使用的名字,对于变量、常量、函数、语句块也有名字;我们统统称之为标识符。

  • oracle的标识符(表名或列名)不应超过30字符
  • oracle的标识符由字母、数字、$、#和下划线(_)组成,且开头必须由字母开头
  • 若oracle标识符被双引号("")引起来,则可以包括合法字符的任意组合,例如233table_column等。
  • oracle标识符不区分大小写,只有被双引号包围,才会区分大小写。

 

第三步:验证用户是否创建,方法,使用sql语句查询数据库中所有的用户,语法:select username,account_status from dba_users;

第四步:新创建的用户能否登录数据库?我们退出当前用户,使用刚才创建的用户wangdi尝试进行登录

错误提示:

ERROR:
ORA-01045: user WANGDI lacks CREATE SESSION privilege; logon denied

系统提示,用户名WANGDI缺少创建会话权限;登录被拒绝。

原因:虽然我们创建了用户,但是还没有给用户赋予权限,所以还不能登录。

 

第五步:重新使用系统用户登录,并给用户WANGDI赋予权限或角色,语法:grant 角色/权限 to 用户名;

撤销用户权限的语法:revoke 角色/权限 to 用户名;

数据库用户安全设计原则:

1. 数据库用户权限授权按照最小分配原则。

2. 数据库用户要分为管理、应用、维护、备份四类用户。

3. 不允许使用 Sys System 用户建立数据库应用对象。

4. 禁止 GRANT DBA TO USER,将 dba 角色赋予用户。

 

第六步:重新使用wangdi用户登录数据库,

语句1:connect 用户名/密码;  

语句2:conn 用户名/密码;

第七步:用户退出数据库

语句1:disconnect 用户名;  

语句2:disconn 用户名;

 

第八步:修改用户

语法:alter user 用户名 identified by 新密码;

注意:更改密码时,不要以数字开头,否则可能会报错:ORA-00922: 选项缺失或无效

 

第九步:删除用户

语法: drop user 用户名;

 

 

 

=============这里是结束分割线=============

 

更多推荐

Oracle数据库第一课——Oracle数据库基础知识、Oracle Database 11g的体系结构、登录Oracle数据库