linux安装oracle11g
环境:
redhat7
版本 11.2.0.4
一、部署环境准备
1.1 关闭selinux
[root@localhost software]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are
protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
1.2 关闭防火墙
[root@localhost software]# firewall-cmd --state #查看防火
墙状态
running
[root@localhost software]# systemctl stop firewalld.service #停止防
火墙
[root@localhost software]# systemctl disable firewalld.service #禁止开
机启动
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
1.3 创建oracle用户
[root@iZ28ubyqhl0Z ~]# groupadd oinstall
[root@iZ28ubyqhl0Z ~]# groupadd dba
[root@iZ28ubyqhl0Z home]# useradd -g oinstall -G dba oracle
[root@iZ28ubyqhl0Z home]# passwd oracle
1.4 修改系统内核参数
[root@iZ28ubyqhl0Z home]# vi /etc/sysctl.conf
fs.file-max=6815744
fs.aio-max-nr=104857600
kernel.sem=4096 524288 4096 128
kernel.shmmni=4096
kernel.shmall=4294967296 #核心参数,shmall=shmmax/1024
kernel.shmmax=4398046511104 #核心参数,Linux进程可以分配的单独共享内存段的最大值。一般
设置为内存总大小的一半。
#一般为:物理内存/2 * 1024 * 1024 * 1024
#最大为:物理内存*1024*1024*1024-1
net.core.rmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576
net.ipv4.ip_local_port_range=9000 65500
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_responses=1
net.ipv4.tcp_syncookies=1
[root@bogon ~]# sysctl -p #重启生效内核参数
[root@iZ28ubyqhl0Z home]# vi /etc/security/limits.conf
oracle soft nproc 65536
oracle hard nproc 65536
oracle soft nofile 65536
oracle hard nofile 65536
oracle hard memlock unlimited
oracle soft memlock unlimited
oracle soft stack 65536
oracle hard stack 65536
1.5 配置登录环境
[root@iZ28ubyqhl0Z home]# vi /etc/pam.d/login
#末尾添加
session required /lib64/security/pam_limits.so
session required pam_limits.so
[root@iZ28ubyqhl0Z home]# vi /etc/profile
#oracle配置 添加
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
[root@iZ28ubyqhl0Z home]# source /etc/profile
1.6 创建目录并授权
[root@iZ28ubyqhl0Z ~]# mkdir -p /u01/app/oracle
[root@iZ28ubyqhl0Z ~]# chown -R oracle:oinstall /u01
[root@iZ28ubyqhl0Z ~]# chmod -R 775 /u01
[root@iZ28ubyqhl0Z ~]# mkdir -p /data/orcl
[root@iZ28ubyqhl0Z ~]# chown -R oracle:oinstall /data
[root@iZ28ubyqhl0Z ~]# chmod -R 775 /data
[root@iZ28ubyqhl0Z ~]# mkdir -p /arch/backdata/rman
[root@iZ28ubyqhl0Z ~]# chown -R oracle:oinstall /arch
[root@iZ28ubyqhl0Z ~]# chmod -R 775 /arch
1.7 安装oracle需要的依赖包
[root@iZ28ubyqhl0Z /]# echo 'multilib_policy=all' >> /etc/yum.conf
[root@iZ28ubyqhl0Z /]# yum install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-devel glibc-common glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC-devel libgomp compat-libstdc++-33 glibc compat-libcap1 compat-gcc-34 glibc-devel libstdc++ dstat elfutils-libelf-devel-static
[root@iZ28ubyqhl0Z /]# yum install binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
[root@iZ28ubyqhl0Z /]# yum install compat-libstdc++-33
1.8 修改oracle用户的环境变量
[root@iZ28ubyqhl0Z home]# su - oracle
[oracle@iZ28ubyqhl0Z home]$ vi .bash_profile
# 添加在最后一行export PATH的前面
umask 022
export LANG=en_US
export TMP=/tmp
export TMPDIR=/tmp
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export NLS_LANG=american_america.zhs16gbk
export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH
[oracle@iZ28ubyqhl0Z ~] $ source .bash_profile
1.9 安装VNC图形界面
- 下载vncserver ,若出现desktop时错误,先执行:yum grouplist查看可安装组,再使用 yum clean all 后再安装(若列出的是中文,则yum -y groupinstall “GNOME” 或者 yum -y groupinstall GNOME),一次不行重复多试几次。
[oracle@iZ28ubyqhl0Z ~] $ su - root
#安装桌面
[root@iZ28ubyqhl0Z ~]# yum -y groupinstall “GNOME”
#安装VNC
[root@iZ28ubyqhl0Z ~]# yum -y install tigervnc tigervnc-server
- 配置vncserver
[root@iZ28ubyqhl0Z ~]# cd /etc/sysconfig
[root@iZ28ubyqhl0Z ~]# vi vncservers
VNCSERVERS="1:oracle"
VNCSERVERARGS[1]="-geometry 1024x768"
- 启动vncserver ,并输入连接密码,端口是5901
[root@iZ28ubyqhl0Z ~]# su - oracle
[root@iZ28ubyqhl0Z ~]# vncserver
1.10 在本地电脑安装VNC Viewer
下载地址为 https://www.realvnc.com/en/connect/download/viewer/ ,下载完成后点击file -> new
connnetion 进行连接服务器,VNC Server:IP:5091
1.11 上传oracle安装介质
安装介质如有需要可私信分享百度网盘
上传到/u01/app/oracle目录下,在vnc桌面命令行下进行解压,安装unzip(yum install unzip),解压
在/u01/app/oracle目录下(vnc桌面上的命令行进行安装)
[root@localhost oracle]# cd /u01/app/oracle
[root@localhost oracle]# unzip p13390677_112040_Linux-x86-64_1of7.zip
[root@localhost oracle]# unzip p13390677_112040_Linux-x86-64_2of7.zip
二、安装oracle
#安装jdk环境
[oracle@iZ28ubyqhl0Z ~]# yum -y install openjdk-1.8.0*
[oracle@iZ28ubyqhl0Z ~]# cd /u01/app/oracle/database
[oracle@iZ28ubyqhl0Z database]$ ./runInstaller -jreLoc /etc/alternatives/jre_1.8.0
- 勾选“Skip software updates”不更新 ------下一步
-
- 勾选“install database software only”只安装软件------下一步
- 勾选“install database software only”只安装软件------下一步
- 勾选“single instance database installtion” 创建单实例的数据库安装—下一步
- 安装语言 使用默认英文 下一步
- 勾选 “Enterprise Edition(4.7G)”安装企业版—下一步
- Oracle安装路径自动识别到了配置的变量,下一步
- 安装文件的路径文件目录,自动识别。下一步
- 选择组的所属operator选择dba或者oinstall,下一步
- 开始检查安装的系统的文件的参数信息
- 以下是需要调整的一些内核和缺少的包体信息,需要完成后,再继续 下一步
- 所有缺少的包信息,全部做完后后(pdksh包缺失可以直接忽略,点击右上角忽略),开始安装 ,时间会比较久。(当点击next时如果出现看不到的弹框直接enter继续)
如果在86%出现以上错误,则进行以下配置后再retry
解决方案 在makefile中添加链接libnnz11库的参数 修改
$ORACLE_HOME/sysman/lib/ins_emagent.mk,将 $(MK_EMAGENT_NMECTL)修改为:
$(MK_EMAGENT_NMECTL) -lnnz11 建议修改前备份原始文件 [oracle@ysserver ~]$ cd
$ORACLE_HOME/sysman/lib [oracle@ysserver lib]$ cp ins_emagent.mk ins_emagent.mk.bak
[oracle@ysserver lib]$ vi ins_emagent.mk
进入vi编辑器后 命令模式输入/NMECTL 进行查找,快速定位要修改的行 在后面追加参数-lnnz11 第一个是字母l 后面两个是数字1
保存退出后Retry (如果看不到以上弹框,则在键盘上按左箭头后直接enter)
下图中弹框有时候会比较小,可以直接拉动放大
不执行 需要root的用户下依次执行以上的脚本
[root@iZ28ubyqhl0Z ~]#sh /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /app/oraInventory to oinstall.
The execution of the script is complete.
[root@iZ28ubyqhl0Z ~]#sh /u01/app/oracle/product/11.2.0/dbhome_1/root.sh
Performing root user operation for Oracle 11g
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /app/oracle/product/11.2.0.3/db_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
Copying dbhome to /usr/local/bin ...
Copying oraenv to /usr/local/bin ...
Copying coraenv to /usr/local/bin ...
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Finished product-specific root actions.
执行完成后点击 OK
三、配置oracle数据的监听
[oracle@iZ28ubyqhl0Z ~]$ netca
- 点击下一步 下一步 一直到完成即可
- 以下提示监听配置成功,且是启动了;
四、建立oracle数据库的实例
[oracle@iZ28ubyqhl0Z ~]$ dbca
- 开始配置实例,下一步
- -输入实例的名字为:orcl 下一步
- 创建一个数据实例,下一步
– 默认是配置管理的EM的,直接下一步
- 设置数据库的用户统一的密码
- 默认设置,下一步
- 开启归档模式,设置快速恢复区大小为150GB; 可自行调整
- 勾选后,下一步
- 内存默认
- 进程数量设置为1450
- 调整字符编码
- 点击All Init…
- 游标的大小设置为3000 (需要修改进程数限制)
[root@bogon oracle]# su - root
[root@bogon oracle]# cd /etc/security/limits.d/
[root@bogon oracle]#ls
[root@bogon oracle]# vim 20-nproc.conf
#* soft nproc 4096
- 下一步
- 控制文件系统默认是2个,建议增加1个控制文件;
- 重做日志文件1组3个成员,每组的文件大小为512MB
- 设置完成 下一步
- 显示配置信息,点击OK
- 开始配置数据库的实例信息;
- 安装完成
五、其他操作
5.1 关闭vncserver
[oracle@iZ28ubyqhl0Z ~]$ ps -aef|grep vnc
oracle 2153 1 0 16:19 pts/1 00:00:18 /usr/bin/Xvnc :1 -desktop
iZ28ubyqhl0Z:1 (oracle) -auth /home/oracle/.Xauthority -geometry 1024x768 -
rfbwait 30000 -rfbauth /home/oracle/.vnc/passwd -rfbport 5901 -fp
catalogue:/etc/X11/fontpath.d -pn
oracle 2161 2160 0 16:19 pts/1 00:00:00 vncconfig -iconic
oracle 5952 5868 0 17:49 pts/3 00:00:00 grep vnc
[oracle@iZ28ubyqhl0Z ~]$ vncserver -kill :1
# 设置开机不自启
[root@iZ28ubyqhl0Z ~]# chkconfig --list vncserver
vncserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off
5.2 验证oracle是否启动
[oracle@iZ28ubyqhl0Z ~]$ lsnrctl status
- 以下为启动正常输出
5.3 修改oarcle的密码文件不过期,在linux系统的oracle操作系统用户下操作
#连接数据库
[oracle@app1 ~]$ sqlplus / as sysdba
#查看用户的proifle是哪个,一般是default:
sql>Select username,PROFILE FROM dba_users;
#查看指定概要文件(如default)的密码有效期设置:
sql> Select * FROM dba_profiles s Where s.PROFILE='DEFAULT' AND RESOURCE_NAME='PASSWORD_LIFE_TIME';
#将密码有效期由默认的180天修改成“无限制”,无需重启,修改后即生效
sql>Alter PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
5.4 设置开机启动
(1) 先以root身份登录到linux系统
(2) 键入命令“vi /etc/oratab”(使用vi编辑器编辑文件/etc/oratab)
(3) 进入vi编辑器后,找到“orcl:/u01/app/oracle/product/12.1.0/dbhome_1:N”,改为
“orcl:/u01/app/oracle/product/12.1.0/dbhome_1:Y”。修改完成后,保存退出vi。
说明:orcl为实例名;/u01/app/oracle/product/12.1.0/dbhome_1为oracle安装目录;会因安装的情况不同而有所不同。
(4) 键入命令“ vi /etc/rc.d/rc.local ”
(5) 在vi编辑器中,添加:
说明:/u01/app/oracle/product/11.2.0/dbhome_1为oracle的安装目录,要根据实际情况进行修改。
su oracle -lc "/u01/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start"
su oracle -lc /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart
(6)添加可执行权限
chmod +x /etc/rc.d/rc.local
5.5 oracle创建管理用户并授权
5.5.1 创建用户
create user test identified by test;
5.5.2 修改密码
alter user test identified by 123456;
5.5.3 删除用户
drop user test;
5.5.3.1 删除拥有对象的用户
- 若用户拥有对象,则不能直接删除,否则将返回一个错误值。指定关键字cascade,可删除用户所有的对象,然后再删除用户。
drop user test cascade;
5.5.4 授权角色
oracle为兼容以前版本,提供三种标准角色(role):connect/resource和dba.
5.5.4.1 角色讲解:
-
1、connect role(连接角色)
-
临时用户,特指不需要建表的用户,通常只赋予他们connect role.
-
connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。
-
拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他 数据的链(link)
-
-
2、resource role(资源角色)
-
更可靠和正式的数据库用户可以授予resource role。
-
resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
-
-
3、dba role(数据库管理员角色)
-
dba role拥有所有的系统权限
-
包括无限制的空间限额和给其他用户授予各种权限的能力。system由dba用户拥有
-
5.5.5 授权
grant connect, resource, dba to test;
5.5.6 撤销授权
revoke connect, resource, dba from test;
5.6 rman备份脚本
#!/bin/bash
#这个是rman全备shell脚本
#定义全局变量ORACLE_SID、ORACLE_HOME、ORACLE_BASE、NLS_LANG
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_BASE=/u01/app/oracle
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
#定义变量backuptime,用于保存备份文件和备份日志
backuptime=`date +"20%y%m%d%H%M%S"`
backup_dir=/arch/backdata/rman/$backuptime
if [[ ! -e "$backup_dir" ]]
then
mkdir -p $backup_dir
touch $backup_dir/log
chown -R oracle:oinstall $backup_dir
chmod -R 775 $backup_dir
fi
su - oracle 1>$backup_dir/log 2>&1 <<EOF
cd $ORACLE_HOME/bin
rman target /
run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
allocate channel c3 device type disk;
crosscheck backup;
sql 'alter system archive log current';
backup database format '$backup_dir/db_%d_%T_%U';
sql 'alter system archive log current';
backup archivelog all format '$backup_dir/arc_%t_%s' delete all input;
backup spfile format '$backup_dir/spfile_%d_%T_%u';
backup current controlfile format '$backup_dir/cntrl_%s_%p_%s';
crosscheck archivelog all completed before 'sysdate-7'; #删除7天前生成的所有归
档。
#delete noprompt expired backup;
delete noprompt obsolete;
#delete noprompt backup of database completed before 'sysdate - 7'; #删除30
天内备份
release channel c1;
release channel c2;
release channel c3;
}
EOF