第5章 Oracle数据库 本章要点  Oracle 12c数据库的特性。  Oracle 12c数据库安装。  Oracle数据库开发工具: 使用图形界面的SQL Developer和Oracle Enterprise Manager,使用命令行的SQL*Plus。  Oracle数据库卸载。 Oracle 12c是由Oracle公司开发的支持关系对象模型的分布式数据库产品,是当前主流关系数据库管理系统之一。本章介绍Oracle 12c数据库的特性、安装、开发环境和卸载等内容。 5.1Oracle 12c数据库的特性 Oracle 的产品版本具有信息化发展的鲜明时代特征,从8i/9i的Internet时代,10g/11g的Grid(网格计算)时代,到12c的Cloud(云计算)时代。 2013年7月,发布了Oracle 12c,这是首款专门为云计算设计的数据库。其中,最重要的两个新特性是云端数据库整合的全新多租户架构和支持行式存储与列式存储并存的内存数据库。下面简要介绍Oracle 12c数据库的新特性。 1. 云端数据库整合的全新多租户架构 在Oracle 12c引入的多租户用户环境(Multitenancy Environment)中,允许一个数据库容器(Container Database,CDB)承载多个可插拔数据库(Pluggable Database,PDB)。在Oracle 12c之前,实例与数据库是“一对一”或“多对一”关系(RAC): 即一个实例只能与一个数据库相关联,数据库可以被多个实例所加载,而实例与数据库不可能是“一对多”的关系。进入Oracle 12c之后,实例与数据库可以是“一对多”的关系。 Oracle多租户技术可与所有Oracle数据库功能协同工作,包括应用到集群、分区、数据防护、压缩、自动存储管理等。 2. 支持行式存储与列式存储并存的内存数据库 传统的数据库概念中,以行形式保存的数据满足联机事务处理(OnLine Transaction Processing,OLTP)应用; 列形式保存的数据满足以查询为主的联机分析处理(OnLine Analytical Processing,OLAP)应用。Oracle支持行式存储与列式存储并存的内存数据库(Inmemory)组件可以和其他数据库组件功能使用,利用内存的速度和优化的列格式加速数据分析。 3. 与大数据的高度集成 通过SQL模式匹配增强了面向大数据的数据库MapReduce功能,开源R与Oracle 12c的高度集成,使数据分析人员可以更好地进行大数据分析和企业信息分析。 4. 使Oracle数据库成为私有云和公有云部署的理想平台 Oracle企业管理器实现了私有云和公有云之间透明移动负载和无缝切换。 5. 数据自动优化 Oracle 12c新添加的数据自动优化功能,可以帮助用户有效管理更多数据、降低存储成本和提高数据库的性能。 6. 深度安全防护 推出了更多的安全性创新,可帮助客户应对不断升级的安全威胁和严格的数据隐私合规要求。 5.2Oracle 12c数据库安装 本书将在Windows 7系统下安装Oracle 12c。下面介绍Oracle 12c的安装要求和安装步骤。 5.2.1安装要求和软件下载 1. 安装Oracle 12c的软件和硬件环境要求 操作系统: Windows Server 2000 SP1以上、Windows Server 2003、Windows Server 2008、Windows XP Professional、Windows Vista、Windows 7、Windows 8、Windows 10。 CPU: 最小1GHz,建议2GHz以上。 网络配置: TCP/IP。 物理内存: 最小2GB。 虚拟内存: 物理内存的2倍左右。 硬盘: NTFS,最小10GB。 Oracle 12c只能安装在Windows 64位操作系统上。 2. 安装软件下载 Oracle 12c安装软件,可以直接从Oracle官方网站上免费下载,下载网址为: https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html 下载窗口如图5.1所示。 图 5.1Oracle 12c安装软件下载窗口 5.2.2Oracle 12c数据库安装步骤 以在Windows 7下安装Oracle 12c 企业版为例,说明安装步骤。 (1) 双击winx64_12201_database文件夹中的setup.exe应用程序,出现命令提示行,启动Oracle Universal Installer安装工具,出现“配置安全更新”窗口,取消“我希望通过My Oracle Support接收安全更新”选项,如图5.2所示,单击“下一步”按钮。 图5.2“配置安全更新”窗口 (2) 进入如图5.3所示的“选择安装选项”窗口,这里选择“创建和配置数据库”,单击“下一步”按钮。 图5.3“选择安装选项”窗口 (3) 出现“选择系统类”窗口,本书安装Oracle仅用于教学,这里选择“桌面类”,如图5.4所示。 图5.4“选择系统类”窗口 (4) 单击“下一步”按钮,出现“指定Oracle主目录用户”窗口,该步骤是Oracle 12c特有的,用于更加安全地管理Oracle主目录,防止用户误删Oracle文件。这里,选择“创建新Windows用户”,在“用户名”中输入ora,在“口令”中输入Ora123456,如图5.5所示。 图5.5“指定Oracle主目录用户”窗口 注意: Oracle 12c对用户口令有严格要求,规范的标准口令组合为: 小写字母+数字+大写字母(顺序不限),且字符长度必须保持在要求的范围内。 (5) 单击“下一步”按钮,出现“典型安装配置”窗口,“Oracle基目录”“数据库文件位置”“数据库版本”“可插入数据库名”等均采用默认值,但要保存上述信息到本地,以便以后使用。这里“全局数据库名”为stsys,“字符集”设置选择“操作系统区域设置(ZHS16GBK)”,设置口令为Ora123456,如图5.6所示。 图5.6“典型安装配置”窗口 (6) 单击“下一步”按钮,执行先决条件检查后,出现“概要”窗口,生成安装设置概要信息,可保存上述信息到本地,对于需要修改的地方,可返回“上一步”进行调整,如图5.7所示,确认无误后,单击“安装”按钮。 图5.7“概要”窗口 (7) 出现“安装产品”窗口,进入安装产品过程,持续时间较长,如图5.8所示。 图5.8“安装产品”窗口 (8) 安装完成并且Oracle Database配置完成后,出现“完成”窗口,提示安装成功,如图5.9所示,单击“关闭”按钮结束Oracle 12c的安装。 图5.9“完成”窗口 5.3Oracle数据库开发工具 在Oracle 12c数据库中,可以使用两种方式执行命令: 一种方式是使用命令行,另一种方式是使用图形界面。图形界面的特点是直观、简便、容易记忆,但灵活性较差,不利于用户对命令及其选项的理解。使用命令行需要记忆命令的语法形式,但使用灵活,有利于加深用户对命令及其选项的理解,可以完成某些图形界面无法完成的任务。 Oracle 12c数据库有很多开发和管理工具,包括使用图形界面的SQL Developer和Oracle Enterprise Manager,以及使用命令行的SQL*Plus,下面分别进行介绍。 5.3.1SQL Developer SQL Developer是一个图形化的开发环境,集成于Oracle 12c中。它可以创建、修改和删除数据库对象,运行SQL语句,调试PL/SQL程序十分直观、方便,简化了数据库的管理和开发,提高了工作效率,受到了广大用户的欢迎。 启动SQL Developer操作步骤如下。 (1) 选择“开始”→“所有程序”→OracleOraDb12_home1→“应用程序开发”→SQL Developer命令,如果是第一次启动,会弹出Oracle SQL Developer窗口,要求输入java.exe完全路径,单击Browse按钮,选择java.exe的路径。 (2) 出现Oracle SQL Developer窗口的起始页,如图5.10 所示。 图5.10SQL Developer窗口的起始页 (3) SQL Developer启动后,需要创建一个数据库连接,创建了数据库连接后,才能在该数据库中创建、更改对象和编辑表中的数据。在主界面左边窗口的“连接”选项卡中右击“连接”节点,选择“新建连接”命令; 弹出“新建/选择数据库连接”窗口,在“连接名”框中输入一个自定义的连接名,如sys stsys; 在“用户名”框中输入system; 在“口令”框中输入相应的密码,这里口令为Ora123456(安装时已设置); 选中“保存口令”框; “角色”框保留为默认的default; 在“主机名”框中保留为localhost; “端口”端口值保留默认的1521; SID框中输入数据库的SID,本书为stsys; 设置完毕后,单击“保存”按钮对设置进行保存; 单击“测试”按钮对连接进行测试,如果成功,在左下角状态栏会显示成功,如图5.11所示。 图5.11“新建/选择数据库连接”窗口 (4) 单击“连接”按钮,出现Oracle SQL Developer主界面,如图5.12所示。 图5.12Oracle SQL Developer主界面 5.3.2SQL*Plus SQL*Plus是Oracle公司独立的SQL语言工具产品,它是与Oracle数据库进行交互的一个非常重要的工具,同时也是一个可用于各种平台的工具。很多初学者使用SQL*Plus与Oracle数据库进行交互,执行启动或关闭数据库,数据查询,数据插入、删除、修改,创建用户和授权,备份和恢复数据库等操作。 1. 启动SQL*Plus 启动SQL*Plus有以下两种方式。 (1) 从Oracle程序组中启动。 选择“开始”→“所有程序”→OracleOraDb12c_home1→“应用程序开发”→SQL Plus命令,进入SQL Plus命令行窗口,这里,在“请输入用户名: ”处输入system,在“输入口令:”处输入Ora123456,按Enter键连接到Oracle,如图5.13所示。 图5.13从Oracle程序组中启动SQL*Plus (2) 从Windows命令窗口启动。 选择“开始”→“运行”命令,进入Windows运行窗口,在“打开”框输入“sqlplus”后按Enter键,然后输入用户名和口令,连接到Oracle后进入如图5.14所示界面。 图5.14从Windows命令窗口启动SQL*Plus 2. 使用SQL*Plus 下面介绍使用SQL*Plus创建数据表,以及插入和查询数据。 【例5.1】使用SQL*Plus编辑界面创建学生成绩数据库stsys中的成绩表score。 在提示符SQL>后输入以下语句: CREATE TABLE score ( sno char (6) NOT NULL, cno char (4) NOT NULL, grade int NULL, PRIMARY KEY(sno,cno) ); 该语句执行结果如图5.15所示。 图5.15创建score 注意: Oracle命令不分大小写,在SQL*Plus中每条命令以分号(; )为结束标志。 【例5.2】使用INSERT语句向成绩表score插入一条记录。 在提示符SQL>后输入以下语句: INSERT INTO score VALUES('121001','1004',92); 该语句执行结果如图5.16所示。 图5.16向score插入一条记录 【例5.3】使用SELECT语查询成绩表score中的记录。 在提示符SQL>后输入以下语句: SELECT * FROM score; 该语句执行结果如图5.17所示。 图5.17查询score中的记录 3. SQL*Plus编辑命令 在SQL*Plus中,最后执行的一条SQL*Plus语句将保存在一个SQL缓冲区的内存区域中,用户可对SQL缓冲区中的SQL语句进行修改、保存,然后再次执行。 1) SQL*Plus行编辑命令 SQL*Plus窗口是一个行编辑环境,它提供了一组行编辑命令用于编辑保存在SQL缓冲区中的语句,常用的编辑命令如表5.1所示。 表5.1SQL*Plus行编辑命令 命令描述 A[PPEND] text将文本text的内容附加在当前行的末尾 C[HRNGE]/old/new将旧文本old替换为新文本new的内容 C[HANGE]/text删除当前行中text指定的内容 CL[EAR]BUFF[ER]删除SQL缓冲区中的所有命令行 DEL删除当前行 DEL n删除n指定的行 DEL m n删除由m行到n行之间的所有命令 DEL n LAST删除由n行到最后一行的命令 I[NPUT]在当前行后插入任意数量的命令行 I[NPUT] text在当前行后插入一行text指定的命令行 L[IST]列出所有行 L[IST]n或只输入n显示第n行,并指定第n行为当前行 L[IST]m n显示第m行~第n行 L[IST]*显示当前行 R[UN]显示并运行缓冲区中当前命令 n text用text文本的内容替代第n行 O text在第一行之前插入text指定的文本 2) SQL*Plus文件操作命令 SQL*Plus常用的文件操作命令,如表5.2所示。 表5.2SQL*Plus文件编辑命令 命令描述 SAV[E] filename将SQL缓冲区的内容保存到指定的文件中,默认的扩展名为.spl GET filename将文件的内容调入SQL缓冲区,默认的文件扩展名为.sql STA[RT] filename运行filename指定的命令文件 @ filename运行filename指定的命令文件 ED[IT]调用编辑器,并把缓冲区的内容保存到文件中 ED[IT] filename调用编辑器,编辑所保存的文件内容 SPO[OL][filename]把查询结果放入文件中 EXIT退出SQL*plus 【例5.4】在SQL*Plus中输入一条SQL查询语句,将当前缓冲区的SQL语句保存为sco.sql文件,再将保存在磁盘上的文件sco.sql调入缓冲区执行。 (1) 保存脚本文件sco.sql。 输入SQL查询语句。 SELECT sno, cno FROM score WHERE grade=92; 保存SQL语句到sco.sql文件中。 SAVE E:\sco.sql (2) 调入脚本文件sco.sql并执行。 GET E:\sco.sql 运行缓冲区的命令使用/即可,执行结果如图5.18所示。 图5.18查询score中的记录 5.3.3Oracle Enterprise Manager OEM是Oracle Enterprise Manager(企业管理器)的简称,它是一个基于Java的框架系统,具有图形用户界面,OEM采用了基于Web的界面,使用B/S模式访问Oracle数据库管理系统。使用OEM可以创建表、视图、管理数据库的安全性、备份和恢复数据库、查询数据库的执行情况和状态、管理数据库的内存和存储结构等。 OEM操作步骤如下。 (1) 在浏览器地址栏输入OEM的URL地址https: //localhost: 5500/em/,启动OEM。 (2) 出现OEM的登录页面,如图5.19所示,在“用户名”框中输入sys,在“口令”框中输入设定的Ora123456,选择“以sysdba身份”框。 图5.19OEM登录界面 (3) 单击“登录”按钮,进入“数据库主目录”属性页。这里显示当前数据库的状态、性能、资源、SQL监视、意外事件等,如图5.20所示。 图5.20“数据库主目录”属性页 (4) 在“数据库主目录”菜单栏,选择“配置”菜单“初始化参数”选项,进入“初始化参数”属性页,显示Ansi相容性、Exadata、Java、PL/SQL、SGA内存等参数。 (5) 在“数据库主目录”菜单栏,选择“存储”菜单“还原管理”选项,进入“还原管理”属性页,显示还原概要、还原统计信息概要、还原指导、统计信息等。 (6) 在“数据库主目录”菜单栏,选择“安全”菜单“用户”选项,进入“普通用户”属性页,显示用户名称、账户状态、失效日期、默认表空间等。 (7) 在“数据库主目录”菜单栏,选择“性能”菜单“性能中心”选项,进入“性能中心”属性页,显示过去1小时实时情况,并可通过“概要”“活动”“工作量”“监视的SQL”“ADDM”“容器”等选项卡查询有关性能。 5.4Oracle 12c数据库卸载 Oracle 12c数据库卸载包括停止所有Oracle服务,卸载所有Oracle组件,手动删除Oracle残留部分等。 5.4.1停止所有Oracle服务 在卸载Oracle组件以前,必须首先停止所有Oracle服务,其操作步骤如下。 (1) 选择“开始”→“控制面板”→“管理工具” 命令,在右侧窗口中双击“服务”选项,出现如图5.21所示“服务”窗口。 图5.21“服务”窗口 (2) 在“服务”窗口中,找到所有与Oracle相关且状态为“已启动”的服务,分别右击“已启动”的服务,在弹出的菜单中选择“停止”命令。 (3) 退出“服务”窗口,退出“控制面板”。 5.4.2卸载所有Oracle组件 运行命令I: \app\ora\product\12.2.0\dbhome_1\deinstall\deinstall,即可卸载所选择的组件。 5.4.3手动删除Oracle残留部分 由于Oracle Universal Installer(OUI)不能完全卸载Oracle所有成分,在卸载完Oracle所有组件后,还需要手动删除Oracle残留部分,包括在注册表、环境变量、文件和文件夹中的残留部分等。 1. 从注册表中删除 删除注册表中所有Oracle入口,操作步骤如下。 (1) 选择“开始”→“运行”,在“打开”文本框中输入regedit命令,单击“确定”按钮,出现 “注册表编辑器”窗口。 (2) 在“注册表编辑器”窗口中,在HKEY_CLASSES_ROOT路径下,查找Oracle、ORA、Ora的注册项进行删除,如图5.22所示。 图5.22HKEY_CLASSES_ROOT路径 在HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE路径下,删除ORACLE目录,该目录注册ORACLE数据库软件安装信息,如图5.23所示。 图5.23HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE路径 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services路径下,删除所有以ORACLE开始的服务名称,该键标识ORACLE在Windows下注册的服务,如图5.24所示。 图5.24HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services路径 在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application路径下,删除以ORACLE开头的ORACLE事件日志,如图5.25所示。 图5.25HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application路径 (3) 确定删除后,退出“注册表编辑器”窗口。 2. 从环境变量中删除 从环境变量中删除Oracle残留部分,操作步骤如下。 (1) 选择“开始”→“控制面板”→“系统”,单击“高级系统设置”,出现 “系统属性”对话框。 (2) 在“系统属性”对话框中,单击“环境变量”按钮,弹出如图5.26所示“环境变量”对话框。 图5.26“环境变量”对话框 (3) 在“系统变量”列表框中,选择变量Path,单击“编辑”按钮,删除Oracle在该变量值中的内容; 选择变量ORACLE_HOME,单击“删除”按钮,将该变量删除。单击“确定”按钮,保存并退出。 3. 从文件夹中删除 在文件和文件夹中删除Oracle残留部分,操作步骤如下。 (1) 删除C:\Program Files\Oracle。 (2) 删除D:\app。 注意: 需要对Oracle数据库重新安装,必须先卸载已安装的Oracle数据库。 5.5小结 本章主要介绍了以下内容。 (1) Oracle 12c数据库在云端数据库整合的全新多租户架构、支持行式存储与列式存储并存的内存数据库、与大数据的高度集成、使Oracle数据库成为私有云和公有云部署的理想平台、数据自动优化、深度安全防护等方面具有新特性。 (2) 在Windows 7系统下安装Oracle 12c的安装要求和安装步骤。 (3) SQL Developer是一个图形化的开发环境,集成于Oracle 12c中,用于创建、修改和删除数据库对象,运行SQL语句,调试PL/SQL程序。 (4) SQL*Plus是Oracle公司独立的SQL语言工具产品,是一个使用命令行的开发环境,它是与Oracle数据库进行交互的一个非常重要的工具,同时也是一个可用于各种平台的工具,广泛应用于执行启动或关闭数据库,数据查询,数据插入、删除、修改,创建用户和授权,备份和恢复数据库等操作。 (5) OEM是Oracle Enterprise Manager(企业管理器)的简称,具有图形用户界面,使用OEM可以创建表、视图、管理数据库的安全性、备份和恢复数据库、查询数据库的执行情况和状态等。 (6) Oracle 12c数据库卸载,包括停止所有Oracle服务,卸载所有Oracle组件,手动删除Oracle残留部分等。 习题5 一、 选择题 1. 下列操作系统中,不能运行Oracle 12c的是。 A. WindowsB. MacintoshC. LinuxD. Unix 2. 关于SQL*Plus的叙述正确的是。 A. SQL*Plus是Oracle数据库的专用访问工具 B. SQL*Plus是标准的SQL访问工具,可以访问各类关系数据库 C. DB包括DBS和DBMS D. DBS就是 DBMS,也就是DB 3. SQL*Plus显示student表结构的命令是。 A. LIST student B. DESC student C. SHOW DESC student D. SHOW STRUCTURE student 4. 将SQL*Plus的显示结果输出到E:\dp.txt的命令。 A. SPOOL TO E:\dp.txt B. SPOOL ON E:\dp.txt C. SPOOL E:\dp.txt D. WRITE TO E:\dp.txt 5. SQL*Plus执行刚输入的一条命令用。 A. 正斜杠(/)B. 反斜杠(\)C. 感叹号(!)D. 句号(.) 二、 填空题 1. 在SQL*Plus工具中,可以运行和。 2. 使用SQL*Plus命令可以显示表结构的信息。 3. 使用SQL*Plus的命令可以将文件的内容调入缓冲区,并且不执行。 4. 使用SQL*Plus的命令可以将缓冲区的内容保存到指定文件中。 三、 问答题 1. Oracle 12c具有哪些新特征? 2. Oracle 12c安装要求有哪些? 3. 简述Oracle 12c安装步骤。 4. Oracle 12c有哪些管理工具? 5. SQL Developer有哪些功能? 6. 简述启动SQL Developer的操作步骤。 7. 简述Oracle 12c卸载步骤。 四、 应用题 1. 安装Oracle 12c。 2. 在SQL*Plus工具中,使用SELECT语句查询教师表teacher中的记录,并列出缓冲区的内容。 3. 在SQL*Plus中,将以下SQL语句中tc的值修改为52后再执行。 SELECT * FROM student WHERE tc=50; 4. 在SQL*Plus中输入一条SQL查询语句, SELECT * FROM course; 将当前缓冲区的语句保存为course.sql文件,再将保存在磁盘上的文件course.sql调入缓冲区执行。