文章目录
1.安装前环境
-
下载:(百度网盘会失效,失效了你们就自己去找吧)
-
提取码:6666
-
linux.x64_11gR2_database_1of2.zip
-
linux.x64_11gR2_database_2of2.zip
-
[root@OracleOne ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
2.准备工作
有网络
yum -y install vim
//个人喜好vim编辑各种配置文件(有颜色)yum -y install unzip
//下载unzip,用来解压上述两个zip压缩文件
无网络: CentOS 手动配置本地 yum 源
-
cd /etc/yum.repos.d/
-
mv CentOS-Media.repo CentOS-Media.repo.bak
-
yum clean all
-
mkdir -p /media/cdrom
-
用xftp等软件,将ISO拷到
/media
目录下
-
cd /media
[root@OracleOne media]# ls
cdrom CentOS-7-x86_64-DVD-2009.iso
-
mount -t auto /media/CentOS-7-x86_64-DVD-2009.iso /media/cdrom/
-
cd /etc/yum.repos.d/
-
vi CentOS-Media.repo
-
将以下内容复制到文件中:
# CentOS-Media.repo
#
[c6-media]
name=CentOS-$releasever - Media
baseurl=file:///media/cdrom
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
yum -y install vim
//个人喜好vim编辑各种配置文件(有颜色)yum -y install unzip
//下载unzip,用来解压上述两个zip压缩文件
准备安装包
mkdir /home/oracle
cd /home/oracle
unzip linux.x64_11gR2_database_1of2.zip
//解压unzip linux.x64_11gR2_database_2of2.zip
- (公司就解压自己的zip就可以)
unzip database.zip
[root@OracleOne oracle]# ls
database database.zip
- 在
vim /etc/hosts
文件中增加主机名到回环IP的映射如下: vim /etc/hostname
文件中修改主机名
[root@OracleOne oracle]# cat /etc/hosts
127.0.0.1 localhost
::1 localhost
192.168.9.29 oracleone
[root@oracleone ~]# cat /etc/hostname
oracleone
[root@OracleOne oracle]# hostname
oracleone
vim /etc/selinux/config
- #设置 SELINUX=disabled #Disable(关闭模式)
# 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
setenforce 0
#关闭selinuxservice iptables stop
#临时关闭防火墙’
3.安装必须的包
安装必须的包 => 还没开始安装Oracle
yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33*i686 compat-libstdc++-33*.devel compat-libstdc++-33 compat-libstdc++-33*.devel gcc gcc-c++ glibc glibc*.i686 glibc-devel glibc-devel*.i686 libaio libaio*.i686 libaio-devel libaio-devel*.devel libgcc libgcc*.i686 libstdc++ libstdc++*.i686 libstdc++-devel libstdc++-devel*.devel libXi libXi*.i686 libXtst libXtst*.i686 make sysstat unixODBC unixODBC*.i686 unixODBC-devel unixODBC-devel*.i686
安装完成后,检查依赖是否安装成功
=> 没有显示任何信息就是都完全安装依赖
rpm -q binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel | grep "not installed"
如果验证无法通过,则需要安装pdksh包(该程序包未被纳入CentOS的安装盘中):
wget -no-check-certificate http://vault.centos.org/5.11/os/x86_64/CentOS/pdksh-5.2.14-37.el5_8.1.x86_64.rpm
- 没有wget命令用
yum -y install wget
安装
- 没有wget命令用
rpm -ivh pdksh-5.2.14-37.el5_8.1.x86_64.rpm
- (注意:该程序包与ksh冲突,如果已经安装ksh,建议使用命令
rpm -e ksh-*
卸载)
- (注意:该程序包与ksh冲突,如果已经安装ksh,建议使用命令
4.准备安装用户及用户组
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba -d /opt/oracle oracle
5.创建安装目录和设置文件权限
-
mkdir /home/oracle/11.2.0
#数据库系统安装目录 -
mkdir /opt/oracle/inventory
#清单目录(创建再oracle用户目录里) -
chown -R oracle:oinstall /home/oracle
-
chown -R oracle:oinstall /opt/oracle/inventory
-
chmod -R 775 /home/oracle
6.修改内核参数配置文件
vim /etc/sysctl.conf
#在文件最后增加
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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
/sbin/sysctl -p
#让参数生效
7.配置oracle环境变量
-
cd /opt/oracle
#创建用户oracle时自动创建的目录 -
vim .bash_profile
#新建并编辑文件
修改并加入以下內容
umask 022
export ORACLE_HOSTNAME=oracleone#通过hostname获取机器名
export ORACLE_BASE=/home/oracle #安装目录
export ORACLE_HOME=$ORACLE_BASE/11.2.0 #安装目录
export ORACLE_SID=orclone #oracle的sid
export ORACLE_UNQNAME=$ORACLE_SID
#export LC_ALL="en_US"
#export LANG="en_US"
#export NLS_LANG="ZHS16GBK"
export NLS_LANG=American_America.AL32UTF8
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export LD_LIBRARY_PATH=$ORACLE_HOME/lib
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORACLE_HOME/jdk/bin:$HOME/bin
source /opt/oracle/.bash_profile
环境准备完毕,准备安装
8.修改用户的限制文件
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
- 修改
vim /etc/pam.d/login
文件,增加如下:
session required /lib64/security/pam_limits.so
session required pam_limits.so
- 修改
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
source /etc/profile
9.编辑静默安装响应文件
-
su - oracle
-
cp -R /home/oracle/database/response /home/oracle
-
cd /home/oracle/response
-
mv db_install.rsp db_install_swonly.rsp
-
vim db_install_swonly.rsp
#开始修改这个安装响应文件
需要设置的选项如下:
-
oracle.install.option=INSTALL_DB_SWONLY
#只安装软件,不安装实例启动数据库 -
ORACLE_HOSTNAME=oraclone
#通过hostname命令获得 -
UNIX_GROUP_NAME=oinstall
#只安装 -
INVENTORY_LOCATION=/opt/oracle/inventory
#用户目录 -
SELECTED_LANGUAGES=en,zh_CN
-
ORACLE_HOME=/home/oracle/11.2.0
-
ORACLE_BASE=/home/oracle
-
oracle.install.db.InstallEdition=EE
-
oracle.install.db.DBA_GROUP=dba
-
oracle.install.db.OPER_GROUP=dba
-
DECLINE_SECURITY_UPDATES=true
//一定要设置为true:/
+搜索的内容
+回车
10.安装oracle
-
cd /home/oracle/database
-
./runInstaller -silent -responseFile /home/oracle/response/db_install_swonly.rsp -ignorePrereq
-
打开另一个终端,执行提示的脚本
-
/opt/oracle/inventory/orainstRoot.sh
-
/home/oracle/11.2.0/root.sh
11.静默配置监听
exit
chmod -R 775 /home/oracle/
su - oracle
/home/oracle/11.2.0/bin/netca /silent /responsefile /home/oracle/response/netca.rsp
netstat -tnlp
命令查看lsnrctl stop
lsnrctl start
lsnrctl status
[oracle@oracletwo ~]$ netstat -tnlp
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::1521 :::* LISTEN 1711/tnslsnr
[oracle@oracletwo ~]$
12.静默建立新库
修改
vim /home/oracle/response/dbca.rsp
-
修改如下:
-
GDBNAME = "orcl"
//数据库的名字 -
SID = "orcl"
//对应的实例名字 -
SYSPASSWORD = "SYS"
//SYS管理员密码 -
SYSTEMPASSWORD = "SYSTEMP"
//SYSTEM管理员密码 -
DATAFILEDESTINATION = /home/oracle/oradata
//数据文件存放目录 -
RECOVERYAREADESTINATION=/home/oracle/flash_recovery_area
//恢复数据存放目录 -
CHARACTERSET = "ZHS16GBK"
//字符集,重要!!! -
TOTALMEMORY = "1048"
在oracle用户下执行
dbca -silent -responseFile /home/oracle/response/dbca.rsp
[oracle@oracleone ~]$ vim /home/oracle/response/dbca.rsp
[oracle@oracleone ~]$ dbca -silent -responseFile /home/oracle/response/dbca.rsp
复制数据库文件
1% 已完成
3% 已完成
11% 已完成
18% 已完成
37% 已完成
正在创建并启动 Oracle 实例
40% 已完成
45% 已完成
50% 已完成
55% 已完成
56% 已完成
60% 已完成
62% 已完成
正在进行数据库创建
66% 已完成
70% 已完成
73% 已完成
85% 已完成
96% 已完成
100% 已完成
有关详细信息, 请参阅日志文件 "/home/oracle/cfgtoollogs/dbca/orclone/orclone.log"。
- 建库后实例检查:
ps -ef | grep ora_ | grep -v grep | wc -l
ps -ef | grep ora
//取部分
[root@oracleone ~]# ps -ef | grep ora_ | grep -v grep | wc -l
25
[root@oracleone ~]# ps -ef | grep ora
oracle 1924 1 0 03:02 ? 00:00:01 /home/oracle/11.2.0/bin/tnslsnr LISTENER -inherit
oracle 2259 1 0 03:20 ? 00:00:02 ora_pmon_orcl
oracle 2261 1 0 03:20 ? 00:00:06 ora_psp0_orcl
- 查看监听状态
lsnrctl status
lsnrctl
Oracle用户命令还有stop/start
参数
[root@oracleone ~]# su - oracle
上一次登录:一 11月 29 17:29:52 CST 2021pts/0 上
[oracle@oracleone ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 30-NOV-2021 09:10:16
Copyright (c) 1991, 2013, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production
Start Date 29-NOV-2021 17:56:50
Uptime 0 days 15 hr. 13 min. 26 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /home/oracle/11.2.0/network/admin/listener.ora
Listener Log File /home/oracle/diag/tnslsnr/oracleone/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracleone)(PORT=1521)))
Services Summary...
Service "orcl" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
- 开放1521端口
- su - root
查看已开端口: firewall-cmd --permanent --list-ports
添加指定需要开放的端口: firewall-cmd --add-port=1521/tcp --permanent
重载入添加的端口: firewall-cmd --reload
查询指定端口是否开启成功: firewall-cmd --query-port=1521/tcp
移除指定端口: firewall-cmd --permanent --remove-port=1521/tcp
firewall-cmd --add-port=1521/tcp --permanent
firewall-cmd --reload
firewall-cmd --permanent --list-ports
[root@oracleone ~]# firewall-cmd --add-port=1521/tcp --permanent
success
[root@oracleone ~]# firewall-cmd --reload
success
13.修改数据库为归档模式(归档模式才能热备份)
-
su - oracle
-
sqlplus / as sysdba
-
SQL>
conn / as sysdba
-
SQL>
shutdown immediate;
-
SQL>
startup mount;
-
SQL>
alter database archivelog;
#archivelog:归档模式 -
SQL>
alter database flashback on;
#开启闪回 -
SQL>
alter database open;
#完成启动Oracle -
SQL>
execute utl_recomp.recomp_serial();
-
SQL>
alter system archive log current;
-
SQL>
exit;
[oracle@oracleone ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Tue Nov 30 09:14:29 2021
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> conn / as sysdba
Connected.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 822579200 bytes
Fixed Size 2257720 bytes
Variable Size 276827336 bytes
Database Buffers 536870912 bytes
Redo Buffers 6623232 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database flashback on;
Database altered.
SQL> alter database open;
Database altered.
SQL> execute utl_recomp.recomp_serial();
PL/SQL procedure successfully completed.
SQL> alter system archive log current;
System altered.
SQL> exit;
14.修改oracle启动配置文件
-
su - oracle
-
vim /etc/oratab
orcl:/home/oracledir/11.2.0:Y
orclone:/home/oracle/11.2.0:Y
分别打开两个文件找到:
ORACLE_HOME_LISTNER=$1
修改为ORACLE_HOME_LISTNER=$ORACLE_HOME
vim $ORACLE_HOME/bin/dbstart
vim $ORACLE_HOME/bin/dbshut
只能在orale用户下,启动
dbstart
和关闭dbshut
Oracle
dbshut
dbstart
lsnrctl status
15.建立Oracle服务及其开机自启动
su - root
vim /etc/init.d/oracle
- 添加如下脚本:
#!/bin/sh
#chkconfig: 2345 20 80
#以下请根据安装oracle时的具体情况进行修改
ORA_HOME=/home/oracle/11.2.0
ORA_OWNER=oracle
LOGFILE=/home/oracle/log/oracle.log
echo "#################################" >> ${LOGFILE}
date +"### %T %a %D: Run Oracle" >> ${LOGFILE}
if [ ! -f ${ORA_HOME}/bin/dbstart ] || [ ! -f ${ORA_HOME}/bin/dbshut ]; then
echo "Error: Missing the script file ${ORA_HOME}/bin/dbstart or ${ORA_HOME}/bin/dbshut!" >> ${LOGFILE}
echo "#################################" >> ${LOGFILE}
exit
fi
start(){
echo "###开启 Database..."
su - ${ORA_OWNER} -c "${ORA_HOME}/bin/dbstart ${ORA_HOME}"
echo "###Done."
echo "###Run database control..."
su - ${ORA_OWNER} -c "${ORA_HOME}/bin/emctl start dbconsole"
echo "###Done."
}
stop(){
echo "###Stop database control..."
su - ${ORA_OWNER} -c "${ORA_HOME}/bin/emctl stop dbconsole"
echo "###Done."
echo "###停止 Database..."
su - ${ORA_OWNER} -c "${ORA_HOME}/bin/dbshut ${ORA_HOME}"
echo "###Done."
}
case "$1" in
'start')
start
;;
'stop')
stop
;;
'restart')
stop
start
;;
*)
echo "请使用参数stop/start/restart"
stop
start
;;
esac
date +"### %T %a %D: Finished." >> ${LOGFILE}
echo "#################################" >> ${LOGFILE}
echo ""
chmod 777 /etc/init.d/oracle
chkconfig --add oracle
chkconfig oracle on
至此可使用如下命令对oracle的启动或关闭进行管理
service oracle stop
#关闭service oracle start
#启动service oracle restart
#重启netstat -tnlp
[root@oracleone ~]# chmod 775 /etc/init.d/oracle
[root@oracleone ~]# chkconfig --add oracle
[root@oracleone ~]# service oracle stop
/etc/init.d/oracle: line 7: /home/oracle/log/oracle.log: No such file or directory
/etc/init.d/oracle: line 8: /home/oracle/log/oracle.log: No such file or directory
###Stop database control...
OC4J Configuration issue. /home/oracle/11.2.0/oc4j/j2ee/OC4J_DBConsole_oracleone_orclone not found.
###Done.
###停止 Database...
Processing Database instance "orclone": log file /home/oracle/11.2.0/shutdown.log
###Done.
/etc/init.d/oracle: line 46: /home/oracle/log/oracle.log: No such file or directory
/etc/init.d/oracle: line 47: /home/oracle/log/oracle.log: No such file or directory
[root@oracleone ~]# service oracle start
/etc/init.d/oracle: line 7: /home/oracle/log/oracle.log: No such file or directory
/etc/init.d/oracle: line 8: /home/oracle/log/oracle.log: No such file or directory
###开启 Database...
Processing Database instance "orclone": log file /home/oracle/11.2.0/startup.log
###Done.
###Run database control...
OC4J Configuration issue. /home/oracle/11.2.0/oc4j/j2ee/OC4J_DBConsole_oracleone_orclone not found.
###Done.
/etc/init.d/oracle: line 46: /home/oracle/log/oracle.log: No such file or directory
/etc/init.d/oracle: line 47: /home/oracle/log/oracle.log: No such file or directory
[root@oracleone ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp6 0 0 :::1521 :::* LISTEN 6002/tnslsnr
tcp6 0 0 :::17818 :::* LISTEN 6126/ora_d000_orclo
16.用新建的用户连接数据库,并建立一个表
su - oracle
export NLS_LANG=American_America.AL32UTF8
创建有一个数据库用户
sqlplus / as sysdba
- SQL >
conn / as sysdba;
修改sys密码:
-
SQL >
alter user system identified by system;
-
SQL >
alter user sys identified by sys;
-
SQL >
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
- 密码不过期
创建用户test:
- SQL >
create user test identified by test;
赋予权限:
-
SQL >
grant connect,resource,dba to test;
-
SQL >
exit;
登陆
-
sqlplus test/test
-
SQL>
create table TEST(ID int, NAME varchar(20));
-
SQL>
insert into TEST values(1, '张三');
-
SQL>
select * from TEST;
SQL> create table TEST(ID int, NAME varchar(20));
Table created.
SQL> insert into TEST values(1, '张三');
1 row created.
SQL> select * from TEST;
ID NAME
---------- ------------------------------------------------------------
1 张三
17.Oracle升级补丁
补丁准备
- Linux 平台下 2019 年 4 月发布的补丁包
p6880880_112000_Linux-x86-64.zip
p29255947_112040_Linux-x86-64.zip
如下地址下载:
-
su - root
-
cd /home/oracle/oraPatch/
-
unzip p6880880_112000_Linux-x86-64.zip
-
unzip p29255947_112040_Linux-x86-64.zip
-
chmod -R 775 /home/oracle/oraPatch/
停止oracle
service oracle stop
升级OPatch
su - oracle
opatch lsinventory
cd /home/oracle/11.2.0/
原补丁备份
mv OPatch OPatch_bk
cp -R /home/oracle/oraPatch/OPatch /home/oracle/11.2.0/
opatch version
[oracle@oracleone ~]$ cd /home/oracle/11.2.0/
[oracle@oracleone 11.2.0]$ cp -R /home/oracle/oraPatch/OPatch /home/oracle/11.2.0/
[oracle@oracleone 11.2.0]$ opatch version
OPatch Version: 11.2.0.3.21
OPatch succeeded.
升级PSU补丁
su - root
yum -y install psmisc
su - oracle
cd /home/oracle/oraPatch/29255947/29141056
opatch apply
首先输入 y, 不需要输入邮箱直接回车,接着输入 Y 然后输入 y
[oracle@oracleone ~]$ cd /home/oracle/oraPatch/29255947/29141056
[oracle@oracleone 29141056]$ opatch apply
Oracle 临时补丁程序安装程序版本 11.2.0.3.21
版权所有 (c) 2021, Oracle Corporation。保留所有权利。
Oracle 主目录 :/home/oracle/11.2.0
主产品清单:/opt/oracle/inventory
来自 :/home/oracle/11.2.0/oraInst.loc
OPatch 版本 :11.2.0.3.21
OUI 版本 :11.2.0.4.0
日志文件位置:/home/oracle/11.2.0/cfgtoollogs/opatch/opatch2021-11-30_11-37-51上午_1.log
Verifying environment and performing prerequisite checks...
OPatch continues with these patches: 17478514 18031668 18522509 19121551 19769489 20299013 20760982 21352635 21948347 22502456 23054359 24006111 24732075 25869727 26609445 26392168 26925576 27338049 27734982 28204707 28729262 29141056
是否继续? [y|n]
y
User Responded with: Y
All checks passed.
提供电子邮件地址以用于接收有关安全问题的通知, 安装 Oracle Configuration Manager 并启动它。如果您使用 My Oracle
Support 电子邮件地址/用户名, 操作将更简单。
有关详细信息, 请访问 http://www.oracle.com/support/policies.html。
电子邮件地址/用户名:
尚未提供电子邮件地址以接收有关安全问题的通知。
是否不希望收到有关安全问题 (是 [Y], 否 [N]) [N] 的通知: y
请关闭本地系统上在此 ORACLE_HOME 之外运行的 Oracle 实例。
(Oracle 主目录 = '/home/oracle/11.2.0')
本地系统是否已准备打补丁? [y|n]
y
启动数据库,执行升级脚本(如存在多个实例,每个实例都需要执行)
su - root
service oracle start
su - oracle
cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba
- SQL >
@catbundle.sql psu apply ;
- SQL >
@utlrp.sql;
- SQL >
@dbmsjdev.sql;
- SQL >
exec dbms_java_dev.disable;
- SQL >
grant execute on DBMS_JAVA to resource;
告辞