1 Oracle简介
1.1 Oralce概述
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。
1.2 Oracle基本术语
1.2.1 数据字典
数据字典是Oracle数据库重要组成部分,存放Oracle所用的有关信息,主要内容包括:
- 系统的空间信息
- 数据库中所有模式对象信息,如表、视图、簇、同义词、索引等
- 例程运行的性能和统计信息
- Oracle用户名字。
- 用户访问或使用的审计信息
- 用户及角色被授予的权限信息
- 列的约束信息的完整性
- 列的缺省值
在Oracle数据库中,数据字典可以看做一组表和视图结构。它们存放在System表空间中。用户可以用SQL语句访问数据库数据字典。通过数据字典可实现以下功能:
- 当执行DDL语句修改方案、对象后,Oracle都会将本次修改的信息记录在数据字典中。
- 用户可以通过数据字典视图获得各种方案对象和对象的相关信息。
- Oracle通过查询数据字典表或数据字典视图来获取有关用户、方案、对象的定义信息以及其他存储结构的信息。
- DBA可以通过数据字典的动态性能视图监视例程的状态并作为性能调整的依据。
1.2.2 数据文件
一个Oracle数据库可以拥有一个或多个物理数据文件。数据文件包含了全部数据库数据。数据文件有以下特征:
- 一个数据库可拥有多个数据文件,但一个数据文件只对应一个数据库。
- 可以对数据文件进行设置,使其在数据库空间用完的情况下进行自动扩展。
- 一个表空间(数据库存储的逻辑单位)可以由一个或多个数据文件组成。
数据文件的大小可以用两种方式表示,即字节和数据块。数据块是Oracle中最小的存储单位,它的大小由参数“DB_BLOCK_SIZE”来确定
1.2.3 控制文件
数据库控制文件是一个很小的二进制文件。它维护着数据库的全局物理结构,用以支持数据库成功的启动和运行。创建数据库时,同时就提供了与之对应的控制文件。在数据库使用过程中,Oracle不断地更新控制文件,所以只要数据库是打开的,控制文件就必须处于可写状态。若由于某些原因控制文件不能被访问,则数据库也就不能正常工作了。
1.2.4 日志文件
也叫做重做日志文件,用于记录数据库的所有修改信息。包括用户对数据的修改,以及管理员对数据库结构的修改。重做日志文件是保证数据库安全和数据库备份与恢复的文件。
1.2.5 表空间
Oracle中最大的逻辑结构。表空间就是一个或多个数据文件的集合,所有的数据对象都被逻辑的存放在表空间中。
一个数据库通常包括SYSTEM、SYSAUX、TEMP三个默认表空间。可以创建新的表空间,创建时需要决定表空间的类型。
表空间的类型:
1. 系统表空间(System tablespace),系统级别的信息数据存储位置
2. 永久表空间(Permanent tablespace),永久性存储的信息数据位置
3. 临时表空间(Temporary tablespace),存放临时的中间过渡数据,会自动清空内部数据
4. 撤销表空间(Undo tablespace),用于事务分回滚撤销
表空间的作用:
- 控制用户所占用的空间配额
- 控制数据库所占用的磁盘空间
- 可以将表空间设置成只读状态而保证大量静态数据不被修改
- 能够将一个表的数据和这个表的索引数据分别存储在不通的表空间中,也可以提高数据库的I/O性能。
- 可通过其将不通表的数据、分区表的不通分区的数据存储在不通的表空间中,可以提高数据库的I/O性能,并有利于进行数据库的部分备份和恢复等管理工作。
- 表空间提供了一个备份和恢复的单位,Oracle提供了按表空间备份和恢复的功能。
需要提前了解的信息:一个oracle数据库服务下可以创建多个数据库实例(客户端),一个数据库实例可以存在多个表空间(物理存储位置),一个表空间下可以有多个用户(登录账户),一个用户下可以有多张数据表(二维数据表)。
1.3 体系结构
数据库:Oracle是一种关系型的数据库管理系统
数据库实例:数据库实例其实就是用来访问和使用数据库的一块进程,它只存在于内存中,就像Java中new出来的实例对象一样
表空间:Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表
用户:Oracle数据库建好后,要想在数据库里建表,必须先为数据库建立用户,并为用户指定表空间
2 Oracle安装
> **版本的使用说明**
>
> 目前oracle官方主推的是19c版本,该版本的安装教程已在Linux讲义中,自行学习安装即可。
>
> 我们这里安装使用的是11g版本,该版本目前在市场中的使用率还是比较高的。
>
> 11g的Linux版本安装教程也在Linux讲义中,这里展示的是在Windows系统中的安装截图。
>
> 学习阶段我们使用windows环境,方便查看很多东西。但真实的项目环境一般都是安装在Linux系统下的服务器中。
2.1 下载安装包
Oracle官网的主页面上已经把11g的下载链接关闭了,主页面上只有19c版本的下载链接。11g版本需要从Oracle的软件下载页面中进行下载:https://edelivery.oracle.com/osdc/faces/SoftwareDelivery【需要注册Oracle用户并登录才能打开】
**1、搜索oracle 11g版本**
**2、选择一个版本**
**3、提交选择**
**4、选择软件产品和操作系统并提交**
**5、同意协议并确认提交**
**6、确认下载**
**7、得到专属下载器**
**8、确认下载路径**
**9、开始下载**
**注:**oracle的其他软件产品和版本,都可以通过该网站下载。
2.2 安装数据库
**1、解压缩安装包**
**2、以管理员身份运行安装程序**
**3、忽略安装提示即可,继续安装**
**4、是否通过邮箱接收通知**
**5、确认不通过邮箱接收通知**
**6、选择创建并配置数据库**
**7、选择桌面类【快速安装】**
**8、配置数据库安装信息**
**9、Oracle对密码的复杂度有要求,简单的密码方便记忆。确认即可**
**10、安装信息的文件【响应文件】,可以备份一份,防止遗忘**
**11、开始安装,此过程会消耗一些时间,耐心等待**
**12、如果你的win10系统缺失一些系统组件,会提示安装,下载安装即可,没提示那就是不缺**
**13、创建数据库实例【不同的配置信息,可以创建不同的数据库实例】**
**14、配置 "口令管理",默认下只会开启系统级别的用户,开放几个测试用户,方便学习测试**
**15、解锁 SCOTT 和 HR 账号**
**16、依然是密码复杂度不够的提醒,略过即可**
**17、完成 "口令管理" 后,点击 "确认"**
**18、安装完毕**
**19、通过计算机管理服务,检查启动的服务。重点是Listener和OracleService两个服务**
- OracleServiceORCL服务:数据库的主要服务,它没启动Oracle用不了。
- OracleOraDb11g_home1TNSListener服务:监听谁连接了数据库,该服务不启动会影响普通用户的使用,以及远程访问等。
**20、登录测试**
打开cmd窗口,按顺序输入下列命令:
```bash
sqlplus / as sysdba # 以操作系统权限认证的oracle sys管理员登录
select instance_name from v$instance; # 查询oracle的sid
```
使用scott用户登录
```bash
sqlplus scott # 使用scott用户登录默认的数据库服务,然后输入密码
sqlplus scott@orcl # 使用scott用户,登录数据库服务名为orcl的数据库
# 成功登录scott用户后,在SQL环境下,输入下列命令,检测是否可以正常执行sql语句
select * from emp; # 会展示很多默认的数据信息
```
其他登录相关的命令
```bash
sqlplus /nolog # 无登录进入到数据库的SQL命令环境下
connect scott # 在SQL命令环境下,登录scott用户
exit # 退出SQL命令环境
```
2.3 主目录结构
1、admin目录
描述:记录Oracle实例的配置,运行日志等文件,每一个实例一个目录,SID:SystemIDentifier的缩写,是Oracle实例的唯一标记,在Oracle中一个实例只能操作一个数据库,如果安装多个库那么就会有多个实例,我们可以通过实例SID来区分。
2、cfgtoollogs目录
描述:下面子目录分别存放当运行dbca,emca,netca等图形化配置程序时的log。
3、checkpoints目录
描述:存放检查点文件。
3、diag目录
描述:Oracle11g添加的一个重组目录,其中的子目录,基本上Oracle每个组件都有了自己的单独目录,在Oracle10g中我们诟病的log文件散放在四处的问题终于得到解决,无论是asm还是crs还是rdbms,所有组件需要被用来诊断的log文件都存放在这个新的目录下。
4、flash_recovery_area(闪回区)目录
描述:分配一个特定的目录位置来存放一些特定的恢复文件,用于集中和简化管理数据库恢复工作。闪回区可存储完全的数据文件备份,增量备份、数据文件副本、当前控制文件、备份的控制文件、spfile文件、快照控制文件、联机日志文件、归档日志、块跟踪文件、闪回日志。
5、oradata目录
描述:存放数据文件。
```tex
CONTROL01.CTL
描述:Oracle数据库的控制文件
EXAMPLE01.DBF
描述:Oracle数据库表空间文件
REDO01.LOG
描述:Oracle数据库的重做日志文件,此文件有三个
SYSAUX01.DBF
描述:11g新增加的表空间,主要存储除数据字典以外的其他数据对象,由系统内部自动维护
SYSTEM01.DBF
描述:用于存放Oracle系统内部表和数据字典的数据。比如:表名、列名、用户名等
TEMP01.DBF
描述:临时表空间文件
UNDOTBS01.DBF
描述:撤销表空间文件,用来保存回滚数据
USERS01.DBF
描述:用户表空间
```
6、product目录
描述:数据库实例存放文件。
2.4 oracle配置
2.4.1 listener文件
在oracle安装路径下,存在这样一个文件 `..\product\11.2.0\dbhome_1\network\admin\listener.ora`
该文件中记保存着oracle的监听程序要读取的内容。
> 何为监听?
>
> 你在写作业,你妈在旁边监视着你。你有任何开小差的行为,立马一个大逼斗。
>
> 当A监听着B时,B有任何风吹草动,A都会收到信息,A也就可以采取一些行为。
>
> 监听在后续的学习中会多次出现,需要明白监听的意思。
oracle的监听程序,监听着客户端的连接请求,当有一个客户端想要访问oracle数据库时,监听程序会收到该请求,然后针对这个请求开启一个服务进程提供数据库服务。
好比你家大门上安装了一个监控器,有了这个监控你就能实时了解到有没有人来找你。当有人来时,并且提供了正确的暗号【用户名、密码】,通过了监控设备的验证,于是监控器把大门打开,客人进入你家了。如果想要安装这个监控器,就需要知道你家在哪【IP地址】?监控那个大门啊【端口号】?
因此这个监听文件中记录着被监听的oralce数据库服务器的IP地址、端口号以及通信协议。如果没有这个监听文件或者监听服务没有开启,则无法连接oracle的数据库服务。
下面是 `listener.ora` 文件的配置解析,该文件不会经常修改,把相关信息配置好即可。但该文件修改完之后,需要重新启动监听服务,才能让修改生效。
```bash
# 定义监听器(LISTENER