CentOS 7 安装 Oracle 11g
1.环境准备
官网下载安装包:
下载地址www.oracle.com/database/te…
或在此处搜索下载edelivery.oracle.com/osdc/faces/…
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
修改主机名
[root@localhost ~]# hostname
[root@localhost ~]# hostnamectl set-hostname server01
[root@localhost ~]# systemctl restart network
[root@localhost ~]# source /etc/profile
开启1521端口:
firewall-cmd --zone=public --add-port=1521/tcp --permanent
–zone :作用域 –add-port=1521/tcp :添加端口,格式为:端口/通讯协议 –permanent :永久生效,没有此参数重启后失效
重启防火墙生效:
firewall-cmd --reload
关闭SELinux
getenforce
setenforce 0
修改配置文件永久关闭SELinux
vi /etc/selinux/config
此处改为disabled
安装前置工具:
yum -y install yum-utils net-tools wget vim unzip lrzsz
安装依赖包:
yum -y install gcc gcc-c++ make binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static glibc glibc-common glibc-devel ksh libaio libaio-devel libgcc libstdc++ numactl-devel sysstat unixODBC unixODBC-devel kernel-headers pcre-devel readline rlwrap
2.用户及目录准备
创建用户组(数据库安装):
groupadd oinstall
创建用户组(数据库管理):
groupadd dba
创建用户oracle并添加到用户组:
useradd -g oinstall -G dba oracle
设置oracle用户密码:
echo "123456" | passwd --stdin oracle
创建安装目录:
mkdir -p /data/u01/app/oracle/product/11.2.0/dbhome_1
mkdir /data/u01/app/oracle/{oradata,inventory,fast_recovery_area}
修改目录权限:
chown -R oracle:oinstall /data/u01/app/oracle
chmod -R 775 /data/u01/app/oracle
可选安装tree:
yum -y install tree
可以查看文件夹结构
3.安装
1)准备安装包
创建oracle安装包目录
mkdir -p /data/u01/software
切换到目录
cd /data/u01/software
上传oralce安装包
解压安装包
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
解压完成
静默安装Oracle11G数据库
2)修改内核配置文件
vim /etc/sysctl.conf
在最后添加:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 1073741824
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 = 1048576
按ESC,输入:wq退出
运行命令使配置文件生效:
sysctl -p
3)修改用户限制
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
按ESC,输入:wq退出
4)修改/etc/pam.d/login 文件
vim /etc/pam.d/login
添加如下内容:
session required /lib64/security/pam_limits.so
session required pam_limits.so
按ESC,输入:wq退出
5)修改环境变量
vim /etc/profile
添加如下内容:
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384
ulimit -n 65536
fi
fi
按ESC,输入:wq退出
6)设置oracle用户环境变量
切换oracle用户
su - oracle
编辑配置文件
vim .bash_profile
添加如下内容:
export ORACLE_BASE=/data/u01/app/oracle
export ORACLE_HOME=/data/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_SID=orcl
export ORACLE_UNQNAME=$ORACLE_SID
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=american_america.AL32UTF8
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
按ESC,输入:wq退出
执行命令使配置文件生效:
source .bash_profile
7)修改静默安装响应文件
复制一份响应文件
cp -R /data/u01/software/database/response/ .
切换目录
cd response/
修改响应文件
vim db_install.rsp
修改以下内容(对应行数)
ORACLE_HOSTNAME:主机名
29 oracle.install.option=INSTALL_DB_SWONLY
37 ORACLE_HOSTNAME=server01
42 UNIX_GROUP_NAME=oinstall
47 INVENTORY_LOCATION=/data/u01/app/oracle/inventory
78 SELECTED_LANGUAGES=en,zh_CN
83 ORACLE_HOME=/data/u01/app/oracle/product/11.2.0/dbhome_1
88 ORACLE_BASE=/data/u01/app/oracle
99 oracle.install.db.InstallEdition=EE
142 oracle.install.db.DBA_GROUP=dba
147 oracle.install.db.OPER_GROUP=dba
385 DECLINE_SECURITY_UPDATES=true
按ESC,输入:wq退出
8)执行安装
切换到安装包目录
cd /data/u01/software/database/
执行安装命令:
./runInstaller -silent -ignoreSysPrereqs -ignorePrereq -responseFile /home/oracle/response/db_install.rsp
安装过程中可以开启终端实时查看安装日志
tail -f /data/u01/app/oracle/inventory/logs/installActions2024-05-31_06-22-50PM.log
时间会有些长,耐心等待
出现此信息
新开一个终端
执行这两个脚本
sh /data/u01/app/oracle/inventory/orainstRoot.sh
sh /data/u01/app/oracle/product/11.2.0/dbhome_1/root.sh
执行完成后切换回oracle安装页面回车显示
*)执行sqlplus缺少rlwrap命令
yum安装失败
安装依赖:
yum install readline readline-devel libtermcap-devel
下载rlwrap安装包
下载地址:Release v0.45.2 · hanslub42/rlwrap · GitHub
上传到服务器
解压:
tar zxvf rlwrap-0.45.2.tar.gz
切换到解压目录
cd rlwrap-0.45.2
执行安装
./configure && make && make install
执行:
rlwrap
查看是否安装成功
9)安装成功
执行命令:
sqlplus / as sysdba
出现
则,安装成功
* )磁盘空间不足解决方案:
执行命令:
创建新分区
fdisk /dev/sda
执行重启:
partprobe
查询:
ls /dev/sda3
创建新物理卷
pvcreate /dev/sda3
将新物理卷添加到卷组中
vgextend centos /dev/sda3
查看逻辑卷名字
lvs
扩展逻辑卷
lvextend /dev/centos/root -L +10G
查看是否支持
pvdisplay /dev/sda3
查看系统的文件系统类型
lsblk -f
扩容文件系统
xfs_growfs /dev/centos/root
扩容成功
4.Oracle 11g 创建数据库实例
1)修改相应配置文件
vim /home/oracle/response/dbca.rsp
修改以下内容:
78 GDBNAME = "xx"
149 SID= "xx"
SYSPASSWORD = "密码"
SYSTEMPASSWORD = "密码"
190 SYSPASSWORD = "123456"
200 SYSTEMPASSWORD = "123456"
SYSMANPASSWORD = "密码"
DBSNMPPASSWORD = "密码"
231 SYSMANPASSWORD = "123456"
241 DBSNMPPASSWORD = "123456"
357 DATAFILEDESTINATION =/data/u01/app/oracle/oradata
367 RECOVERYAREADESTINATION=/data/u01/app/oracle/fast_recovery_area
数据文件(Data Files)是Oracle数据库用来存储表、索引、表空间等数据库对象的物理文件。DATAFILEDESTINATION是一个数据库初始化参数,用于指定数据文件的默认存储路径。
恢复文件(Recovery Files)是用于数据库恢复和备份操作的文件,通常是归档日志和备份集。RECOVERYAREADESTINATION是一个数据库初始化参数,用于指定恢复文件的默认存储路径,也被称为Fast Recovery Area。
415 CHARACTERSET = "AL32UTF8"
CHARACTERSET = "AL32UTF8"用于设置Oracle数据库的字符集。
540 TOTALMEMORY = "4096"
TOTALMEMORY = "4096"TOTALMEMORY参数用于指定Oracle数据库实例可以使用的内存总量,以MB为单位。
按ESC,输入:wq保存退出
2)检查配置
egrep -v "(^#|^$)" /home/oracle/response/dbca.rsp
配置文件中各个部分的说明:
[GENERAL]通用配置信息部分。
- RESPONSEFILE_VERSION: 响应文件的版本号。
- OPERATION_TYPE: 操作类型,指定为createDatabase表示创建数据库实例。
[ATEDATABASE]创建数据库实例的配置信息部分。
- GDBNAME: 创建的全局数据库名。
- SID: 创建的系统标识。
- TEMPLATENAME: 使用的数据库配置模板。
- SYSPASSWORD: SYS用户的密码。
- SYSTEMPASSWORD: SYSTEM用户的密码。
- SYSMANPASSWORD: SYSMAN用户的密码。
- DBSNMPPASSWORD: DBSNMP用户的密码。
- DATAFILEDESTINATION: 数据文件存储的目路径。
- RECOVERYAREADESTINATION: 恢复区域存储的目录路径。
- CHARACTERSET: 数据库的字符集。
- TOTALMEMORY: 数据库实例的总内存大小。
[createTemplateFromDB]从现有数据库创建模板的配置部分。
- SOURCEDB: 要复制的源数据库。
- SYSDBAUSERNAME: SYSDBA角色的用户名。
- TEMPLATENAME: 创建的模板名称。
[createCloneTemplate]创建克隆模板的配置信息部分。
- SOURCEDB: 要克隆的源数据库。
- TEMPLATENAME: 创建的克隆模板名称。
[DELETEDATABASE]删除数据库的配置信息部分。
- SOURCEDB 要删除的数据库。
[generateScripts]生成脚本的配置信息部分。
- TEMPLATENAME: 要使用的模板名称。
- GDBNAME: 创建的全局数据库名。
[CONFIGUREDATABASE]配置数据库的配置信息部分。[ADDINSTANCE]添加数据库实例的配置信息部分。
- DB_UNIQUE_NAME: 数据库实例的唯一名称。
- NODELIST: 节点列表。
- SYSDBAUSERNAME: SYSDBA角色的用户名。
[DELETEINSTANCE]删除数据库实例的配置信息部分。
- DB_UNIQUE_NAME: 数据实例的唯一名称。
- INSTANCENAME: 实例名称。
- SYSDBAUSERNAME: SYSDBA角色的用户名。
3)安装创建
执行以下命令创建:
dbca -silent -responseFile /home/oracle/response/dbca.rsp
查看默认实例:
env|grep ORACLE_UNQNAME
4)启动监听
lsnrctl start
重启Oracle数据库操作步骤
1)查看监听器状态:lsnrctl status
2)停止监听器:lsnrctl stop
3)连接数据库:sqlplus sys/密码 as sysdba
4)停止数据库:shutdown immediate
5)启动数据库:startup
6)退出数据库:exit
7)启动监听:lsnrctl start
5)测试链接成功
5.配置开机自动启动
1)oracle用户修改Oracle实例配置文件
vim /etc/oratab
修改如下内容:
xx:/data/u01/app/oracle/product/11.2.0/dbhome_1:Y
按ESC,输入:wq保存并退出
2)root用户添加开机自启策略
增加权限:
chmod 777 /etc/rc.local
编辑文件:
vim /etc/rc.local
添加如下内容:
# oracle开机自启
su - oracle -c "dbstart"
su - oracle -c "lsnrctl start"
su - oracle -c "lsnrctl start listenerl"
按ESC,输入:wq保存并退出
6.配置参数
1)processes和sessions
查询连接数参数(processes)的设置情况
select value from v$parameter where name = 'processes'
以SYSDBA的权限登录sys进行如下操作:
使用SQLplus命令窗口执行:
查看processes:
show parameter processes;
修改processes参数
alter system set processes=450 scope = spfile;
set processes=450:将数据库实例的processes参数设置为450。processes参数用于指定系统中可以同时运行的进程(会话)的最大数量。修改该参数可以增加或减少系统可以运行的并发会话数。scope = spfile:表示将修改持久化到数据库实例的服务器参数文件(spfile中。scope参数指定了修改的生命周期和作用范围。在这种情况下,将修改应用到spfile中,这意味着当数据库实例重启时,参数值将会被保留下来并在实例启动时自动加载。
执行成功
重启数据库
1)查看监听器状态:lsnrctl status
2)停止监听器:lsnrctl stop
3)连接数据库:sqlplus sys/密码 as sysdba
4)停止数据库:shutdown immediate
5)启动数据库:startup
6)退出数据库:exit
7)启动监听:lsnrctl start
查看processes参数和session参数
show parameter processes;
show parameter session;
【注:sessions是个派生值,由processes的值决定,公式sessions=1.1*process + 5】
2)表空间
查看现有表空间
SELECT t.tablespace_name, d.file_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name, d.file_name;
查询TEMP表空间
select tablespace_name, file_name, bytes/1024/1024 temp_mb from dba_temp_files
创建INDX表空间
CREATE TABLESPACE INDX DATAFILE '/data/u01/app/oracle/oradata/nmggk/indx01.dbf' SIZE 8192m autoextend on next 50M maxsize unlimited;
查看表空间:
SELECT t.tablespace_name, d.file_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size
FROM dba_tablespaces t, dba_data_files d
WHERE t.tablespace_name = d.tablespace_name
GROUP BY t.tablespace_name, d.file_name;
表空间扩容
USERS表
ALTER DATABASE DATAFILE '/data/u01/app/oracle/oradata/nmggk/users01.dbf'RESIZE 8192M;
SYSTEM表
ALTER DATABASE DATAFILE '/data/u01/app/oracle/oradata/nmggk/system01.dbf'RESIZE 4096M;
UNDOTBS1表
ALTER DATABASE DATAFILE '/data/u01/app/oracle/oradata/nmggk/undotbs01.dbf'RESIZE 2048M;
SYSAUX表
ALTER DATABASE DATAFILE '/data/u01/app/oracle/oradata/nmggk/sysaux01.dbf'RESIZE 1024M;
TEMP表
alter database tempfile '/data/u01/app/oracle/oradata/nmggk/temp01.dbf' resize 1024M;
扩容完成
*)其他表空间操作
查看数据文件使用率
SELECT D.TABLESPACE_NAME,
SPACE || 'M' "SUM_SPACE(M)",
SPACE - NVL (FREE_SPACE, 0) || 'M' "USED_SPACE(M)",
ROUND ( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || '%'
"USED_RATE(%)",
FREE_SPACE || 'M' "FREE_SPACE(M)"
FROM ( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,
SUM (BLOCKS) BLOCKS
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) D,
( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
UNION ALL
SELECT D.TABLESPACE_NAME,
SPACE || 'M' "SUM_SPACE(M)",
USED_SPACE || 'M' "USED_SPACE(M)",
ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) || '%' "USED_RATE(%)",
NVL (FREE_SPACE, 0) || 'M' "FREE_SPACE(M)"
FROM ( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,
SUM (BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME) D,
( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE,
ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE
FROM V$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
ORDER BY 1;
查看文件扩展性
SELECT
file_id,
file_name,
tablespace_name,autoextensible as autoextend,status,
round(bytes / (1024 * 1024 ), 0) total_space
FROM dba_data_files
ORDER BY tablespace_name;
给表空间增加一个文件并设置自动增长
alter tablespace USERS add datafile 'G:\ORACLE\ADMINISTRATOR\ORADATA\NGGK\USERS02.DBF'
size 8192M autoextend on next 50M maxsize 32479 M;
允许表空间数据文件自动增长
alter database datafile 'G:\ORACLE\ADMINISTRATOR\ORADATA\NGGK\INDX.DBF' autoextend on next 50 M maxsize 32479 M
查询temp表空间大小
SELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,
USED_SPACE "USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)",
NVL(FREE_SPACE,0) "FREE_SPACE(M)"
FROM
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME) D,
(SELECT TABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,
ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACE
FROM V$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+);
查询temp表是否自动扩展
select d.file_name,d.tablespace_name,d.autoextensible from dba_temp_files d;
添加temp表空间,增加数据文件
ALTER TABLESPACE TEMP ADD TEMPFILE'G:\ORACLE\ADMINISTRATOR\ORADATA\NGGK\TEMP01.DBF' SIZE 2048m;