GUI安装oracle之后可以保存响应文件,这个响应文件可以保证正确性,然后用于其他主机的oracle安装
# oracle安装
首先重装centos7系统,这里是40G+500G的云主机,默认系统安装在了40G上面
换成阿里源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache #生成缓存
yum update #必须升级内核, 不然杀毒软件会装不上
yum -y install deltarpm-3.6-3.el7.x86_64 #这个是杀毒的前提条件,其他场景无需安装
ps.发现天翼云主机用阿里源后,yum install很慢,特别是Server with GUI,大小1G ,下载就要1.5小时
可以测试一下其他软件源头,或者用默认的软件源,用最快的那个
timedatectl set-timezone Asia/Shanghai #修改时区
timedatectl #查看时区结果
安装杀毒软件,然后安装zabbix监控
如果安装的时候使用ftp传输安装包,切记一定要用二进制模式
首先cd /tmp #把当前目录设置为tmp
登陆ftp后执行binary
之后cd 到文件的目录
然后mget * 下载全部文件到tmp目录
这样传过来的包是完整的
导入做好的firewalld规则
firewalld的配置文件在/etc/firewalld/zones/public.xml
从已经做好的电脑上把这个public.xml下载,导入新的centos电脑上/etc/firewalld/zones/ 这个位置,
systemctl restart firewalld #生效
需要无限制开放4个端口端口,云主机的安全组也需要开通这几个端口,具体按具体端口操作
另外ssh端口需要开放给允许的ip,端口具体是哪几个端口要看自己另外的文档
注意:这些限制是阿里云的,其他机器,另有一套限制规则
firewall-cmd --permanent --zone=public --add-port=0000/tcp
firewall-cmd --permanent --zone=public --add-port=0000/tcp
firewall-cmd --permanent --zone=public --add-port=0000/tcp
firewall-cmd --permanent --zone=public --add-port=0000/tcp
#下面是富规则举例,把1521端口开放给192.168.1.0网段
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.1.0/24" port port="1521" protocol="tcp" accept"
firewall-cmd --reload #防火墙配置更改生效
firewall-cmd --list-all #查看防火墙配置
systemctl disable firewalld #先关闭防火墙
systemctl stop firewalld
挂载500G硬盘
lsblk #查看硬盘信息,找到未使用的硬盘,假设硬盘名是vdb,要挂载到/data目录
mkdir /data
mkfs.ext4 /dev/vdb #格式化硬盘
mount /dev/vdb /data/ #把格式化后的vdb硬盘挂载到/data
df -h #查看结果
最后写入配置文件
vim /etc/fstab
加入一行/dev/vdb /data ext4 defaults 0 1
reboot
df -h #看看分区还在不
设置内存双倍的swap分区
swap分区要设置在有空间的地方,比如这里40G系统硬盘,再设置32G的swap分区就放不下(不会自动报错,但是会建立很小的swap!!),所以必须设置在/data目录,在/data里面建立/swap目录,里面存放swap文件
mkdir -p /data/swap/
cd /data/swap/
dd if=/dev/zero of=swapfile bs=32M count=1k #建立swapfile,大小为bs*count = 32M * 1k = 32G
mkswap -f swapfile #将生成的文件转换为Swap文件
swapon swapfile #激活swap
free -h #查看swap分区
vim /etc/fstab #swap写入配置
#最后一行增加/data/swap/swapfile swap swap sw 0 0
#wq保存
reboot
free -h #查看swap分区
正式安装步骤
安装前执行以下命令解除文件限制
chattr -i /etc/gshadow
chattr -i /etc/shadow
chattr -i /etc/group
chattr -i /etc/passwd
1. 安装oracle相关依赖包
yum -y install gcc gcc-c++ make binutilscompat-libstdc++-33 elfutils-libelf elfutils-libelf-devel glibc glibc-commonglibc-devel libaio libaio-devel libgcclibstdc++ libstdc++-devel unixODBC unixODBC-devel compat-libstdc++-33.x86_64 unzip zip
手动安装ODBC相关安装包 #依赖包需要手动上传安装
用ftp上传
rpm -ivh oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-odbc-11.2.0.1.0-1.x86_64.rpm
rpm -ivh oracle-instantclient11.2-sqlplus-11.2.0.1.0-1.x86_64.rpm
rpm -ivh pdksh-5.2.14-37.el5.x86_64.rpm
添加用户和相关的用户组
groupadd oinstall #创建用户组
groupadd dba #创建用户组dba
useradd -g oinstall -g dba -m oracle #创建oracle用户,并加入到oinstall和dba用户组
passwd oracle #设置oracle用户的登录密码
#用oracle账号ssh过去,发现无法su - root
#解决: 将oracle账号加入wheel组
usermod -a -G wheel oracle
systemctl start firewalld
systemctl enable firewalld #打开防火墙
建立将要用的目录并更改权限
mkdir /data
mkdir /data/oracle #创建oracle数据库安装目录
mkdir /data/oracle/app
mkdir /data/oracle/app/oracle
mkdir /data/oracle/app/oradata
mkdir /data/oracle/app/oracle/product
chown -R oracle:oinstall /data/oracle #设置目录所有者为oinstall用户组的oracle用户
chown -R oracle:oinstall /data/ #设置目录所有者为oinstall用户组的oracle用户
修改主机名和解析名
vim /etc/hostname
vim /etc/hosts
*.*.*.*(本机ip) hostname #这里一定是ifconfig看到的真实ip!!!
reboot #重启生效
*********************************************************************************************************
配置hosts有一个大坑!!只认ifconfig显示的真实ip!!
云主机的ip分为"纯纯的公网ip" 和 "内网ip做的映射”,
对于纯公网ip,hosts直接添加公网ip对应主机名就可以
对于内网ip做的映射,hosts需要添加内网ip+主机名
举例:
图中这种就是典型的映射,172的ip是用来映射到公网的,而192.168的ip是纯内网互通的
这种情况下hosts就必须改成
http://172.30.xxx.xxx 主机名
这里如果改错了,oracle装完后用PLsql连接,会提示错误代码12514
尽管ping公网ip是通的,但是oracle不认,只认ifconfig显示的真实ip
调整系统对oracle用户的资源限制
vi /etc/security/limits.conf #在最后添加以下语句
oracle soft nproc 2047 #进程数软限制
oracle hard nproc 16384 #进程数硬限制
oracle soft nofile 1024 #文件数软限制
oracle hard nofile 65536 #文件数硬限制
上个步骤中的进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启用该认证。
vi /etc/pam.d/login
session required /lib64/security/pam_limits.so #64位系统这里要设置lib64
session required pam_limits.so
#调整内核参数和用户限制
vi /etc/sysctl.conf
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
kernel.shmall = 2097152 #共享内存的总量
kernel.shmmax = 17179869183 #最大共享内存的段大小
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
#注意,这里默认的shmmax有问题:参考Oracle的kernel.shmmax和kernel.shmall设置_不会推车的娘们的博客-CSDN博客_kernel.shmmax
#内存为 12G 时,该值为 12*1024*1024*1024-1 = 12884901887
#内存为 16G 时,该值为 16*1024*1024*1024-1 = 17179869183
#内存为 32G 时,该值为 32*1024*1024*1024-1 = 34359738367
#内存为 64G 时,该值为 64*1024*1024*1024-1 = 68719476735
#内存为 128G 时,该值为 128*1024*1024*1024-1 = 137438953471
sysctl -p #使配置生效
修改/etc/profile文件,添加以下内容
vi /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
切换到oracle用户,修改用户环境变量
su - oracle #注意,所有的切换都加上 -
vim .bash_profile
export ORACLE_BASE=/data/oracle/app #oracle数据库安装目录
export ORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome_1 #oracle数据库路径
export ORACLE_SID=orcl #oracle启动数据库实例名
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin #添加系统环境变量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib #添加系统环境变量
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK #解决中文乱码问题
#文件修改完后执行:
source .bash_profile
安装
设置好正确的响应文件
解压两个安装包
unzip 解压
进入目录安装
cd /tmp/database
./runInstaller -silent -responseFile /tmp/db_install.rsp -ignorePrereq
之后会弹出两个shell脚本,root权限安装
之后是安装响应文件
su - oracle
$ netca /silent /responsefile /tmp/db_install.rsp /source /tmp/database
netstat -ntlp
配置监听:
cp /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/samples/tnsnames.ora /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/
cp /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/samples/listener.ora /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin
修改监听文件:
cd /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/
vim tnsnames.ora
在文件末尾新增,根据这个服务器的具体ip来改
orcl=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.22.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
修改监听文件listener.ora
cd /data/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/
vim listener.ora
LISTENER =
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.22.1)(PORT=1521))
(ADDRESS=(PROTOCOL=ipc)(KEY=PNPKEY)))
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=orcl)
(SID_NAME=orcl)
(ORACLE_HOME=/data/oracle/app/oracle/product/11.2.0/dbhome_1)
(PRESPAWN_MAX=20)
(PRESPAWN_LIST=
(PRESPAWN_DESC=(PROTOCOL=tcp)(POOL_SIZE=2)(TIMEOUT=1))
)
)
)
重启监听
lsnrctl stop
lsnrctl start
启动oracle
sqlplus / as sysdba
startup
说明启动成功,到此所有安装完成。可以新建一个用户然后通过Windows客户端去访问一下。
查看一下oracle字符是否乱码
su - oracle
sqlplus
看看是否有乱码出现
之后用system账号登陆, 密码为刚才设置的密码
oracle设置开机启动
su - oracle #切换到oracle账户
echo $ORACLE_HOME #查看一下安装路径
修改dbstart数据库自带启动脚本
vim $ORACLE_HOME/bin/dbstart
将ORACLE_HOME_LISTNER=$1 改成 ORACLE_HOME_LISTNER=$ORACLE_HOME
su - root #切换到root账户
vim /etc/oratab #此文件是在安装oracle是执行的root.sh后生成的,是运行dbshut和dbstart的开关
里面的N 改为Y
vim /etc/rc.d/rc.local
末尾添加两行
su - oracle -c "/data/oracle/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start"
su - oracle -c "/data/oracle/app/oracle/product/11.2.0/dbhome_1/bin/dbstart"
chmod 755 /etc/rc.d/rc.local
reboot
重启后
su - oracle #登录oracle账号
netstat -ntlp #查看一下1521的oracle端口是否在监听,判断自启动是否生效
如果没有看到1521,那么等几分钟,oracle自启动可能要消耗一点点时间
系统设置
用ulimit -a查看,扩大open file数量到65535,corefilesize改为unlimited
ulimit -n 65535
#注意看ulimit -a 的回显,每个参数后面都有修改参数对应的办法
yum install -y libaio
yum install -y telnet
yum install -y gdb
yum install -y openssl
yum install -y ntpdate
yum install -y net-tools #这个是为了后面的netstat命令
yum -y install bash-completion #这个是因为GUI卸载导致命令补全失效,所以装回来
vim /etc/security/limits.conf
末尾加入
* soft core unlimited
* hard core unlimited
* soft nofile 65535
* hard nofile 65535
su - root
vim /etc/profile
1.删除最后几行export CPLUS 。。。。 export NLS_LANG
ps.如果没看到export的话,就不用删了,直接加入下面这些。 否则先删后加
2.重要!!!下面代码必须加入
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/oracle/11.2/client64/
export LIBRARY_PATH=$LIBRARY_PATH:/usr/lib/oracle/11.2/client64/lib/
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib/:$LD_LIBRARY_PATH
export ORACLE_SID=orcl
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
修改/etc/ld.so.conf 之后ldconfig
vim /etc/ld.so.conf
/usr/lib/oracle/11.2/client64/lib
ldconfig
ntpdate ntp1.aliyun.com
crontab -e
15 8 * * * /usr/sbin/ntpdate ntp1.aliyun.com >> /root/ntpdate.log
15 20 * * * /usr/sbin/ntpdate ntp1.aliyun.com >> /root/ntpdate.log
保存
reboot
crontab -l #查看计划任务
netstat -ntlp #查看监听端口
telnet测试一下是否通
su - oracle
sqlplus 看看还有无乱码,另外登陆一下看看
然后注意:data文件夹的所有者更改为oracle
到这一步,还有几个没弄好的地方:
1.oracle下.bash_profile环境变量中文编码改为:export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
#改完之后,命令行的sqlplus会乱码,但是PLSQL连接就不会乱码
#必须要这样改,最终是留给PLSQL使用的!!!
最后是内核加固
内核加固部分参照内部centos7内核加固文件弄,有些地方有和上面步骤重复的,避开就好
db_install.rsp oracle静默安装响应文件参考:
#两个地方需要注意按照实际的修改,1.主机名ORACLE_HOSTNAME=centos1 2.最小内存oracle.install.db.config.starterdb.memoryLimit=1111 3.oracle数据库密码oracle.install.db.config.starterdb.password.ALL=Hello123
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_AND_CONFIG
ORACLE_HOSTNAME=centos1
UNIX_GROUP_NAME=dba
INVENTORY_LOCATION=/data/oracle/oraInventory
SELECTED_LANGUAGES=zh_CN,en
ORACLE_HOME=/data/oracle/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/data/oracle/app
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=false
oracle.install.db.racOneServiceName=
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl
oracle.install.db.config.starterdb.SID=orcl
oracle.install.db.config.starterdb.characterSet=ZHS16GBK
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=1111
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=Hello123
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/data/oracle/app/oradata
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=SKIP_UPDATES
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=