一、数据库的定义、作用介绍
1.定义:按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。
2.数据库的发展历史:
2.1.在1962年数据库一词出现在系统研发的公司的技术备忘录中
2.2.在1968年商业数据库诞生
2.3.在1970年IBM公司研究员埃德加·弗兰克·科德发表题为“大型共享数据库的关系模型”的论文,被誉为“关系数据库之父”
2.4.在1983年IBM发布DB2(自主开发的关系型数据库管理系统)
2.5.在1991年第一款开源的文件数据库发布
2.6.在2012年第一款事务存储型开源数据库发布
2.7.在2015年大数据处理作为云服务体系介入到企业应用中
3.数据库在测试过程中的作用
3.1需求分析阶段:了解测试环境数据库、表、数据等信息、需求
3.2用例设计阶段:测试数据准备
3.3用例执行阶段:测试数据构造、测试结果数据检查、代码逻辑查看
3.4自动化测试:测试脚本、数据、工具
3.5性能压力测试:数据准备、性能数据分析
3.6测试环境搭建:维护数据库、执行配置脚本、备份恢复数据库等
4.数据库的分类
层次式数据库、网络式数据库、关系式数据库
二、数据库种类和特点
1.关系型数据库
1.1常用
Oracle:Oracle(甲骨文)公司,多平台,性能最高,获得最高安全认证,适用于银行、电信、金融等大企业
DB2:IBM公司,多平台,性能较高,获得最高安全认证,企业级应用最广泛
SQL Server:微软,windows平台,中小型网站和电子商务办公系统
MySQL:瑞典my sql AB公司, 多平台,开源,中小型网站开发
Access:微软,windows平台,小型系统使用
MariaDB:MySQL的一个分支,完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
1.2不常用:
Informix,Sybase,PostgreSQL
2.非关系型数据库
2.1常用
Redis:开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
MongoDB:基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。支持的查询语言非常强大,单表查询的绝大部分功能,而且还支持对数据建立索引。
Memcached:是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。
Cassandra:一个开源的、分布式、无中心、支持水平扩展、高可用的KEY-VALUE类型的NOSQL数据库。
2.2不常用:
HBase、MemacheDB、BerkeleyDB、Tokyo Cabinet
三、ORACLE数据库介绍
1.Oracle数据库介绍
Oracle公司简介:全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司(被称为“纯软件公司的先驱”。在个人计算机领域,靠卖软件赚钱的公司是微软公司),总部位于美国加利福尼亚州的红木滩。其创始人是拉里埃里森。
2.Oracle数据库的发展历史
1979年的夏季,RSI(Oracle公司的前身,Relational Software,Inc)发布了Oracle第二版。
1983年3月,RSI发布了Oracle第三版。从现在起Oracle产品有了一个关键的特性--可移植性。
1984年10月,Oracle(RSI更名为Oracle)发布了第4版产品。这一版增加了读一致性这个重要特性。
1985年,Oracle发布了5.0版。这个版本是Oracle数据库较为稳定的版本。并实现了C/S模式工作。
1986年,Oracle发布了5.1版。该版本开始支持分布式查询。
1988年,Oracle发布了第6版。该版本中引入了行级锁特性,同时还引入了联机热备份功能。
1992年6月,Oracle发布了第7版。该版本增加了包括分布式事务处理功能、用于应用程序开发的新工具及安全性方法等功能。
1997年6月,Oracle第8版发布。Oracle8支持面向对象的开发及新的多媒体应用。
1998年9月,Oracle公司正式发布Oracle 8i。正是因为该版本对Internet的支持,所以,在版本号之后,添加了标识i。
2001年6月,Oracle发布了Oracle 9i。
2003年9月,Oracle发布了Oracle 10g。这一版的最大特性就是加入了网格计算的功能,因此版本号之后的标识使用了字母g,代表Grid--网格。
2007年7月11日,Oracle发布了Oracle 11g。Oracle 11g实现了信息生命周期管(Information Lifecycle Management)等多项创新。
软件环境如下:Windows XP、Windows 2003或者Linux Red Hat 5.0以上版本。需要注意的是,Windows Vista与Oracle 10g的兼容性较差,不推荐使用。
3.版本号意义
8i: i代表Internet(开始进入网络)
9i: 同上
10g:g代表grid(使用网格计算的方式)
11g: 同上
12c:c代表cloud(使用云服务的支持)
4.市场份额
Oracle(54%),IBM-DB2(21%),MicrosoftMSSQL(14%)
四、Oracle安装和环境配置介绍
1.Oracle服务端的安装
1.1Oracle安装环境的准备(win2003server虚拟机的安装,oracle服务端程序安装在虚拟机上)---Oracle安装和设置(根据需要数据库名称命名和用户密码的设置以及对锁定用户解锁)
1.2体现服务器不在一台机器上,这里我们安装在虚拟机上
1.3安装后文件夹路径介绍
如果一台计算机上首次安装Oracle 10g并使用默认设置时,根目录(ORACLE_BASE)的默认位置是c:\oracle\product\10.2.0。Oracle主目录(ORACLE_HOME)指向根目录的下一级目录,即%ORACLE_BASE%\Db_1。如果在同一台主机的同一个根目录下安装多个产品或安装了第2次,则Oracle_Home主目录会以db_n的形式出现,即Db_2、Db_3等。由于安装设置(如安装类型)和安装环境(如是否有其他Oracle数据库)的不同,文件目录结构也可能不同。我这里安装完成后,其目录结构为:
i.C:\oracle\product\10.2.0\db_1--主要存放Oracle系统的相关软件,包括可执行文件,网络配置文件和脚本文件。
ii.C:\oracle\product\10.2.0\admin--主要存放数据库运行过程中产生的跟踪文件(后台进程,用户SQL语句)
iii.C:\oracle\product\10.2.0\oradata--存放数据库的物理文件
iv.C:\oracle\product\10.2.0\flash_recovery_area--数据库启动自动备份时,存放自动备份文件,闪回日志文件。
Oracle根目录(Oracle Base Directory)是Oracle的*目录,第一次安装Oracle时,Oracle UniversivalInstaller会提示创建这个目录。在“注册表”中查找“oracle_base”可以查看oracle的根目录。
Oracle主目录(Oracle Home Directory)是安装特定的oracle产品的目录,单独的oracle产品或者不同版本的oracle数据库,都必须指定一个单独的oracle home目录,oracle home directory必须为oracle base directory 的一个子目录。Oracle UniversivalInstaller会提示你指定主目录的路径,默认为ORACLE_BASE/Db_1。在“注册表”查找“oracle_home”可以查看oracle的主目录。
注意:在使用oracle universal installer安装Oracle软件的时候,不要指定一个已经存在的目录作为oracle home directory,否则会提示存取权限错误。
Oracle清单目录(Oracle Inventory Directory)是存储系统上安装oracle软件的详细清单。系统上的每个安装都需要和分享这个目录。在第一次安装oracle软件的时候,oracle univesal installer会提示你指定这个目录的路径,ORACLE建议使用如下形式:C:\Program Files\Oracle\Inventory。在“注册表”中查找“inst_loc”可以查看oracle的清单目录。
1.3.1.ORACLE_BASE/admin目录
在admin目录下,每个数据库都有一个以数据库名称命名的子目录,即DB_NAME目录(如orcl)。
Bdump---这个目录下的几个子目录分别用于保存后台进程跟踪文件(bdump)、
Cdump---发生崩溃时操作系统进程用来写入的内核转储文件(cdump)、
Create---数据库创建文件(create)、
Pfile---初始化参数文件(pfile)
Udmp---用户进程生成的任何跟踪文件(udump)。
提示:可以经常将bdump目录、udump目录中的不再需要的文件删除,以免占用太多的空间。
1.3.2.ORACLE_HOME
ORACLE_HOME主要包括的子目录有:
BIN--主要包含用于数据库管理的各种命令等。
css--与Oracle Cluster Synchronization服务有关的文件。
dbs--存放数据库服务器端的参数文件Spfile。
demo--存放数据库实例模式的脚本等。
install--用于存储ORACLE安装后的端口号,iSQL*Plus以及Enterprise Manager Database Control启动并登录的方式等。
NETWORD\ADMIN--有关监听器listener.ora和sqlnet.ora以及tnsnames.ora等。
sysman\config--用于与Oracle Enterprise Management有关的端口管理等。
database--初始化参数与口令文件。
1.3.3.ORACLE_BASE/oradata
在oradata目录下,每个数据库都有一个以数据库名称命名的子目录,即DB_NAME目录(如orcl)。该数据库的控制文件(.CTL)、重做日志文件(.LOG)和数据文件(.DBF)等存储在该目录中。
注意:可以将ORACLE_HOME/database目录(初始化参数与口令)、ORACLE_HOME/NETWORK/ADMIN目录(网络连接与监听)和ORACLE_BASE/oradata目录(数据库物理文件)备份到其他盘符,当数据库出现不可恢复的错误时,先关闭数据库,然后将这三个目录替换,再启动数据库,可以将数据库恢复到原始状态。
1.3.4.ORACLE_BASE/flash_recovery_area
flash_recovery_area目录存储并管理与备份和恢复有关的文件,如控制文件、联机重做日志副本、归档日志、闪回日志以及Oracle数据库恢复管理器(RMAN)备份等。
通过查询注册表看到的Oracle的目录信息:
2. Oracle客户端的安装
2.1. Oracle数据库client端的安装(安装管理员选项)
2.2. Oracle配置文件的介绍
listener.ora、tnsnames.ora和sqlnet.ora这3个文件是关系oracle网络配置的3个主要文件,都是放在oracle\product\10.2.0\db_1\NETWORK\ADMIN目录下。其中listener.ora是和数据库服务器端相关,而tnsnames.ora和sqlnet.ora这2个文件不仅仅关系到服务器端,主要的还是和客户端关系紧密。
2.2.1、客户端设置说明
2.2.1.1.sqlnet.ora
通过这个文件来决定怎样找一个连接中出现的连接字符串
示例文件:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES,EZCONNECT)
#NAMES.DEFAULT_DOMAIN = oracle.com
内容说明:
#表明用户连接数据库用哪种验证方式 主要两种:
(1)NTS: 表示系统身份验证 ---用户名和口令可输可不输 conn / as sys dba;
(2)NONE:oralce数据库身份验证---必须输入用户名和口令 conn system/oracle as sysdba;
在unix环境下可能会有问题,一般在unix下可以去掉这个配置。
NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES,EZCONECT)——表示将首先利用tnsnames进行解析;如果tnsnames解析不到,将使用hostname解析;如果hostname解析不到,将采用onames进行解析;最后使用EZCONNECT解析。例如我们客户端输入:SQL> conn [email=system/oracle@orcl23]system/oracle@orcl23[/email] (orcl123是网络服务名) 那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的IP地址然后去连接这个IP上global_name=orcl123这个实例,当然我这里orcl并不是一个主机名。
被注释掉的NAMES.DEFAULT_DOMAIN = oracle.com——表示采用默认的域名为oracle.com,在tnsnames.ora中如果配置对应的解析,如果原来的数据库别名是oralocal(即网络服务名),那么,当启用这个参数后,在tnsnames中的配置要改成oralocal.oracle.com。在使用tnsping时或者sqlplus登录时,只需写前面的别名,系统会自动加上后面的域名来进行解析。
2.2.2.tnsnames.ora
这个文件放在客户端机器上,记录客户端访问数据库的本地配置,其实就是定义网络服务,只有当sqlnet.ora中有“NAMES.DIRECTORY_PATH= (TNSNAMES)”这样的字样时,也就是客户端解析连接字符串的顺序中有TNSNAMES时,才会尝试使用这个文件。
示例文件:
ORCL123 =网络服务名--------------配置文件里存在的一个网络服务名
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = zhaomengbin)(PORT = 1521))
) # 协议是TCP ,要连接的服务器的计算机名zhaomegnbin ,端口号为1521
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
ORCL =网络服务名--------------配置文件里存在的另外一个网络服务名
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ZHAOMENGBIN)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(Key = EXTPROC1))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
2.3、服务器端设置
2.3.1 listener.ora
它是listener监听器进程的配置文件。关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。
示例文件:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = F:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ZHAOMENGBIN)(PORT = 1521))
)
)
上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个数据库实例(SID)提供服务。
LISTENER :指出一个监听器定义的起始点。它实际上是正被定义的当前监听器的名称。默认的名称是LISTENER。
DESCRIPTION :描述每个监听位置
ADDRESS_LIST :含有与监听器正在监听的那些位置有关的地址信息
PROTOCOL :指定用于本监听位置的协议
HOST :保存监听器所驻留在的那台计算机的名称
PORT :含有监听器正在上面监听的地址
SID_LIST_LISTENER :定义配置监听器所针对的ORACLE服务的列表
SID_DESC :描述每个Oracel SID
GLOBAL_DBNAME :标识全局数据库名称。本项应该与当前Oracle服务的init.ora文件中的SERVICE_NAMES项一致
ORACLE_HOME :给出服务器上Oracle可执行程序的位置
SID_NAME :含有用于本Oracle实例的Oracle SID的名称
2.3.1.1. PL/SQL安装注意事项:不能安装在带括号的文件夹下面; TNSNAMES.ORA文件需要放在D:\oracle\product\10.2.0\client_2\NETWORK\ADMIN路径下; (目前安装文件默认放在;D:\oracle\product\10.2.0\client_2\NETWORK\ADMIN\SAMPLE文件夹中,可以通过复制到需要放在的路径下)
2.3.3.安装好后,连接数据库
2.3.3.1.Oracle SQL*Plus连接数据
2.3.3.2.CMD 命令连接
sqlplus有几种登陆方式比如:
1.C: > sqlplus "/as sysdba" --以操作系统权限认证的oracle sys管理员登陆
2.C: > sqlplus /nolog --不在cmd或者terminal当中暴露密码的登陆方式
SQL> conn /as sysdba & SQL> conn sys/password as sysdba
3.C: > sqlplus scott/tiger --非管理员用户登陆
4.C: > sqlplus scott/tiger@orcl --非管理员用户使用tns别名登陆
5.C: > sqlplus sys/password@orcl as sysdba --管理员用户使用tns别名登陆
6.C: > sqlplus --不显露密码的登陆方式
Enter user-name:sys
Enter password:password as sysdba --以sys用户登陆的话 必须要加上 as sysdba 子句
几种连接用到的命令形式的说明:
1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程
2.sqlplus sys/oracle 这种连接方式只能连接本机数据库,同样不需要listener进程
3.sqlplus sys/oracle@orcl 这种方式需要listener进程处于可用状态。最普遍的通过网络连接。
以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。
例:Sqlpus scott/S123456@orcl--非管理员
连接成功!
退出
2.3.3.3.使用sqlplus可视化工具登录
http://192.168.20.133:5560/isqlplus/workspace.uix
2.3.3.4.使用PL/SQL工具登录