作为一个主要职责为DBA的开发人员,基本上部门内所有的数据库问题,小到安装、sql开发,大到系统恢复、优化,每天遇到的大大小小的问题非常多。每次遇到问题的时候,有时候凭借经验,有时候需要查阅一些相关的文档和资料,虽然事后也有一些工作总结文档,但大都很零碎,所以这次下决心把长时间积累的东西做一份总结性文档,既是对自己的知识体系在巩固的过程,也是希望发到博客上来,抛砖引玉,和同行之间多多交流。
为什么标题叫做实战演练,因为整个过程都是自己亲自从头操练了一遍,文章中所涉及的代码全部经过了实际环境的测试验证,根据自身的项目环境稍作修改即可实用。
关于内容,比较偏向于实用性,现在的项目一般都是在虚拟机上运行的,数据库也不例外,所以在开篇会将在虚拟机安装oracle11g的详细过程,后续的问题会按照以往项目经验,逐一展开,系统地论述。
准备文件
虚拟机安装文件
VMware-workstation-full-15.0.4-12990004.exe
Centos镜像文件
CentOS-7-x86_64-DVD-1810.iso
Oracle11g服务端文件
系统环境
虚拟机及版本:VMware® Workstation 15 Pro
Centos内核版本:Linux bogon 4.14.35-1844.4.5.el7uek.x86_64 #2 SMP Tue Apr 9 00:29:47 PDT 2019 x86_64 x86_64 x86_64 GNU/Linux
ORACLE版本:11.2.0
虚拟机安装
这部分不做重点讲解,一般一路按照提示操作即可,没有什么难度,但是也有可能会出现意外,下边会列举几个常见问题解决方法。
一般情况下,安装过程应勾选桌面版,但是如果安装时忘记了误选了命令行版本,可以按照下边方法解决:
安装过程中忘记了选择桌面版
首先配置网络
改变以下参数
重新启动网络服务
测试与主机互ping可通即说明成功。
接下来,我们需要做的是:
第一步,安装一个桌面(GNOME Desktop,命令:yum groupinstall -y "GNOME Desktop"),
第二步,设定左面启动(命令:systemctl set-default graphical.target ),
第三步,重启,reboot now
重启后,来到桌面设置向导,设置密码如下图
调整分辨率的方法
虚拟机下的默认分辨率很低,应该根据实际情况适当调整
使用拖拽文件法有传输过程最后却报错,文件也找不到
如果不用第三方ftp工具,简单的拖拽文件也能达到文件传输效果,但有时候会发生一些小问题,比如拖拽后文件消失了?
实际情况是文件可能已经传输完成,在home/usrname/.cache/vmware文件夹中查找,注意要开启隐藏文件可见
好了,到这里,虚拟机安装部分就完成了。
数据库安装前的准备
检查系统配置(root用户)
(1)查看内存情况,注意大小写的写法
grep MemTotal /proc/meminfo
(2)查看swap情况
grep SwapTotal /proc/meminfo
(3)查看磁盘空间
df -k
(4)/tmp目录空间大小(大于400MB)
df -h /tm
测试如下图:
检查软件安装包情况(root)
(1)检查内核版本
(2)检查软件包的安装情况
此项先略过,后边会有说明
环境配置
创建用户和用户组,操作顺序如下:
(1)创建用户组oinstall,命令如下:
groupadd oinstall
添加完后,可以在/etc/group查询
(2)创建用户组dba,命令如下:
groupadd dba
(3)设定安全策略,首先允许修改这类文件配置文件。命令如下:
chattr -i /etc/passwd /etc/shadow
(4)把用户oracle加入oinstall和dba组,命令如下:
useradd –g oinstall –G dba oracle
(5)开始修改密码,命令如下:
passwd oracle
(6)创建用户完成,设定配置文件权限,避免信息篡改,命令如下:
chattr +i /etc/passwd /etc/shadow
配置linux内核参数(root用户)
(1)修改/etc/sysctl.conf文件,增加以下内容:
以下为分配了3GB内存
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmmax = 3221225472
kernel.shmmni = 4096
kernel.shmall = 786432
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 = 1048576
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
(2)修改后:sysctl –p 设置生效
配置资源使用情况(root)
[root@bogon ~]# mkdir /home/U01
[root@bogon ~]# ln -s /home/U01 /U01
[root@bogon ~]# mkdir -p /U01/app/oracle/
[root@bogon ~]# chown -R oracle:oinstall /U01/
[root@bogon ~]# chmod -R 775 /U01/
修改/etc/pam.d/login文件,增加以下内容:
session required pam_limits.so
配置环境变量(oracle用户)
假设数据库实例名为test,则修改.bash_profile,增加以下内容:
export ORACLE_BASE=/U01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/produce/11.2.0/db1
export ORACLE_SID=test
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$PATH
export LANG="en_US.UTF-8"
export NLS_LANG=american_AMERECA.UTF8
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
ORACLE安装
在此只列举了最常用的OUI安装,得到安装包后,执行./runInstaller开始图形化安装过程,但是一般第一次安装的时候,会发生一个DISPLAY的错误,解决方法如下:
DISPLAY错误
解决方法:
在执行xhost +命令(使得所有客户都可以访问)
若返回信息为:
access control disabled,clients can connect from any host
表示xhost +可执行直接切换至oracle用户运行安装oracle
如果xhost +不能执行,
第一步:用root登陆linux,启动vnc服务;
第二步:根据vnc起来的端口,设置export DISPLAY=:1(1表示vnc在第一个tty上启动的),vnc的启动信息见下文的linux操作日志;
第三步:xhost + ip (ip为主机ip地址)如果是本机访问,可以省略ip
2、以oracle用户登录
那么在该oracle用户下执行一下export DISPLAY=:1.0
然后再执行xdpyinfo命令,如果能出现信息说明你已经成功了
这样就可以解决linux下安装oracle出现的xhost问题。
安装过程
关键步骤
第三步,选择服务器模式
第四步,选择单实例配置即可
第五步,选择高级安装
第六步,选择英语和简体中文
第七步,选择企业版
第八步,选择产品安装路径,默认会读取刚才配置的oracle用户的环境变量,默认就可以,点击下一步,如下图所示:
第九步,指定orainventory路径,默认即可
第十步,选择数据库的安装模板。11g有三种模板可供选择,分别是General purpose or Transaction Processing\Custom Database\Data Warehouse,此过程中仅显示两个。如果单独运行DBCA,则可以看到三个。对于模板类型主要有seed和noseed两种,主要区别在于是否包含数据文件,简单来说,seed就是从RMAN备份中恢复数据库,由于是恢复所以也不能做其他更多的定制修改,但是最大的特点是创建速度快,OLTP和OLAP的模板就属于seed模板类型;而“定制数据库”则属于noseed模板,不包含数据文件,需要使用create database命令创建数据库,创建时间要稍微长一些,对于大部分系统业务来说,需要根据自己的需求来选择合适的模板类型。
第十一步,会读取oracle的环境变量,全局数据库名和oracle数据库标识符尽量一样,如下图所示,点击下一步:
第十二步,指定配置选项,标签页1(内存),AMM是11g的新特性,根据实际情况开启,这里为了测试开启了
标签页2(字符集),根据情况选择
标签页3(安全性)
标签页4(简单示例),示例方案根据个人需求选,如果是自己测试使用,建议勾选,如下图所示:
第十三步,默认选则,点击下一步:
第十四步,默认读取oracle用户环境变量,点击下一步,如下图所示:
第十五步,生产环境启用自动备份,如下图所示,点击下一步:
第十六步,选择对所有用户使用相同的口令, 并设定密码,密码需要满足复杂度校验,否则如下图所示,设定好后点击下一步:
第十七步
第十八步,先决条件检查
内核参数修复方法,按照提示修复即可
依赖包的安装方法
未修复之前,有19个依赖包需要安装
yum -y install gcc
安装后剩余16个依赖包需要安装
yum -y install gcc-c++
安装后剩余14个依赖包需要安装
yum -y install compat-libstdc++-33
安装后剩余13个依赖包需要安装
yum -y install elfutils-libelf-devel
安装后剩余12个依赖包需要安装
yum -y install libaio-devel
安装后剩余11个依赖包需要安装
yum -y install unixODBC
安装后剩余10个依赖包需要安装
yum -y install unixODBC-devel
安装后剩余9个依赖包需要安装
yum -y install pdksh
报错,百度搜原因:pdksh是一个老包了,新的oracle都使用ksh包
改执行:yum -y install ksh
操作截图示例:
利用oracle-rdbms-server-11gR2-preinstall --nongpgcheck 更新后没有作用,此操作可以自动完成很多前置操作,在下一次的12c演练中会详细操作
最后剩下的9个依赖包
如果有x64同名依赖包,可以忽略i386的
内核参数semmni在cent7下即使设置正确也会报错,可以忽略掉
是否影响使用,有待验证
最后会出现下图问题
注意:85%进度出现警告(如上图),可以忽略。主要是10.2.0.4补丁建议em访问方式改为https而不是原来的http;
如果想要使用https方式,请根据警告提示的步骤去执行。
Error securing Database control,Database control has been brought up in non-secure mode ……
第十九步,切换root安装脚本
启动数据库服务发现ora—000845错误解决方法
ORA-00845: MEMORY_TARGET not supported on this system
这个错误的主要原因是tmpfs的值小于memory_target的值。
[root@dac-vm02 ~]#oerr ora 845
00845, 00000, "MEMORY_TARGET notsupported on this system"
// *Cause: The MEMORY_TARGET parameter wasnot supported on this operating system or /dev/shm was not sized correctly onLinux.
// *Action: Refer to documentation for alist of supported operating systems. Or, size /dev/shm to be at least theSGA_MAX_SIZE on each Oracle instance running on the system.
解决方案:
因此我们只需要将tmpfs的值改大一点就好了。
先来看一下memory_target的值是多大
SQL> show parameter memory_target
NAME TYPE VALUE
------------------------------------ -------------------------------- ------------------------------
memory_target big integer 1296M
SQL>
只需要将tmpfs的值设置大于800M即可,tmpfs的初始值为内存的一半
编辑/etc/tmpfs文件,将tmpfs的值定为3G
/dev/VolGroup00/LogVol00 / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
tmpfs /dev/shm tmpfs defaults,size=3G 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
/dev/VolGroup00/LogVol01 swap swap defaults 0 0
加入红显部分即可,接着要将tmpfs重新mount一下
[root@Ginna ~]# umount tmpfs
[root@Ginna ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
28G 11G 16G 40% /
/dev/sda1 99M 22M 72M 24% /boot
[root@Ginna ~]# mount tmpfs
[root@Ginna ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
28G 11G 16G 40% /
/dev/sda1 99M 22M 72M 24% /boot
tmpfs 3.0G 0 3.0G 0% /dev/shm
OK,更改完毕,接着就可以启动Oracle数据库了。
客户端连接测试
1防火墙配置(root,适用于centos7)
查看已开放的端口(默认无)
firewall-cmd --zone=public --list-ports
添加
firewall-cmd --add-port=<port>[-<port>]/<protocol>
firewall-cmd [--zone=<zone>] --add-port=<port>[-<port>]/<protocol> [--timeout=<seconds>]
firewall-cmd [--permanent] [--zone=<zone>] --add-port=<port>[-<port>]/<protocol>
添加1158或1521端口放行
禁用
firewall-cmd --remove-port=<port>[-<port>]/<protocol>
firewall-cmd [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>
firewall-cmd [--permanent] [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>
打开、关闭、重启防火墙
systemctl stop firewalld
systemctl start firewalld
systemctl restart firewalld
开启/关闭 开机自启动防火墙
systemctl enable firewalld
systemctl disable firewalld
2本地tnsnames.ora配置
客户端(windows系统)dos命令中执行tnsping FLIKS
3使用pl/sql等工具连接测试
利用sys账号检测客户端连接访问数据库均无问题后,可以进行下一个环节的操作了。
--------------------本节末尾--------------------
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)