本文为原创:如要转发,请注明出处地址!
1、下载Oracle安装包:
官网:https://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip ,可以下载到本地,通过ftp服务上传到Linux系统(参考CentOS7 FTP服务器搭建),也可以使用Linux系统的wget命令,下载文件包;
2、创建运行oracle数据库的系统用户和用户组:
用Root账号登录,运行下面指令,创建所需要用户和用户组;
groupadd oinstall #创建用户组oinstall
groupadd dba #创建用户组dba
useradd -g oinstall -g dba -m oracle #创建oracle用户,并加入到oinstall和dba用户组
groups oracle #查询用户组是否授权成功
passwd oracle #设置用户oracle的登陆密码,不设置密码,在CentOS的图形登陆界面没法登陆
id oracle #查看新建的oracle用户
3、创建oracle数据库安装目录(运行下面指令,创建账号和分配权限)
mkdir -p /data/oracle #oracle数据库安装目录
mkdir -p /data/oraInventory #oracle数据库配置文件目录
mkdir -p /data/database #oracle数据库软件包解压目录
cd /data
ls #创建完毕检查一下
chown -R oracle:oinstall /data/oracle
#设置目录所有者为oinstall用户组的oracle用户
chown -R oracle:oinstall /data/oraInventory
chown -R oracle:oinstall /data/database
4、修改OS系统标识
oracle默认不支持CentOS系统安装, 修改文件 /etc/RedHat-release 内容为RedHat-7 vi /etc/redhat-release修改成redhat-7
将CentOS Linux release 7.5.1511 (Core) 修改为redhat-7,
5、安装oracle数据库所需要的软件包
以下是按照需要依赖的安装包,通过 yum install {包名} 来验证是否安装,例如yum install binutils
binutils-2.23.52.0.1-12.el7.x86_64
compat-libcap1-1.10-3.el7.x86_64
gcc-4.8.2-3.el7.x86_64
gcc-c++-4.8.2-3.el7.x86_64
glibc-2.17-36.el7.i686
glibc-2.17-36.el7.x86_64
glibc-devel-2.17-36.el7.i686
glibc-devel-2.17-36.el7.x86_64
ksh
libaio-0.3.109-9.el7.i686
libaio-0.3.109-9.el7.x86_64
libaio-devel-0.3.109-9.el7.i686
libaio-devel-0.3.109-9.el7.x86_64
libgcc-4.8.2-3.el7.i686
libgcc-4.8.2-3.el7.x86_64
libstdc++-4.8.2-3.el7.i686
libstdc++-4.8.2-3.el7.x86_64
libstdc++-devel-4.8.2-3.el7.i686
libstdc++-devel-4.8.2-3.el7.x86_64
libXi-1.7.2-1.el7.i686
libXi-1.7.2-1.el7.x86_64
libXtst-1.2.2-1.el7.i686
libXtst-1.2.2-1.el7.x86_64
make-3.82-19.el7.x86_64
sysstat-10.1.5-1.el7.x86_64
通过下列命令一键安装
yum install binutils-2.* compat-libstdc++-33* elfutils-libelf-0.* elfutils-libelf-devel-* gcc-4.* gcc-c++-4.* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2.* ksh-2* libaio-0.* libaio-devel-0.* libgcc-4.* libstdc++-4.* libstdc++-devel-4.* make-3.* sysstat.* unixODBC-2.* unixODBC-devel-2.* ksh*
yum install libaio-0.* glibc-2.* compat-libstdc++-33* libaio-devel-0.* libgcc* unixODBC-2.* unixODBC-devel-2.* ksh*
yum install tigervnc tigervnc-server
6、关闭防火墙和selinux
关闭firewall:
Centos 7关闭方法
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
Centos 6关闭方法
service iptables stop #停止firewall
chkconfig --del iptables #禁止firewall开机启动
关闭SELINUX:
vi /etc/selinux/config
#SELINUX=enforcing #注释掉
#SELINUXTYPE=targeted #注释掉
SELINUX=disabled #增加
:wq! #保存退出
setenforce 0 #使配置立即生效
7、修改内核参数
vi /etc/sysctl.conf #要添加sysctl.conf内容
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744 #设置最大打开文件数
fs.aio-max-nr = 1048576
kernel.shmall = 2097152 #共享内存的总量,8G内存设置:2097152*4k/1024/1024
kernel.shmmax = 2147483648 #最大共享内存的段大小
kernel.shmmni = 4096 #整个系统共享内存端的最大数
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500 #可使用的IPv4端口范围
net.core.rmem_default = 262144
net.core.rmem_max= 4194304
net.core.wmem_default= 262144
net.core.wmem_max= 1048576
8、对oracle用户设置限制,提高软件运行性能(红色为添加部分)
vi /etc/security/limits.conf #红色部分要添加到Limits.conf内容
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
9、配置用户的环境变量
vi /home/oracle/.bash_profile #要追加bash_profile内容部分
export ORACLE_BASE=/data/oracle #oracle数据库安装目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 #oracle数据库路径
export ORACLE_SID=orcl #oracle启动数据库实例名
export ORACLE_TERM=xterm #xterm窗口模式安装
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH #添加系统环境变量
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib #添加系统环境变量
export #防止安装过程出现乱码
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK #设置Oracle客户端字符集,必须与Oracle安装时设置的字符集保持一致
配置完成,:wq保存退出,运行source /home/oracle/.bash_profile时上述配置生效
10、获取安装包文件后解压安装包
解压方式如下:
unzip linux.x64_11gR2_database_1of2.zip -d /data/database/ #解压文件1
unzip linux.x64_11gR2_database_2of2.zip -d /data/database/ #解压文件2
chown -R oracle:oinstall /data/database/database/
#分配安装文件授权Oracle
11、oracle用户登录系统,
使用命令行跳转到data/database/database目录下,输入./runInstaller 调出安装页面;
oracle用户登录:
[oracle@centos7 ~]$ cd /data/database/database/
[oracle@centos7 database]$ ./runInstaller
这时会报错,要求至少256种颜色
。。。。。。。display at least 256 colors”
解决办法
yum install tigervnc-server
vncserver
export DISPLAY=192.168.43.173:1.0 //如果后面还报错用这2个export反复试 //export DISPLAY=192.168.43.173:0.0 //export DISPLAY=:0.0
xhost +
这时再启动./runInstaller
12 、图形化安装过程
(1)Configure Security Updates
全部选项都留空,包括“I wish to receive security updates via My Oracle Support”复选框,系统会提示没有输入email地址,点击Yes继续
(2)Installtion Option
选择“Install database software only”,只安装数据库软件,点击Next继续
第一项为安装数据库软件并创建一个数据库实例
第二项为只安装数据库软件
第三项为升级已经存在的数据库
选择第二项,可以在安装数据库软件后,手工通过dbca来创建实例。
(3)Grid Options
选择第一项点击Next继续。对于单节点的数据库选择“Single instance database installation”进行安装,如果是安装集群数据库则要选择“Real Application Clusters database installation”这个选项进行安装。
(4)Product Languages
这个界面上选择支持的语言,在左面列表里面选择“Simplified Chinese”,添加到右面列表,点击Next继续:
(5)Database Edition
这个界面选择oracle的版本,选择第一项“Enterprise Edition”企业版,点击Next继续。
Standard版(标准版)的oracle有很多功能上的限制,生产系统上务必选择Enterprise Edition(企业版)。
(6)Installation Location
选择安装位置,配置好oracle用户的.bash_profile文件后,安装程序会自动把ORACLE_BASE变量作为Oracle Base,软件安装目录Software Location取的是ORACLE_HOME变量。不用修改,直接在界面点击Next继续
(7)Create Inventory
选择Inventory的位置,保持默认,点击Next继续。这个位置是在ORACLE_BASE下创建oraInventory目录,用于注册ORACLE_HOME下安装的数据库的组件及其版本,存放oracle软件安装的目录信息。oracle数据库软件的升级、增删组件,都需要用到inventory。oracle OUI会创建一个有oraInst.ora文件指定的全局inventory。
(8)Operating System Groups
选择oralce使用的操作系统用户组,保持默认,点击Next继续
(9)Prerequiste Checks
Oracle安装程序用检查系统参数,以确定是否满足了安装oracle的前提条件,包括系统内核、虚拟内存和软件包等。安装3.3章节介绍的方法把包安装好之后,由于操作系统的包版本过高,会导致oracle提示如下包缺失,实际上已经安装好了。勾选右上角的“Ignore All”复选框,点击Next继续:
如果提示没有pdksh-5.2.14,请根据64位或者32位系统安装对应的包。
(10)Summary
Oracle安装程序提示安装摘要,点击Finish继续:
(11)Summary
Oracle开始按照前面步骤的设定,开始安装:
(12)Finish
使用root用户执行系统提示的2个脚本,完成安装:
/u01/app/oraInventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/db_1/root.sh
对于脚本中的提示,直接回车确认即可,执行完毕后,点击OK安装过程就完成了。
13、配置监听
vim /data/oracle/product/11.2.0/dbhome_1/network/admin/samples/listener.ora
# lstener.ora Network Configuration File: /data/oracle/product/11.2.0/dbhome_1/network/admin/samples/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL=TCP)(HOST=localhost)(PORT=1521))
)
)
ADR_BASE_LISTENER = /data/oracle
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
)
)
数据库路径(快速查找$ORACLE_HOME)
/data/oracle/product/11.2.0/dbhome_1
启动和关闭监听
lsnrctl start lsnrctl stop
无法启动监听
lsnrctl status 或netca或netmgr命令找不到,是因为vi /home/oracle/.bash_profile配置环境变量这一步数据库路径不对,
每次开机再source /home/oracle/.bash_profile一下,才能使用监听命令
停止监听报错((HOST = localhost有空格)
14、配置oracle本地解析文件
/data/oracle/product/11.2.0/dbhome_1/network/admin/samples/tnsnames.ora
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.73.143)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl)
)
zbh =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.73.143)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME =orcl)
)
)
15、安装完后创建数据库实例
su oracle
dbca (本人执行命令后一直报错,后来重启机器后没报错,
并修改了sqlnet.ora文件 sqlnet.authentication_services=(all) )
(0)欢迎界面,在界面上点击Next继续
(1)选择“Create a Database”,在界面上点击Next继续
(2)选择“General Purpose”,在界面上点击Next继续
如果是单节点数据库那么此处应该选择“General Purpose”,如果是集群数据库系统那么此处选择“custom database”选项
(3)设置Global Database Name 和 SID,在界面上点击Next继续
当数据库运行在没有域服务的环境中时,两个值是相同的;当运行在域环境中时,Global Database Name应该设置为SID.域名。注意:这里设置的SID值,要跟oracle用户.bash_profile中的ORACLE_SID设置保持一致。
(4)设置Enterprise Manger,在界面上点击Next继续
Oracle Enterprise Manger (OEM)是oracle一套基于Web的监控和管理程序,管理程序是emctl。配置OEM会占用一部分系统资源,这里可以不勾选。
勾选之后,如果有下面的提示,可以根据8.1章节的介绍,用netca创建一个监听并继续:
(5)设置oracle用户的密码,建议为所有用户设置相同的密码,密码最好不要含有”@”特殊字符,在界面上点击Next继续 (本人设置密码:1242972899)
如果你设置的密码太简单,会有以下提示界面,选择Yes继续
(6)选择存储设置,这里选择File System,把数据库文件保存在本地磁盘,在界面上点击Next继续
选择File System,把数据库文件保存在本地磁盘。
ASM即自动存储管理,是oracle提供的一套存储管理程序,可以平台无关的方式提供文件系统、逻辑卷管理器以及软件 RAID(磁盘阵列)等服务,有ASM管理经验的可以选择这个选项。
(7)在安装界面上点击Next继续
这个界面设置Flash Recovery Area的位置和大小,保持默认即可。下面的复选框,“Enable Archiving”是启用归档日志,并可以指定归档日志的位置,默认是没有启用归档日志的。
(8)在安装界面上点击Next继续
这里选择,是否安装Oracle的演示数据,包括几个测试用户及其表、视图等数据。生产系统不用安装这些演示数据,会占用一部分资源,而且会产生安全问题。
(9)初始化参数选项,设置完毕后在安装界面上点击Next继续
u Memory选项
选择Typical,Oracle会自动分配SGA和PGA大小,推荐物理内存的75%
或者选择Custom,SGA设置为内存的一半,PGA设置为SGA的一半,即
MEM:SGA:PSA =4:2:1
如果SGA设置超过1G,那么必须设置为16M的倍数,SGA设置小于等于1G,那么必须将它的大小设置为4M的倍数,这个倍数被称之为granules(颗粒),SGA必须是granules的整数倍。
* Sizing选项
即同时连接到数据库的客户端进程的最大数目,在专用服务器模式下,等同于oracle前台进程的数量,恒生推荐值是 1500到3000
u Character Sets选项
必须选择ZHS16GBK,否则保存和显示中文数据的时候会产生乱码
u Connetction Mode选项
选择oracle数据库工作在专用模式还是共享模式,现在生产系统都是专用模式,性能更好一些,适合于中间件与数据库保持持续连接。
(10)数据库文件的存放位置,设置完毕后,在界面上点击Next继续
这个界面设置控制文件(Controlfile)、数据文件(Datafiles)和重做日志组(Redo Log Groups)的位置和大小。对于重做日志组,文件大小默认是50M,默认值太小了,对于业务比较频繁的系统建议调整到500M至1G,重做日志组数据量默认为3个,增加到5个,尽可能减少日志切换发生checkpoint时造成数据库性能下降。如果没有在这个界面添加,也可以通过以下语句手工添加:
alter database add logfile group 4 ('/u02/oradata/redo04_1.dbf','/u02/oradata/redo04_2.dbf') size 500m;
alter database add logfile group 5 ('/u02/oradata/redo05_1.dbf','/u02/oradata/redo05_2.dbf') size 500m;
推荐将上面所有文件保存在/u02/oradata目录
(11)确认创建数据库实例,在安装界面上点击Finish结束
保持默认即可,不用保存模版,也不用保存数据库的创建语句。
(12)确认创建数据库实例,在界面上点击OK
(13)oracle执行创建实例的过程
(14)实例安装完毕
16、测试连接
在linux无论怎么连接数据库都报错,下面是报错截图
//sqlplus /nolog
sqlplus system/1242972899@zbh
连接报错
sqlplus / as sysdba
连接报错
ERROR:
ORA-01031: insufficient privileges
chown -R oracle:dba oracle
chmod 6751 $ORACLE_HOME/bin/oracle
ls -la oracle
用本地测试连通性
L/SQL不论是连接LINUX上的baiduORACLE还是windows上的oracle 都是一样的,只要你把服务zhi器上的监听dao打开,根本不用去管服务端是啥操作系统。
最简单的办法是在你的本机上装个oracle客户端,安装完成后
在开始菜单中选择oracle-》配置和移植工具-->net manager
出来一个oracle net manager 的工具 其中选择 本地-》服务器命名
再点下左边的绿色加号,添加一个新的
第一步:网络服务名:这个填写你连接时需要使用的字符串可随便取名如test
第二步:选择TCP/IP
第三步:主机名:填写服务器IP 端口: 一般为1521
第四步:填写oracle的实例名
第五步:测试连通性
然后就完成了配置
发现在windows连接Linux测试还是不同
后来在windows用pl/sql工具成功连接,
登录测试。
完成
17、自动启动Oracle
Oracle实例和监听创建完毕后,需要设置oracle随着操作系统自动启动,这里介绍两种方法,rc.local方式或者增加一个系统服务,两者是等效的。
方式一:rc.local
1、root用户修改oratab
# vi /etc/oratab
文件尾部的N改为Y:
orcl:/u01/app/oracle/product/11.2.0/db_1:Y
2、root用户修改
vi /etc/rc.local
在文件尾部添加:
su - oracle -c "dbstart"; su - oracle -c "lsnrctl start"
勘误:有以上两步就足够了。有的文档要求设置/app/oracle/product/11.2.0/db_1/bin/dbstart的ORACLE_HOME_LISTNER,这是没有必要的。su - oracle -c "dbstart";将启动实例,su - oracle -c "lsnrctl start"启动监听。
方式二:系统服务
1、root用户修改oratab
# vi /etc/oratab
把文件尾部的N改为Y:
orcl:/u01/app/oracle/product/11.2.0/db_1:Y
2、增加oracle服务
用root用户创建并编辑服务脚本:
touch /etc/init.d/dbora
chmod 750 /etc/init.d/dbora
chkconfig --level 345 dbora on
vi /etc/init.d/dbora
将内容设置为:
#!/bin/sh
# description: Oracle auto start-stop script.
# chkconfig: - 20 80
#
# Set ORA_HOME to be equivalent to the $ORACLE_HOME
# from which you wish to execute dbstart and dbshut;
#
# Set ORA_OWNER to the user id of the owner of the
# Oracle database in ORA_HOME.
ORA_HOME=/u01/app/oracle/product/11.2.0/db_1
ORA_OWNER=oracle
if [ ! -f $ORA_HOME/bin/dbstart ]
then
echo "Oracle startup: cannot start"
exit
fi
case "$1" in
'start')
# Start the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
su - $ORA_OWNER -c $ORA_HOME/bin/dbstart
;;
'stop')
# Stop the Oracle databases:
# The following command assumes that the oracle login
# will not prompt the user for any values
su - $ORA_OWNER -c $ORA_HOME/bin/dbshut
su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
;;
esac
勘误:有以上两步就足够了。有的文档会要求执行
ln -s /etc/init.d/dbora /etc/rc0.d/K10dbora和
ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora
这是没有必要的,chkconfig --level 345 dbora on会自动创建这些链接。
18、安装后的参数优化
关闭OEM,使用oracle用户登录,执行命令:
emctl status dbconsole
emctl stop dbconsole
以下命令推荐用sys用户登录PLSQL Developer,使用命令窗口执行:
Oracle 11g默认密码过期日为180天,设置为永不过期:
alter profile default limit PASSWORD_LIFE_TIME unlimited;
Oracle 11g默认密码是大小写敏感的,设置为大小写不敏感:
alter system set sec_case_sensitive_logon=false scope=spfile;
Oracle 11g新特性: deferred_segment_creation延迟段创建,如果不修改会导致空表无法通过exp导出:
alter system set deferred_segment_creation = false scope=spfile;
优化最大连接数
alter system set processes=2000 scope=spfile sid='*';
优化游标数
alter system set open_cursors=20000 scope=spfile sid='*';
alter system set session_cached_cursors=300 scope=spfile;
设置dbwr进程数
alter system set db_writer_processes=4 scope=spfile;
查询优化器设置:
06版应该设置为基于成本的:
alter system set optimizer_mode=ALL_ROWS scope=spfile sid='*';
alter system set OPTIMIZER_INDEX_COST_ADJ=10 scope=spfile;
UF20设置为基于规则的:
alter system set optimizer_mode= RULE scope=spfile sid='*';
取消登录失败超过10次锁定用户的限制
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
关闭job
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_CONFIG_JOB');
exec dbms_scheduler.disable('ORACLE_OCM.MGMT_STATS_CONFIG_JOB');
exec sysman.emd_maintenance.remove_em_dbms_jobs;
其他优化项目
alter system set "_gc_undo_affinity"=false scope=spfile sid='*';
重新设置SGA和PGA大小:(慎用)
如果启用了AMM(Automatic memory management)自动内存管理:
alter system memory_target=1800M scope=spfile;
alter system memory_max_target=1800M scope=spfile;
如果为SGA和PGA分别设置:
alter system set sga_max_size=1200M scope=spfile;
alter system set sga_target=1200M scope=spfile;
alter system set pga_aggregate_target=600M scope=spfile;
请根据实际情况修改上面的值,如果启用了AMM则将memory_target和memory_max_target设置为物理内存的75%,这部分内存oracle会动态的分配给SGA和PGA。如果分别为SGA和PGA设置,前2个命令设置SGA,最后一个命令设置PGA,修改完毕后重启实例检查数据库是否正常。
附:
Linux下启动和关闭ORACLE
sqlplus system/1242972899@zbh
SQL> startup
SQL> shutdown