Oracle入门
这一章我们开始探讨Oracle的使用,从Oracle的介绍开始,接触Oracle的安装、基本服务的认识、命令行的操作以及基本数据库连接工具的使用等,全面的认识和学习使用Oracle数据库。
Oracle的介绍
Oracle是Oracle Corporation(甲骨文公司)推出的的关系型数据库管理系统。
甲骨文公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989年正式进入中国市场。2013年,甲骨文已超越 IBM ,成为继 Microsoft 后全球第二大软件公司。
Oracle数据库产品内容丰富,功能强大。组要特性有:
- 数据库应用程序开发特性
- 数据库连接特性
- 分布式数据库特性
- 数据移动特性
- 性能特性
- 数据库管理特性
- 数据库安全特性
Oracle的发行历史
- 1997年,Oracle8发布,提高了数据库的性能和可扩展性,并且增加了在数据库创建和存储对象的功能。
- 1999年,Oracle8i发布,是Oracle数据库的一个新的里程碑,整体性能的提高使得Oracle8i成为全球因特网计算的焦点。
- 2001年,Oracle9i发布,引入了实时应用集群,取代Oracle并行服务器,并增加了许多管理特性和数据仓库特性。
- 2003年,Oracle10g发布,开始支持部署网格计算。简单的说,网格就是一个根据需要为应用程序提供资源的由计算机和软件资源组成的池。
- 2007年,Oracle11g发布,在这个版本中,许多数据库自我调整和自我管理功能得到进一步改进,尤其是在自动化内存管理,分区和安全等方面。
- 2013年,Oracle12c发布,Oracle 12C引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant Environment)中,允许一个数据库容器(CDB)承载多个可插拔数据库(PDB)。CDB全称为Container Database,中文翻译为数据库容器,PDB全称为Pluggable Database,即可插拔数据库。在ORACLE 12C之前,实例与数据库是一对一或多对一关系(RAC):即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载。而实例与数据库不可能是一对多的关系。当进入ORACLE 12C后,实例与数据库可以是一对多的关系。
Oracle的安装和设置
Oracle的安装
- 安装之前请关闭Windows防火墙并断开网络。解压的时候不能含有空格、非法字符,注意不能含有中文。安装目录不能还有非法字符和中文。
- 运行解压缩出的 Oracle 10g 安装程序。打开oracle10g的安装目录,找到setup.exe,双击即可进入安装状态。XP系统下直接双击运行setup.exe,如果是在win7上安装,在setup.exe文件上点击右键,选择以“管理员身份运行”
- 双击启动安装程序后,安装程序会进行操作系统的兼容性检查。
- 选择安装方法:基本安装,确定主目录位置,企业版,数据库口令输入,然后选择下一步
- 安装程序进行准备。
- 准备完成后,安装程序进行一些先决条件的安装检查。
- 查看检查结果,状态为成功即可点击下一步进行安装。
- 等进度条走完后,进入下一步安装界面
- 查看Oracle安装概要,然后点击安装
- 安装过程中会弹出口令管理对话框,此时不要着急点确定,要点击口令管理
- 点击口令管理后,进入口令管理对话框,设置sys、System的用户口令。两个用户的口令可以一致。
- 确定返回,安装向导继续运行,到结束
- 安装结束后,点击退出,选择是,退出安装向导。
- 此时系统会打开浏览器窗口,显示OEM(Oracle Enterprise Manager)的界面,使用sys和刚刚设置好的sys用户密码,使用sysdba的连接身份,可以登录。可以查看数据库的一些状态,用于数据管理维护。至此,Oracle的安装全部完成。
Oracle的服务
这里介绍几个重要的Oracle的服务。当Oracle完成安装以后,Windows服务器管理器中可以查看到这些服务。
-
OrcaleDBConsoleorcl
:Oracle数据库控制台,如果你需要用浏览器来使用oracle企业管理器,那么就启动这个服务。一般不需要开启。 -
OracleJobSchedulerORCL
:Oracle job定时器的功能,一般不需要开启。 -
OracleOraDB10_home1iSQL*Plus
:OracleiSQL*Plus
服务,只有在Web页面中要使用iSQL*Plus
时候才需要启动。一般不需要开启。 -
OracleOraDB10_home1TNSListener
:Orace监听服务,如果有客户端需要连接到数据库,此服务必须打开。 -
OracleServiceORCL
:Oracle数据库的主服务,此服务的必须启动才能使用Oracle。
Oracle NET配置
Oracle Net是一个软件层,不同的物理机器可以借助这个软件实现相互间的通信,具体而言就是实现对Oracle数据库的远程访问。
这个软件层提供TNS(Transparence Network Substrate,透明网络底层)的方式,使得Oracle Net能够提供位置透明性,即客户端应用程序不需要事先知道服务器的物理位置。Oracle Net软件层处理了所有的通信工作,这意味着用户可以将数据库迁移到另一台机器上,只需要简单的根据需要更新Oracle Net的配置细节,而客户端甚至不需要任何更改。
TNS配置
TNS(Transparence Network Substrate,透明网络底层)
是Oracle Net的一部分,专门用来管理和配置Oracle数据库和客户端连接的一个工具,在大多数情况下客户端和数据库要通讯,必须配置TNS
Oracle Net需要配置文件来配置网络,这些文件的位置如下:
%ORACLE_HOME%\network\admin
LISTENER.ORA
%oracle_base%\product\10.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
包含配置Oracle Net监听器的详细信息。正如名字所暗示的那样,监听器负责监听希望通过网络访问Oracle数据库的客户链接请求。
TNSNAMES.ORA
%oracle_base%\product\10.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
负责将服务名称翻译成特定的机器地址和Oracle实例。这个文件上记录着Oracle实例所在的地址,对于Oracle Net的位置头型特性非常关键,客户端可以通过该问该文件中记录的的服务器地址访问到指定的数据库。
自动配置方式
Oracle Net可以选择自动配置方式,在命令行中输入netca
,即可选择配置。
检查配置结果
在配置完成后,可以在客户端机器的命令行输入tnsping <address> [<count>]
来检查是否配置成功。其中<address>
是目标主机的ip地址,[<count>]
是检查的次数。例如tnsping localhost 5
。
命令行操作
使用命令行可以轻松的操作监听的配置。请注意,务必在服务端使用命令行。
查看监听的状态:
lsnrctl status
开启监听:
lsnrctl start
停止监听:
lsnrctl stop
Oracle的管理命令操作
Oracle的管理命令,可以在安装了Oracle客户端的机器上执行,调用了Oracle客户端的sqlplus命令。
首先需要登录Oracle。
在客户端机器上打开命令行,输入命令进行执行。
登录Oracle
方式一:使用默认方式用sys账户登录Oracle
sqlplus / as sysdba;
方式二:使用标准方式加密账户登录Oracle
sqlplus
输入用户名
输入密码
以下是方式二登录示例
C:\Users\Linty> sqlplus
SQL*Plus: Release 11.2.0.1.0 Production on Wed Jan 20 12:12:42 2016
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Enter user-name: linty
Enter password:
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
ps:请注意密码的格式,如果登录角色是sysdba,密码是你的密码[空格]as[空格]sysdba
;如果登录的角色是一般角色,只需要输入密码即可
方式三:使用明码方式用账户登录Oracle
sqlplus 用户/密码;
ps:同上,请注意密码的格式,如果登录角色是sysdba,密码是你的密码[空格]as[空格]sysdba
;如果登录的角色是一般角色,只需要输入密码即可
登录成功后,命令行出现SQL>
提示符
查看当前数据库的状态
SQL> select status from v$instance;
查看当前数据库的名称
SQL> select name from v$database;
执行一个SQL文件
SQL> start [file_name]
SQL> @ [file_name]
ps:请注意,file_name是需要执行的文件的全名,若缺省了文件扩展名,那么默认执行扩展名为sql的文件,文件的内容应该为一条SQL语句。
查看当前缓冲区的语句
SQL> list;
对当前的语句进行编辑
SQL> edit;
重新运行上一次运行的SQL语句
SQL> run;
SQL> /
SQL> r
删除缓冲区文本
SQL> del;
清空缓冲区
SQL> clear buffer;
将显示的内容输出到指定文件
SQL> spool c:\b.txt;
SQL> select * from v$database;
SQL> spool off;
ps:请注意,输出的内容是在两个spool之间的SQL语句输出
关闭当前连接
SQL> disconn;
打开新的连接
SQL> conn 用户/密码;
ps:同上,请注意密码的格式,如果登录角色是sysdba,密码是你的密码[空格]as[空格]sysdba
;如果登录的角色是一般角色,只需要输入密码即可
开启数据库
SQL> startup;
ps:数据库只有在关闭的状态,才可以开启数据库。
关闭数据库
关闭数据库有三种模式,请注意
正常关闭数据库
SQL> shutdown normal;
快速立刻关闭数据库(一般情况下请使用这条命令)
SQL> shutdown immediate;
异常情况下关闭数据库,当数据库无法正常关闭以后,请执行该命令来直接关闭
SQL> shutdown abort;
退出数据库
SQL> exit;
Oracle管理工具
SQL*Plus
SQL*Plus
是Oracle自带的管理工具,在上一节中命令行便是调用了该工具。当然,这个工具也可以在开始菜单中找到,直接打开。请注意登录的时候,无法用sys登录。
PL/SQL Developer
PL/SQL Developer
是主流的Oracle连接管理工具。也是我们课程主要的工具。安装后请注意输入序列号。
其他工具
数据库的连接有非常多的工具,也包括第三方的。主要的如下:
- DBeaver
- Navicat
- Toad
Oracle的数据对象
数据库与实例
数据库:信息数据的物理存储,是物理的,是由存储在硬盘中的文件组成。
实例:服务器上运行的软件,提供了对数据库中信息的访问,是逻辑的,由服务器内存中的结构和进程组成。
Oracle数据库中的结构
Oracle数据库中的结构包括表空间、控制文件、日志文件等组件。
表空间
Oracle数据库中所有的数据都存在于表空间内。表空间是一个逻辑的结构,每个表空间都是由叫做数据文件的结构组成,每个表空间必须包含一个或者多个数据文件。每一个数据文件仅属于一个表空间。
表空间是一个容器,类似于仓库的货架。用来分类存放数据库对象。
创建表空间的语法:
CREATE TABLESPACE 表空间名字
DATAFILE '文件路径'
SIZE 大小
[AUTOEXTEND ON]
[NEXT 大小]
[MAXSIZE 大小];
查看当前数据库中的表空间
SQL> SELECT * FROM V$TABLESPACE;
每创建一个表空间都会对应产生一个物理文件与之对应,无法打开
表空间的“文件路径”应该符合具体的操作系统路径表达。Windows的路径以盘符(C
,D
...)开始,Linux的路径以/
开始
创建表空间的例子
创建一个数据表空间,名字bank_data,物理存储文件在C盘tbs下,大小为5m,文件名是bank_data.dbf
CREATE TABLESPACE bank_data
DATAFILE 'c:\tbs\bank_data.dbf'
SIZE 5M;
创建数据表空间,名字users_data,物理文件存储在C盘tbs下,大小为5m,如果表空间不足的情况下,自动扩展表空间
CREATE TABLESPACE users_data
DATAFILE'c:\tbs\users_data.dbf'
SIZE 5M
AUTOEXTEND ON;
创建数据表空间,名字money_data,物理文件存储在C盘tbs下,大小为5m,如果表空间不足的情况下,自动扩展表空间,每次扩展5m,最大可以达到100m;
CREATE TABLESPACE money_data
DATAFILE 'c:\tbs\money_data'
SIZE 5M
AUTOEXTEND ON
NEXT 5M
MAXSIZE 100M;
删除表空间
DROP TABLESPACE money_data;
DROP TABLESPACE user_data;
DROP TABLESPACE bank_data;
--删除表空间
删除执行以后,可以再手动删除表空间文件。
基本数据结构
数据库对象大致上包括:表、包、存储过程、视图、索引等等
表
表示关系型数据库中基本的数据结构,它是行的集合。表中的每一行包含一个或者多个列,而表中的一行数据可以理解为数据库中的一个记录。
视图
视图是Oracle的一种数据结构,也是通过SQL语句来定义的。这个SQL语句存在数据库中,当用户使用视图查询的时候,存储在数据库中的查询被执行,基表中的数据被返回给用户。视图本身不包含数据,它仅表示以查询指定的方法来观察基表中的
的数据。
索引
索引这个数据结构用于加速对数据库中特定行的访问。它与特定的表相关联,包含来自这个表的一列或者多个列的数据。
创建索引的基本SQL语法
CREATE INDEX 索引名
ON 表名 (字段名1, 字段名2..);
例子
CREATE INDEX emp_idx1
ON EMP (ename, job);
这里,emp_idx1是索引的名字,emp是创建索引的表名,ename和job是组成索引的列名。
以下情况可以创建索引:
- 列中数据值分布范围很广
- 列中包含大量空值
- 列经常在 WHERE 子句或连接条件中出现
- 表经常被访问而且数据量很大 ,访问的数据大概占数据总量的2%到4%
约束
约束,constraint,用于实施数据库中的某些数据完整性。当给某一列增加一个约束,Oracle自动确保不满足此约束的数据是绝对不能被接受的。如果用户试图写一个不满足约束的数据记录,那么Oracle就会对这个非法的SQL语句产生一个错误。
约束是表级的强制规定
约束放置在表中删除有关联关系的数据
约束可以再创建或者增加包含某列的表时,与该列进行关联,也可以在表创建以后通过SQL命令ALTER TABLE来实现与该列的关联。
主要的几种约束类型:
NOT NULL
任何列都可以设置为NOT NULL。如果在SQL操作中将一个NULL值赋给某个有NOT NULL约束的列,那么Oracle会为这个语句返回一个错误。
**唯一性 **
如果将某个列设置为唯一,那么久不能在表中插入和这个列中已有值重复的行,也不能修改已有的列值使之与其他列值重复。
主键
每个表最多可以有一个主键约束。主键约束可以由表中的多个列组成。
主键:相当于身份证号码,是唯一的,通过身份证号码只能找到一个人,即通过主键列只能找到一行数据,在创建表时,通常要有主键列
主键属于表对象,所以主键有一个名字,若没给主键指定名字,oracle会自动分配一个唯一的名字,在一个表中只能有一个主键对象
外键
外键约束是为数据库中某个与其他表(称作父表)有关系的表(称作子表)而定义的。外键的值必须事先出现在某个特定表的唯一间或者主键中。外键而已包含一列或者多列,但是其所参考的键也必须包含相同的列。外键也可以和同一个表的主键相关联。如果没有其他约束限制,外键可以包含NULL值。
校验约束
校验约束是一种更加通用的约束。就是一个布尔表达式,他的计算值要么等于TRUE,要么等于FALSE。要是校验约束的计算值是FALSE,那么导致这一结果的SQL语句则会返回错误。
保留字
保留字就是关键字。这些关键字不可以作为普通的Oracle数据库对象存在。
Oracle保留字里面除了标准的SQL保留字以外,还添加了Oracle的保留字。这些保留字不可以被用于表名、字段名、视图名等。
例如SELECT
、CREATE
、UPDATE
、ALTER
、TABLE
、VIEW
、DELETE
、DROP
、DATABASE
、COLUMN
、COMMIT
等。
Oracle的用户管理
创建用户
DBA 使用 CREATE USER 语句创建用户
语法说明
CREATE USER user
IDENTIFIED BY password;
创建用户Juliet,密码是Romeo
CREATE USER Juliet
IDENTIFIED BY Romeo;
--User created.
查看用户
SELECT * FROM ALL_USERS;
--查看所有的用户
创建角色
CREATE ROLE manager;
--Role created.
为角色赋予权限
GRANT dba, connect, resource to manager;
将角色赋予用户
GRANT manager TO Juliet;
--Grant succeeded.
也可以直接授权给用户
GRANT dba, connect, resource to Juliet;
Connect 角色,是授予最终用户的典型权利,最基本的权利,能够连接到ORACLE数据库中,并在对其他用户的表有访问权限时,做SELECT、UPDATE、INSERTT等操作。
- Alter session--修改会话;
- Create cluster--建立聚簇;
- Create database link--建立数据库连接;
- Create sequence--建立序列;
- Create session--建立会话;
- Create synonym--建立同义词;
- Create view--建立视图。
Resource 角色,是授予开发人员的,能在自己的方案中创建表、序列、视图等。
- Create cluster--建立聚簇;
- Create procedure--建立过程;
- Create sequence—建立序列;
- Create table--建表;
- Create trigger--建立触发器;
- Create type--建立类型。
DBA角色,是授予系统管理员的,拥有该角色的用户就能成为系统管理员了,它拥有所有的系统权限。
修改密码
ALTER USER Juliet
IDENTIFIED BY Juliet;
--User altered.
回收权限
REVOKE resource
FROM Juliet;
锁定用户
ALTER USER scott account lock;
解锁用户
alter user scott account unlock;
alter user scott identified by tiger account unlock;
--解锁scott用户并且设置密码为tiger
删除用户
drop user Juliet cascade;
--cascade是级联的意思,也就是先删除用户下的所有对象,再删除该用户