电子科技大学数据库与软件工程实验报告一
一、实验目的
1、掌握和熟悉 Linux 操作系统的 shell 基本命令的操作;
2、了解 Oracle 数据库的基本组成;
3、掌握 Oracle 的安装和配置及基本工具的使用。
二、实验内容
在虚拟机中安装 CentOS 操作系统。然后在 CentOS 上安装、运行 Oracle 数据库,通过 em 控制台查看数据库状态,手动启动 Oracle 实例和监听。
在 Windows 系统中安装 SQL Developer,连接虚拟机中的 Oracle 数据库,创建一个学生学号用户
三、实验软件
CentOS 安装软件: CentOS-6.7-x86_64-bin-DVD1.iso
Oracle 安装软件: linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
SQL Developer 安装软件:
32 位:sqldeveloper-17.2.0.188.1159-no-jre.zip、jdk-8u141-windows-i586.exe
64 位:sqldeveloper-17.2.0.188.1159-x64.zip
四、实验步骤及数据记录
1.CentOS安装
1)启动 VMware,使用“典型”配置新建虚拟机
2)安装来源选择为“安装程序光盘映像文件”
3)输入用户名、密码信息
4)选择安装位置。
5)磁盘容量建议为 ****30G****。
6)“自定义硬件”修改设置后开始安装,内存建议 2G(至少 1152MB)。
7)安装成功后,使用 root 用户登录进入 CentOS 系统桌面,即在登录界面
选择“Other…”,将登入进入的 CentOS 系统桌面,系统桌面如图。
2.Oracle安装准备
2.1硬件环境检查
使用 root 用户登录进入 CentOS 系统桌面后,在终端命令行窗口中检查安装,运行 Oracle 所需的硬件环境,包括内存、Swap 空间、tmp 空间及 Oracle 软件安装所需的硬件空间检查。
1)查看操作系统版本信息,在终端中输入以下命令
[root@localhost ~]# cat /proc/version
[root@localhost ~]# uname –r
结果如图所示
2)查看机器内存大小,在终端中输入以下命令
[root@localhost ~]# grep MemTotal /proc/meminfo
结果如图所示
3)查看swap空间大小,在终端中输入以下命令
[root@localhost ~]# grep SwapTotal /proc/meminfo
结果如图所示
4)查看/tmp目录的空闲空间,在终端中输入以下命令
[root@localhost ~]# df -h /tmp
5)查看机器中每个磁盘的空闲空间,在终端中输入以下命令
[root@localhost ~]# df –h
2.2系统必须的RPM包检查
1)使用以下命令检查“三、实验原理”之“4.Oracle 数据库安装运行环境。
[root@localhost ~]#rpm -qa | grep
检查结果如图所示
缺少的都需要安装相关的软件包,在 CentOS 安装光盘文件的 Packages 目录下可以查询到所用相关的软件包,将这些软件包复制到 root 目录下。
2)通过以下命令将缺少的RPM包安装好:
[root@localhost ~]#rpm –ivh
注意:在安装软件包的过程中,会遇到包之间的依赖关系(单独安装时会有错误提示),这时可以同时安装这两个相依赖的包。
[root@localhost ~]#rpm –ivh <software package 1> <software package 2>
2.3 创建系统用户组合用户
1)创建 Oracle Inventory 组
[root@localhost ~]#groupadd oinstall
2)创建 OSDBA 组
[root@localhost ~]#groupadd dba
3)创建 Oracle 软件创建者
[root@localhost ~]# useradd -g oinstall -G dba Oracle
4)修改 Oracle 用户的密码
[root@localhost ~]# passwd Oracle
5)创建安装 Oracle 软件所需要的目录
[root@localhost ~]# mkdir -p /home/Oracle_11g
[root@localhost ~]# chown -R Oracle:oinstall /home/Oracle_11g
[root@localhost ~]# chmod -R 775 /home/Oracle_11g
2.4 修改内核参数等配置文件
1)修改/etc/sysctl.conf 文件
[root@localhost ~]#vim /etc/sysctl.conf
在打开的文件底部添加以下内容:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048586
改变当前系统内核参数值(让/etc/sysctl.conf 立即生效)
[root@localhost ~]# sysctl –p
2)修改/etc/security/limits.conf 文件
[root@localhost ~]#vim /etc/security/limits.conf
在打开的文件底部添加以下内容:
Oracle soft nproc 2047
Oracle hard nproc 16384
Oracle soft nofile 1024
Oracle hard nofile 65536
Oracle soft stack 10240
3)修改/etc/pam.d/login 文件
[root@localhost ~]#vim /etc/pam.d/login
在打开的文件中添加以下内容:
session required /lib/security/pam_limits.so
session required pam_limits.so
4)修改/etc/profile 文件
[root@localhost ~]#vim /etc/profile
在打开的文件中添加以下内容:
if [ $USER = “Oracle” ]; then
if [ $SHELL = “/bin/ksh” ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
2.5 设置Oracle环境变量
1)切换到 Oracle 用户,查看有没有“.bash_profile”文件:
[root@localhost ~]# su - Oracle
[Oracle@localhost ~]$ pwd
/home/Oracle
[Oracle@localhost ~]$ ls –al
如果没有该文件,可以将 root 目录下的.bash_profile 文件复制到/home/Oracle目录下。
当 Oracle 用户登录进来时,.bash_profile 文件会自动执行。编辑此文件设置Oracle 环境变量。
[Oracle@localhost ~]$ vi .bash_profile
在打开的文件中添加以下内容,要求以实验者姓氏拼音和名的首字母来命名oracle 实例:
export ORACLE_BASE=/home/Oracle_11g
//数据库安装位置
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export ORACLE_SID=**zhangs**
//数据库实例名,例如:*张三*
export PATH= O R A C L E H O M E / b i n : ORACLE_HOME/bin: ORACLEHOME/bin:PATH
export LD_ASSUME_KERNEL=2.6.18
export LD_LIBRARY_PATH= O R A C L E H O M E / l i b : ORACLE_HOME/lib: ORACLEHOME/lib:LD_LIBRARY_PATH
export DISPLAY=:0.0
退出Oracle用户
[Oracle@localhost ~]$ exit
2)切换到 root 用户下将.bash_logout、.bash_profile 和.bashrc 三个文件复制到/home/Oracle_11g/目录下:
[root@localhost ~]# ls –al
-rw-r–r-- 1 root root 24 Jan 6 2007 .bash_logout
-rw-r–r-- 1 root root 335 Jul 17 16:10 .bash_profile
-rw-r–r-- 1 root root 176 Jan 6 2007 .bashrc
[root@localhost ~]# cp .bash_logout /home/Oracle_11g/
[root@localhost ~]# cp .bash_profile /home/Oracle_11g/
[root@localhost ~]# cp .bashrc /home/Oracle_11g/
3)再切换到 Oracle 用户下,查看设置的 Oracle 环境变量,并****截图记录****在实验报告中。
[root@localhost Oracle]# su - Oracle
[Oracle@localhost ~]$ env | grep Oracle
[Oracle@localhost ~]$ env | grep DISPLAY
查看的结果如图所示
3. 安装Oracle
3.1 运行安装程序
首先,将 压 缩 文 件 linux.x64_11gR2_database_1of2.zip和 linux.x64_11gR2_database_2of2.zip 上传到 root 用户目录下并解压,将解压后的 database 目录放到 home 下,更改 Oracle 用户权限。
[root@localhost ~]# unzip linux.x64_11gR2_database_1of2.zip
[root@localhost ~]# unzip linux.x64_11gR2_database_2of2.zip
[root@localhost ~]# mv database/ /home/
[root@localhost ~]# chown -R Oracle:oinstall /home/database/
3.2 图形界面安装Oracle
注销 root 用户,切换 Oracle 用户登录 CentOS 系统桌面。
运行/home/database/目录下的 runInstaller 后进入图形安装界面。下面是安装过程中需要注意的步骤:
1)Configure Security Updates:不勾选接收安全更新的选项
2)Installation Option:创建和配置数据库
3)System Class:服务器类
4)Grid Options:单实例数据库
5)Install Type:高级安装
6)Product Languages:英语和简体中文
7)Database Edition:企业版
8)Installation Location:安装基目录(Oracle Base)要与前面用户环境变量 所配置的基目录 (/home/Oracle_11g/)一致。
9)Create Inventory:资料目录位于 Oracle 用户目录下。
10)Configuration Type:一般用途/事务处理
11)Database Identifiers:配置 Global database name 和 SID,与“2.5 设置Oracle环境变量”步骤中设置的实例名一致,否则监听启动会出现问题。
12)Configuration Option:默认设置即可
13)Management Options:使用 Database Control 管理数据库
14)Database Storage:使用默认值 File System
15)Backup and Recovery:不启用自动备份
16)Schema Passwords:对所有账户使用相同的口令
尽量不要采用弱口令,并且应牢记设置的口令。如果口令设置不符合 Oracle 推荐的标准,会进行提示,该提示可忽略,继续进行下一步。
17)Operation System Groups:OSDBA 选择 dba 用户组,OSOPR 选择 oinstall 用户组
18)Prerequisite Checks:Oracle 自动检查系统安装条件是否满足需求
如检查不通过,Oracle 会给出具体提示。按照提示执行所需条件,执行完毕后重新检测即可。如缺失的软件包只是安装版本或位数与提示不同,则可忽略。
19)Oracle 根据之前的配置信息安装数据库
20)安装完成后提示需要运行脚本(参见步骤 3.3),点击“OK”按钮,关闭安装窗口。
3.3 运行脚本
以 root 用户执行安装完成后提示要运行的 2 个脚本:
[root@localhost ~]# /home/Oracle/oraInventory/orainstRoot.sh
[root@localhost ~]# /home/Oracle_11g/product/11.2.0/dbhome_1/root.sh
3.4 登录em控制台查看数据库状态
启动浏览器,在地址栏输入 https://localhost:1158/em(或 https://CentOS 虚拟机的 IP 地址:1158/em),访问 em 控制台,使用 sys 用户名/SYSDBA 模式登录或者使用 system 用户名/Normal 模式登录观察 Oracle 状态,状态如图所示。
重启 CentOS 系统,使用 Oracle 用户登录,使用以下命令启动 em 控制台,观察 Oracle 状态。
[Oracle@localhost ~]$ emctl start dbconsole
观察结果如图所示
3.5 手动启动数据库实例方法
1)查看数据库监听状态
[Oracle@localhost ~]$ lsnrctl status
使用以下命令开启数据库监听
[Oracle@localhost ~]$ lsnrctl start
2)开启数据库监听后,启动数据库
[Oracle@localhost ~]$ sqlplus /nolog //进入 sqlplus
SQL> conn /as sysdba //进入 sysdba 模式
SQL> startup //启动数据库
SQL> exit //退出 sqlplus
3)查看数据库监听状态,确认数据库已被启动
[Oracle@localhost ~]$ lsnrctl status
4)查看 oracle 系统进程
[Oracle@localhost ~]$ ps -ef | grep ora_
4. 安装Oracle客户端:SQL Developer
在计算机的 Windows 系统中将 SQL Developer 安装包解压到一个目录中即可。
4.1 测试与Oracle数据库的连接
运行 SQL Developer 安装包解压目录下的 sqldeveloper.exe,使用“sys”或 “system”用户名测试与 Oracle 数据库的连接。
首次连接连接失败,解决方法:关闭虚拟机的防火墙。再次连接成功。
4.2 检查修改Oracle数据库的字符集
Windows 系统下的 SQL Developer 字符集与 Oracle 数据库字符集一致。本课程实验采用支持中文的 ZHS16GBK 字符集,即一个汉字占 2 个字节。
Oracle 数据库字符集可使用以下命令查询(监听和数据库实例均已开启):
[Oracle@localhost ~]$ sqlplus /nolog
SQL> conn /as sysdba
SQL> select userenv(‘language’) from dual;
SQL> exit
查询结果如图所示
查询获得的参数格式为“language_territory.charset”,即“语言_地域.字符集”。如果查询得到的 Oracle 数据库字符集不是 ZHS16GBK,则按照以下步骤修改Oracle 数据库字符集。
[Oracle@localhost ~]$ sqlplus /nolog
SQL> conn /as sysdba
SQL> shutdown immediate
SQL> alter system enable restricted session;
SQL> alter system set job_queue_processes=0;
SQL> alter system set aq_tm_processes=0;
SQL> alter database open;
SQL> alter database character set internal_use ZHS16GBK;
SQL> shutdown immediate
SQL> startup
SQL> exit
再次查看 Oracle 数据库的字符集,结果如图所示
5.使用SQL Developer创建用户
(1) 选择菜单栏“查看” → \rightarrow →“DBA”选项
(2) 在 DBA 窗口中创建一个新连接:sys 用户,角色“SYSDBA”。
(3) 在 DBA 菜单中,展开“安全”à“用户”,在用户上点击鼠标右键,选择“新建”。
(4) 在“创建用户”窗口中,用户名为学号前加“stu”,口令为学号,并且选择默认表空间为“USERS”,临时表空间为“TEMP”。
(5) 切换到“授予的角色”标签,选择授予“CONNECT”、“DBA”、“RESOURCE”权限,点击“应用”按钮。成功后,弹出“成功”提示。
五、实验结论及思考题
实验结论:通过在虚拟机中创建Oracle数据库,并通过SQL与之相连接,我学到了创建数据库的方法和对数据库连接的方式,为进一步学习数据库的操作打下了基础。
思考题
1、Linux root 用户和普通用户模式下提示符有什么区别?如何进行用户切换?
root用户的提示符为 #,而普通用户模式下的提示符为$,在root用户下可以用exit命令退出root用户,普通用户下可以用su命令进入root用户。
2、详细解释修改 sysctl.conf 文件时增加的每条系统参数的含义及设置规则。
fs.aio-max-nr = 1048576:
此参数限制并发未完成的异步请求数目,应该设置避免I/O子系统故障
fs.file-max = 6815744:
进程可以同时打开的做句柄数,直接限制了最大并发连接数,文件句柄设置表示在Linux系统的可以打开的文件数量
kernel.shmall = 2097152:
表示系统一次可以使用的共享内存总量(以页为单位)
kernel.shmmax = 536870912:
定义了共享内存段的最大尺寸
kernel.shmmni=4096:
设置系统范围内共享内存段的最大数量,默认4096
kernel.sem = 250 32000 100 128:
系统默认值,SA未优化
net.ipv4.ip_local_port_range = 9000 65500:
查看端口范围,不要超过1024到65535,1024以下系统使用,65535以上会提示失败
net.core.rmem_default = 262144:
默认的接受窗口大小为256K
net.core.rmem_max = 4194304:
接收窗口大小最大
net.core.wmem_default = 262144:
默认的发送窗口大小
net.core.wmem_max = 1048586:
发送窗口最大
3、描述用“ps -ef | grep ora_”查看到的每个 Oracle 系统进程的具体作用。
PMON:监视其他后台进程,并在服务器或调度程序进程异常终止时执行进程恢复
VKTM:为时间间隔测量提供挂钟时间和参考时间
GEN0:执行所需的任务,包括 SQL 和 DML
DIAG:执行诊断转储
DBRM:设置资源计划并执行与数据库资源管理器相关的其他任务
PSP0:在初始实例启动后生成 oracle 后台进程
DIA0:检测和解决挂起和死锁
MMAN:用作实例内存管理器
DBWN:将修改后的块从数据库缓冲区缓存写入数据文件
LGWR:将重做条目写入在线重做日志
CKPT:在检查点发出信号 dbwn,并更新数据库的所有数据文件和控制文件,以指示最近的检查点.
SMON:执行关键任务,例如实例恢复和死事务恢复,以及维护任务,例如临时空间回收、数据字典清理和撤消表空间管理
RECO:解决由于分布式数据库中的网络或系统故障而挂起的分布式事务
MMON:执行或安排许多可管理的任务
MMNL:执行与可管理性相关的任务,包括活动会话历史采样和度量计算
QMNC:监视 aq
CJQ0:选择需要从数据字典中运行的作业,并生成作业队列从进程来运行这些作业
4、结合实验步骤 4.1,分析如果 Oracle 已启动,但是 SQL Developer 无法连接 Oracle 服务,应该怎样排查问题原因?
首先查看Oracle是否已经开启数据库监听,再查看Oracle的系统进程是否正常,查看输入的虚拟机IP是否正确,查看虚拟机的防火墙是否关闭。
5、结合实验步骤 4.2 中关闭和启动 Oracle 实例的过程,总结 Oracle 启动所经历的状态改变。
SHUTDOWN、NOMOUNT、MOUNT、OPEN
六、总结和心得体会
实验中遇到的问题:
-
修改环境变量时,对env命令不熟悉,不知道怎么修改文件内容和保存内容。解决方法:env命令打开文件后,按a是进行插入,然后w是保存,q是退出。
-
指导书上有些地方给出的命令单词有打错,造成无法找到文件。
-
安装Oracle时,发生swap空间不足。解决方法:重新分配更大的swap空间。
CO:解决由于分布式数据库中的网络或系统故障而挂起的分布式事务
MMON:执行或安排许多可管理的任务
MMNL:执行与可管理性相关的任务,包括活动会话历史采样和度量计算
QMNC:监视 aq
CJQ0:选择需要从数据字典中运行的作业,并生成作业队列从进程来运行这些作业
4、结合实验步骤 4.1,分析如果 Oracle 已启动,但是 SQL Developer 无法连接 Oracle 服务,应该怎样排查问题原因?
首先查看Oracle是否已经开启数据库监听,再查看Oracle的系统进程是否正常,查看输入的虚拟机IP是否正确,查看虚拟机的防火墙是否关闭。
5、结合实验步骤 4.2 中关闭和启动 Oracle 实例的过程,总结 Oracle 启动所经历的状态改变。
SHUTDOWN、NOMOUNT、MOUNT、OPEN
六、总结和心得体会
实验中遇到的问题:
-
修改环境变量时,对env命令不熟悉,不知道怎么修改文件内容和保存内容。解决方法:env命令打开文件后,按a是进行插入,然后w是保存,q是退出。
-
指导书上有些地方给出的命令单词有打错,造成无法找到文件。
-
安装Oracle时,发生swap空间不足。解决方法:重新分配更大的swap空间。
-
SQL连接数据库时,无法连接到数据库。解决方法:输入正确的虚拟机IP地址,并且虚拟机的防火墙应该关闭。
源文件链接:
链接:https://pan.baidu.com/s/1VBFJ1XLc6rq8N1bA2xugrg
提取码:lyhd