一. 安装包下载

下载地址: https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_ee

选择Oracle Database 19c for Linux x86-64, 下载ZIP包

二. 环境配置

关闭防火墙和selinux

1
2
3
4
5
6
7
8
9
# 关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

# 关闭selinux
setenforce 0
sed -i '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
getenforce

2.1 安装依赖库

1
2
# 安装依赖
yum install -y bc binutils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libXrender libX11 libXau libXi libXtst libgcc libnsl librdmacm libstdc++ libstdc++-devel libxcb libibverbs make policycoreutils policycoreutils-python-utils smartmontools sysstat

2.2 创建用户, 修改用户变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 创建用户组
groupadd oinstall
groupadd dba
groupadd oper
useradd -g oinstall -G dba,oper oracle
echo "Orcl123456." | passwd --stdin oracle

# 配置环境变量
cat >> ~oracle/.bash_profile <<'EOF'
# Source /root/.bashrc if user has one
[ -f ~/.bashrc ] && . ~/.bashrc
umask 022
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.3/db_home1
export TMP=/tmp
export TMPDIR=/tmp
export ORACLE_SID=loandb
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export BATCH_HOME=/home/oracle/operate/batch/dispatch
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
export LANG=en_US
export LC_ALL=en_US
export PERL5LIB=/perl/lib
export CV_ASSUME_DISTID=OL7
EOF

2.3 创建目录并授权

1
2
3
4
mkdir -p /u01/app/oraInventory
mkdir -p /u01/app/oracle/product/19.3/db_home1
chown -R oracle:oinstall /u01/
chmod -R 775 /u01/

2.3 修改内核参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vi /etc/sysctl.conf
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_keepalive_time = 150
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 6

kernel.shmmax = 68719476736
kernel.shmall = 4294967296
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128

fs.aio-max-nr = 1048576
fs.file-max = 6815744

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

生效配置

1
sysctl -p

PS: kernel.shmall 和 kernel.shmmax 根据实际物理内存修改,保证oracle数据库SGA 小于系统上的 shmmax,具体如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1. kernel.shmall :

当内存为 12G 时, kernel.shmall = 3145728
当内存为 16G 时, kernel.shmall = 4194304
当内次为 32G 时, kernel.shmall = 8388608
当内存为 64G 时, kernel.shmall = 16777216
当内存为 128G 时, kernel.shmall = 33554432

2. kernel.shmmax :

内存为 12G 时,该值为 12*1024*1024*1024-1 = 12884901887
内存为 16G 时,该值为 16*1024*1024*1024-1 = 17179869183
内存为 32G 时,该值为 32*1024*1024*1024-1 = 34359738367
内存为 64G 时,该值为 64*1024*1024*1024-1 = 68719476735
内存为 128G 时,该值为 128*1024*1024*1024-1 = 137438953471

2.4 修改用户限制

1
2
3
4
5
6
7
8
9
10
11
12
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

oracle soft stack 10240
oracle soft stack 10240

oracle hard memlock 8421772
oracle soft memlock 8421772
#当内存大于8g是要添加内存锁 其值一般为物理内存的80%

三. 安装Oracle服务

3.1 配置安装文件

切换oracle用户

1
su - oracle

上传安装包, 并解压

1
unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME/

配置静默安装文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vim $ORACLE_HOME/install/response/db_install.rsp

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0
oracle.install.option=INSTALL_DB_SWONLY
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/app/oraInventory
ORACLE_HOME=/u01/app/oracle/product/19.3/db_home1
oracle.install.db.InstallEdition=EE
oracle.install.db.OSDBA_GROUP=dba
oracle.install.db.OSOPER_GROUP=opre
oracle.install.db.OSBACKUPDBA_GROUP=oinstall
oracle.install.db.OSDGDBA_GROUP=oinstall
oracle.install.db.OSKMDBA_GROUP=oinstall
oracle.install.db.OSRACDBA_GROUP=oinstall
oracle.install.db.rootconfig.executeRootScript=true
oracle.install.db.rootconfig.configMethod=ROOT

3.2 安装数据库服务

执行安装

1
$ORACLE_HOME/runInstaller -force -silent -noconfig -ignorePrereq -responseFile $ORACLE_HOME/install/response/db_install.rsp

监控安装日志

1
日志位置: /u01/app/oraInventory/logs

执行root脚本

1
2
3
4
5
su - root
cd /u01/app/oraInventory/
sh orainstRoot.sh
cd /u01/app/oracle/product/19.3/db_home1/
sh root.sh

四. 创建监听

4.1 创建默认监听

修改用户变量文件

1
2
3
4
# 配置环境变量
vi ~oracle/.bash_profile
// 修改监听SID, 根据实际情况修改
export ORACLE_SID=loandb
1
2
3
4
5
6
7
8
9
su - oracle
# 添加监听
netca -silent -responsefile $ORACLE_HOME/assistants/netca/netca.rsp
# 查看监听:
lsnrctl status
# 启动监听
lsnrctl start
# 停止监听
lsnrctl stop

4.2 监听配置文件

如果需要远程登录实例, 需要修改默认localhost

1
2
3
4
5
6
7
8
vim $ORACLE_HOME/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 本机IP或者host域名)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
1
2
3
4
5
6
7
8
9
10
11
12
vim $ORACLE_HOME/network/admin/tnsnames.ora
LOANDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 本机IP或者host域名)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = loandb)
)
)

LISTENER_LOANDB =
(ADDRESS = (PROTOCOL = TCP)(HOST = 本机IP或者host域名)(PORT = 1521))

LNNX配置样例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
cat .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_home1
export TMP=/tmp
export TMPDIR=/tmp
export ORACLE_SID=loandb
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export BATCH_HOME=/home/oracle/operate/batch/dispatch
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
----------------------------------------------------------------------------------------
cat listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ccmssitdb1)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
-----------------------------------------------------------------------------------------
cat tnsnames.ora
LOANDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = ccmssitdb1)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = loandb)
)
)

LISTENER_LOANDB =
(ADDRESS = (PROTOCOL = TCP)(HOST = ccmssitdb1)(PORT = 1521))


LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = czsj)(PORT = 1521))

五. 安装实例

实例名称: loandb

5.1 实例配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
vim $ORACLE_HOME/assistants/dbca/dbca.rsp

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0
gdbName=loandb
sid=loandb

databaseConfigType=SI

templateName=General_Purpose.dbc
oracleHomeUserPassword=oracle
sysPassword=oracle
systemPassword=oracle

datafileDestination=/u01/app/oracle/oradata
recoveryAreaDestination=/u01/app/oracle/flash_recovery_area

characterSet=ZHS16GBK
nationalCharacterSet=AL16UTF16
totalMemory=2048

listeners=LISTENER
sampleSchema=true
databaseType=OLTP
emConfiguration=NONE

5.2 创建实例

1
$ORACLE_HOME/bin/dbca -silent -createDatabase -templateName General_Purpose.dbc -responseFile $ORACLE_HOME/assistants/dbca/dbca.rsp

5.3 启动实例

1
2
3
4
5
6
sqlplus / as sysdba

# 启动实例
startup
# 关闭实例
shutdown immediate

SHUTDOWN IMMEDIATE:立即关闭实例,完成当前正在执行的 SQL 语句,然后关闭。

SHUTDOWN TRANSACTIONAL:等待当前事务完成后再关闭实例。

SHUTDOWN ABORT:强制关闭实例,不管当前正在执行的事务。

六. 创建用户、授权

6.1 登录数据库

1
2
3
4
5
6
7
8
9
10
11
# 查看监听 
lsnrctl status

# 启动监听
lsnrctl start

# 登录数据库
sqlplus / as sysdba

# 启动实例
startup

用户远程登录需要修改监听本地地址, localhost修改为实际IP或者域名

6.2 创建用户

用户名: loanuser

密码: loanpwd

1
2
3
4
5
CREATE USER loanuser IDENTIFIED BY loanpwd;
GRANT CREATE SESSION TO loanuser;
GRANT CREATE TABLE TO loanuser;
GRANT SELECT, INSERT, UPDATE, DELETE ON <授权表名> TO loanuser;
EXIT;