1.1 安装源
# 阿里云在线镜像
curl -o etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache fast
复制
1.2 禁用透明HugePages
透明HugePages内存与标准HugePages内存不同,因为内核khugepaged线程在运行时动态分配内存。标准HugePages内存在启动时已预先分配,并且在运行时不会更改。
缺省情况下,在Red Hat Enterprise Linux 6,Red Hat Enterprise Linux 7,SUSE 11,Oracle Linux 6和Oracle Linux 7以及具有Unbreakable Enterprise Kernel 2(UEK2)内核的早期版本的Oracle Linux中,启用透明HugePages内存。
透明的HugePages可能会在运行时导致内存分配延迟。为避免性能问题,Oracle建议您在所有Oracle数据库服务器上禁用“透明HugePages”。Oracle建议您改用标准HugePages来增强性能。
复制
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo 'echo never > sys/kernel/mm/transparent_hugepage/enabled' >> /etc/rc.d/rc.local
echo 'echo never > sys/kernel/mm/transparent_hugepage/defrag' >> /etc/rc.d/rc.local
chmod +x etc/rc.d/rc.local
cat etc/rc.d/rc.local
复制
复制
1.3 交换空间
内存 256MB:内存3倍
内存 256MB 到 512MB 之间:内存2倍
内存 512MB 到 2GB 之间:内存1.5倍
内存 2GB 到 16GB:内存1倍(等于内存容量)
内存大于 16GB:16GB
比如增加交换空间:16GB 复制
复制
mkdir -p var/lib/swap
dd if=/dev/zero of=/var/lib/swap/swapfile bs=1M count=16384
chmod 600 var/lib/swap/swapfile
mkswap var/lib/swap/swapfile
swapon var/lib/swap/swapfile
echo -e '/var/lib/swap/swapfile\tswap\tswap\tdefaults\t0 0' >> etc/fstab
复制
复制
查看当前交换空间是否生效:swapon -s 复制
1.4 软件包需求
复制
yum install -y bc binutils compat-libcap1 compat-libstdc++-33 glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libxcb libX11 libXau libXi libXtst libXrender libXrender-devel make smartmontools sysstat
yum install -y unzip net-tools
复制
复制
复制
groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
groupadd -g 54324 backupdba
groupadd -g 54325 dgdba
groupadd -g 54326 kmdba
groupadd -g 54327 asmdba
groupadd -g 54328 asmoper
groupadd -g 54329 asmadmin
groupadd -g 54330 racdba
useradd -m -u 54321 -g oinstall -G dba,oper,backupdba,dgdba,kmdba,asmdba,racdba oracle
echo "oracle:password" | chpasswd
复制
复制
复制
cat >> /etc/sysctl.d/97-oracle-database-sysctl.conf << EOF
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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
EOF
复制
复制
sysctl --system
以使/etc/sysctl.d/97-oracle-database-sysctl.conf文件更改在活动的内核内存中可用
4294967295/1024/1024/1024=4G
可以通过下面的脚本来计算
shmall
和
shmmax
的值
复制
#!/bin/bash
# http://archives.postgresql.org/pgsql-admin/2010-05/msg00285.php
# Output lines suitable for sysctl configuration based
# on total amount of RAM on the system. The output
# will allow up to 50% of physical memory to be allocated
# into shared memory.
# On Linux, you can use it as follows (as root):
#
# ./shmsetup >> etc/sysctl.conf
# sysctl -p
# Early FreeBSD versions do not support the sysconf interface
# used here. The exact version where this works hasn't
# been confirmed yet.
page_size=`getconf PAGE_SIZE`
phys_pages=`getconf _PHYS_PAGES`
if [ -z "$page_size" ]; then
echo Error: cannot determine page size
exit 1
fi
if [ -z "$phys_pages" ]; then
echo Error: cannot determine number of memory pages
exit 2
fi
shmall=`expr $phys_pages 2`
shmmax=`expr $shmall \* $page_size`
echo \# Maximum shared segment size in bytes
echo kernel.shmmax = $shmmax
echo \# Maximum number of shared memory segments in pages
echo kernel.shmall = $shmall
复制
复制
cp /etc/security/limits.conf etc/security/limits.conf.bak`date +%Y%m%d`
cat >> /etc/security/limits.conf << EOF
#oracle shell limit
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle hard stack 10240
EOF
复制
复制
cp home/oracle/.bash_profile home/oracle/.bash_profile.bak`date +%Y%m%d`
cat >> home/oracle/.bash_profile << EOF
#Oracle Settings
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=\$ORACLE_BASE/product/12.2.0/dbhome_1/;
export ORACLE_SID=orcl;
export PATH=\$ORACLE_HOME/bin:\$PATH;
export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib;
export CLASSPATH=\$ORACLE_HOME/JRE:\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib;
export ORACLE_OWNER=oracle
export ORACLE_UNQNAME=\$ORACLE_SID
EOF
source home/oracle/.bash_profile
复制
复制
parted /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
mkfs.xfs /dev/sdb1
mkdir /u01
echo -e "UUID=$(lsblk -f | grep sdb1 | awk '{print $NF}')\t/u01\txfs\tdefaults\t0 0" >> etc/fstab
mount -a
lsblk -f
复制
mkdir -p /u01/app/oraInventory
mkdir -p /u01/app/oracle
mkdir -p u01/app/oracle/product/12.2.0/dbhome_1/
chown -R oracle:oinstall u01/app/oraInventory
chown -R oracle:oinstall u01/app/oracle
chown -R oracle:oinstall u01/app/oracle/product/12.2.0/dbhome_1/
复制
复制
cd /opt/
unzip linuxx64_12201_database.zip
复制
复制
chown -R oracle:oinstall /opt/database/
ll -d opt/database/
复制
2.1 oracle 用户登录
su - oracle
2.2 创建应答文件
复制
mkdir /u01/app/oracle/etc/
cp /opt/database/response/* u01/app/oracle/etc/
cd /u01/app/oracle/etc/
复制
复制
复制
cd u01/app/oracle/etc/
sed -i 's/^#.*$//g' *.rsp
sed -i '/^$/d' *.rsp
复制
复制
将需要修改的部分写入db_install.config中:
复制
cat >> db_install.config << EOF
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=oper
oracle.install.db.OSBACKUPDBA_GROUP=backupdba
oracle.install.db.OSDGDBA_GROUP=dgdba
oracle.install.db.OSKMDBA_GROUP=kmdba
oracle.install.db.OSRACDBA_GROUP=racdba
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
oracle.install.db.config.starterdb.globalDBName=orcl # 根据实际修改
oracle.install.db.config.starterdb.SID=orcl # 根据实际修改
oracle.install.db.config.starterdb.characterSet=AL32UTF8 # 根据实际修改
oracle.install.db.config.starterdb.memoryLimit=25600 # 根据实际修改 指定数据库的总内存分配。值(以MB为单位)应该至少为256 MB,并且不应该超过系统上可用的物理内存总量。25600大概是32GB的80%
oracle.install.db.config.starterdb.password.ALL=password # 根据实际修改
DECLINE_SECURITY_UPDATES=true
EOF
复制
复制
复制
for i in $(cat db_install.config);do
key=$(echo $i | awk -F= '{print $1}');
value=$(echo $i | awk -F= '{print $2}');
sed -i "s#$key=#&$value#g" db_install.rsp;
done
复制
复制
sed 的 / 换成 # 在原因是配置中的路径有 / 字符
复制
cd /opt/database/
#./runInstaller -force -silent -noconfig -responseFile /u01/app/oracle/etc/db_install.rsp
./runInstaller -silent -ignorePrereq -responseFile /u01/app/oracle/etc/db_install.rsp # 跳过前期检查
复制
复制
复制
rm -rf /u01/app/oraInventory/*
rm -rf /u01/app/oracle/product/12.2.0/dbhome_1/*
复制
复制
复制
# cd /u01/app/oracle/etc/
# egrep -v '^#|^$' netca.rsp
[GENERAL]
RESPONSEFILE_VERSION="12.2"
CREATE_TYPE="CUSTOM"
[oracle.net.ca]
INSTALLED_COMPONENTS={"server","net8","javavm"}
INSTALL_TYPE=""typical""
LISTENER_NUMBER=1
LISTENER_NAMES={"LISTENER"}
LISTENER_PROTOCOLS={"TCP;1521"}
LISTENER_START=""LISTENER""
NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}
NSN_NUMBER=1
NSN_NAMES={"EXTPROC_CONNECTION_DATA"}
NSN_SERVICE={"PLSExtProc"}
NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}
复制
复制
可根据需要修改监听端口
netca -silent -responsefile /u01/app/oracle/etc/netca.rsp
复制
2.5 静默创建数据库
将需要修改的部份写入dbca.config中:
复制
cd /u01/app/oracle/etc/
cat >> dbca.config << EOF
gdbName=orcl
sid=orcl
sysPassword=password
systemPassword=password
dbsnmpPassword=password
characterSet=AL32UTF8
EOF
复制
复制
复制
for i in $(cat dbca.config);do
key=$(echo $i | awk -F= '{print $1}');
value=$(echo $i | awk -F= '{print $2}');
sed -i "s#$key=#&$value#g" dbca.rsp;
done
复制
复制
sed 的 / 换成 # 在原因是配置中的路径有 / 字符
dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile /u01/app/oracle/etc/dbca.rsp
复制
三、配置开机启动
将 复制
GDSTI:/u01/app/oracle/product/12.2.0/dbhome_1:N 复制
修改为 复制
GDSTI:/u01/app/oracle/product/12.2.0/dbhome_1:Y 复制
复制
sed -i '/dbhome_1/s/N/Y/g' /etc/oratab 复制
复制
编辑 复制
/u01/app/oracle/product/12.2.0/dbhome_1/bin/dbstart 复制
/u01/app/oracle/product/12.2.0/dbhome_1/bin/dbshut 复制
文件,将 复制
ORACLE_HOME_LISTNER=$1 复制
修改为 复制
ORACLE_HOME_LISTNER=$ORACLE_HOME 复制
复制
cd /u01/app/oracle/product/12.2.0/dbhome_1/bin/ 复制
sed -i 's/ORACLE_HOME_LISTNER=$1/ORACLE_HOME_LISTNER=$ORACLE_HOME/g' dbstart 复制
sed -i 's/ORACLE_HOME_LISTNER=$1/ORACLE_HOME_LISTNER=$ORACLE_HOME/g' dbshut 复制
复制
数据库启动命令:dbstart 复制
数据库关闭命令:dbshut 复制
四、查询命令
4.1 查看监听状态
复制
su - oracle
lsnrctl status
# 关闭监听 lsnrctl stop
# 启动监听 lsnrctl start
复制
4.2 登陆查看实例 复制
复制
sqlplus / as sysdba
# 启动数据库:startup
# 关闭数据库:shutdown immediate
复制
# 查看实例状态
SQL> select status from v$instance;
STATUS
------------
OPEN
# 查看数据库版本信息
SQL> set line 1000
SQL> select * from v$version;
BANNER CON_ID
-------------------------------------------------------------------------------- ----------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0
PL/SQL Release 12.2.0.1.0 - Production 0
CORE 12.2.0.1.0 Production 0
TNS for Linux: Version 12.2.0.1.0 - Production 0
NLSRTL Version 12.2.0.1.0 - Production 0
复制
复制
5.1 防火墙配置
复制
#永久打开1521/TCP端口
firewall-cmd --permanent --add-port=1521/tcp
firewall-cmd --reload
#查看防火墙,添加的端口也可以看到
firewall-cmd --list-all
复制
复制
5.2 乱码问题
CRT会话语言是UTF8
oracle使用的字符集是AL32UTF8
shell 客户端登录乱码
复制
[oracle@db01 bin]$ sqlplus / as sysdba;
SQL*Plus: Release 12.2.0.1.0 Production on Fri May 27 10:27:34 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
???: # 这个地方乱码
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL>
复制
复制
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
echo 'export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"' >> /home/oracle/.bash_profile
复制
复制
[oracle@db01 bin]$ sqlplus / as sysdba;
SQL*Plus: Release 12.2.0.1.0 Production on 星期五 5月 27 10:34:18 2021
Copyright (c) 1982, 2016, Oracle. All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL>
复制
复制
文章转载自kpxiaoxm,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
740次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
644次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
565次阅读
2025-04-20 10:07:02
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
514次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
510次阅读
2025-04-17 17:02:24
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
495次阅读
2025-04-22 00:20:37
一页概览:Oracle GoldenGate
甲骨文云技术
477次阅读
2025-04-30 12:17:56
火焰图--分析复杂SQL执行计划的利器
听见风的声音
436次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
381次阅读
2025-04-15 14:48:05
OR+DBLINK的关联SQL优化思路
布衣
369次阅读
2025-05-05 19:28:36