一.安装
oracle官方安装指导文档 MOS账号登录
主流操作系统和oracle版本支持列表
oracle版本 | linux版本 | windows版本 |
11gR2 | oracle linux/redhat 4~7 | 2012R2 |
19c | oracle linux/redhat 7 | 2012R2~2019 |
资源规划
资源 2C8G 100G | oracle linux 7 x86 | 192.168.77.181 oracledb | oracle 11.2.0.1 |
oracle 11.2.0.1 此版本在oracle linux 7.6上安装会遇到glibc的问题,建议使用11.2.0.4版本
目录规划
ORACLE_BASE目录:/oracle/app/oracle
ORACLE_HOME目录:/oracle/app/oracle/product/11g/db_1
数据文件存储路径: /oracle/app/oracle/oradata
安装使用升级目录:/oracle/app/oraInventor
1.安装前准备
#配置hosts
hostnamectl set-hostname oracledb
cat >>/etc/hosts<<'EOF'
192.168.77.181 oracledb
EOF
#关闭SELINUX和防护墙
systemctl disable firewalld
systemctl stop firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
setenforce 0
#创建组
groupadd oinstall
groupadd dba
#创建oracle用户,将oracle添加oinstall组和附加组dba,这两个组后面安装数据库会用到
useradd -g oinstall -G dba oracle
echo 123456 | passwd --stdin oracle
#创建目录并授权
mkdir -p /oracle/app/oracle
chown -R oracle:oinstall /oracle
chmod -R 775 /oracle
#环境变量配置
su - oracle
cat >> ~/.bash_profile<<'EOF'
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/11g/db_1
export ORACLE_UNQNAME=ALIDB
export ORACLE_SID=ALIDB
export NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=$PATH:$ORACLE_HOME/bin
export CLASSPATH=$CLASSPATH:$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/network/jlib
EOF
source ~/.bash_profile
exit
#使用系统镜像包 配置yum源
mount /dev/cdrom /mnt
cd /etc/yum.repos.d/
gzip *.repo
cat >redhat.repo<<'EOF'
[redhat7]
name=redhat7
baseurl=file:///mnt
gpgcheck=0
enable=1
EOF
#安装依赖
yum -y install autoconf \
automake \
binutils \
binutils-devel \
bison \
cpp \
compat-db* \
compat-gcc-34 \
compat-gcc-34-c++ \
compat-libcap1 \
compat-libstdc++-33 \
compat-libstdc++-33.i686 \
elfutils-libelf-devel-0.97 \
elfutils-libelf-devel \
elfutils-libelf \
elfutils-libelf-devel \
expat \
gcc \
gcc-c++ \
glibc-* \
glibc-*.i686 \
glibc \
glibc-common \
glibc-devel \
glibc-headers \
ksh \
libgcc \
libXpm-*.i686\
libXp.so.6 \
libXt.so.6 \
libXtst.so.6 \
libXext \
libXext.i686 \
libXtst \
libXtst.i686 \
libX11 \
libX11.i686 \
libXau \
libXau.i686 \
libxcb \
libxcb.i686 \
libXi \
libXi.i686 \
libXtst \
libstdc++-docs \
libgcc_s.so.1 \
libstdc++.i686 \
libstdc++-devel \
libstdc++-devel.i686 \
libaio \
libaio.i686 \
libaio-devel \
libaio-devel.i686 \
lrzsz \
libXp \
libaio-devel \
make \
numactl \
numactl-devel \
python-devel \
sysstat \
unixODBC \
unixODBC-devel
#修改文件最大句柄、最大线程、最大内存等 memlock接近物理内存
cat >>/etc/security/limits.conf<<'EOF'
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle hard memlock 6000000
oracle soft memlock 6000000
EOF
#内核参数,后面安装过程中会检测这些参数
cat >> /etc/sysctl.conf<<'EOF'
# 设置最大内存共享段大小,物理内存的一半
kernel.shmmax = 4000000000
# 控制共享内存的分段大小,kernel.shmmax / 页大小
kernel.shmall = 31250000
# 设置单个共享内存段的最大权限,确定的物理内存的一半
kernel.shmmax = 4000000000
# 设置系统允许的共享内存段的最大数目
kernel.shmmni = 4096
# 设置系统范围内内存分配策略
vm.overcommit_memory = 0
# 设置文件描述符的数量
fs.file-max = 65536
# 设置TCP连接的最大缓冲区数量
net.ipv4.ip_local_port_range = 1024 65000
# 设置TCP接收/发送缓冲区的默认大小
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
EOF
sysctl -p
2.安装
#切换到oracle用户
su - oracle
cd /oracle
#上传安装包到此目录
rz linux.x64_11gR2_database_1of2.zip
rz linux.x64_11gR2_database_2of2.zip
#解压
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
#图形化安装
cd /oracle/database/
./runInstaller
不提供邮箱地址---取消安全更新---yes
创建并配置数据库
服务器类型
单实例安装
高级安装
中文语言添加到右边
选企业版
直接下一步
直接下一步
选OLTP 事务型
默认orcl,自定义全局数据名字和实例名为ALIDB
memory内存自动管理,默认
字符集,根据需求,这里选简体中文ZHS16GBK,然后下一步
直接下一步
直接下一步
直接下一步
统一设置管理员密码,密码不要包含某些特殊字符如@---yes
直接下一步
预安装检测失败---点击修复---手动root用户执行脚本---Check Again---这些i386包安装的是i686的可忽略--Ignore all
root用户执行脚本
确认误报后,勾选Ignore All忽略
点完成,等待安装完成
安装过程报错Error in invoking target 'install' of makefile
查看安装日志 /usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14'
tailf -n 100 /oracle/app/oraInventory/logs/installActions2024-08-05_09-17-45PM.log
INFO: //usr/lib64/libstdc++.so.5: undefined reference to `memcpy@GLIBC_2.14'
INFO: collect2: error: ld returned 1 exit status
INFO: make: *** [ctxhx] Error 1
INFO: End output from spawned process.
INFO: ----------------------------------
INFO: Exception thrown from action: make
Exception Name: MakefileException
Exception String: Error in invoking target 'install' of makefile '/oracle/app/oracle/product/11g/db_1/ctx/lib/ins_ctx.mk'. See '/oracle/app/oraInventory/logs/installActions2024-08-05_09-17-45PM.log' for details.
Exception Severity: 1
当前glibc的版本2.17过高所致(高于2.14),
解决办法:安装glibc-static,要与操作上已有的glibc-devel小版本对应,没有找到对应的包glibc-static-2.17-260.0.9.el7,一般rpm包下载地址也找不到,包括其他的rpm包下载地址,因为小版本不对应,安装会有依赖。降低操作系统版本或升级oracle版本(11.2.0.4)。这个错误我这里直接忽略了。
#已安装的glib版本查看
ldd --version
rpm -qa | grep glibc
strings /lib64/libc.so.6 |grep GLIBC_
#网上给出的解决办法
vim /oracle/app/oracle/product/11g/db_1/ctx/lib/ins_ctx.mk
改
11 $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK)
为
11 -static $(LINK_CTXHX) $(CTXHXOBJ) $(INSO_LINK) /usr/lib64/libc.a
点击Retry继续安装。
点继续
安装过程报错Error in invoking target 'agent nmhs' of makefile
解决方法:在makefile中添加链接libnnz11库的参数
vim /oracle/app/oracle/product/11g/db_1/sysman/lib/ins_emagent.mk
改
190 $(MK_EMAGENT_NMECTL)
为
190 $(MK_EMAGENT_NMECTL) -lnnz11
点重试Retry
点OK
root用户运行2个脚本
完成安装
访问em
3.基本操作
oracle启停
#oracle用户登录
su - oracle
#查看监听
lsnrctl status
#####关闭数据库######
#关闭监听
lsnrctl stop
#登录后关闭
sqlplus / as sysdba
alter system switch logfile;
alter system checkpoint;
shutdown immediate;
exit
#####开启数据库######
#开启监听
lsnrctl start
#登录后开启
sqlplus / as sysdba
startup
alter system register;
exit
基本操作
sqlplus / as sysdba
#创建表空间
create tablespace ALI datafile '/oracle/app/oracle/oradata/ALIDB/ALI01.dbf' size 128M autoextend on next 100M maxsize unlimited;
#创建用户
create user "ALI" identified by "Alibaby007" default tablespace ALI;
grant dba to ALI;
#连接数据库
conn ALI/Alibaby007
#创建数据库对象
CREATE TABLE city(city_id CHAR(3) NOT NULL,city_name VARCHAR(40) NULL,region_id INT NULL);
INSERT INTO city(city_id,city_name,region_id) VALUES('BJ','北京',1);
INSERT INTO city(city_id,city_name,region_id) VALUES('SH','上海',2);
INSERT INTO city(city_id,city_name,region_id) VALUES('NJ','南京',2);
commit;
select * from city;
exit