Oracle-11g单机部署
| 系统 | 内核 | 内存 | CPU |
|---|---|---|---|
| centos7.9 | 3.10 | 4G | 2C |
Oracle Database,又名Oracle RDBMS,或简称Oracle 是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。
Oracle具有强大的功能,因此,对于硬件要求也较高。Oracle 10g安装的硬件要求如下:
1024MB以上的物理内存。1.5~3.5 GB磁盘空间,具体大小由安装类型决定。
Oracle数据库11g有多个版本可供选择:
标准版1、标准版和企业版。所有这些版本都使用相同的通用代码库构建,这意味着企业的数据库管理软件可以轻松地从规模较小的单一处理器服务器扩展到多处理器服务器集群,而无需更改一行代码。Oracle数据库11g企业版还有许多其他增强了性能、可伸缩性、可用性、安全性和可管理性的功能选项。
本次部署使用命令行静默部署,参考文档 (opens new window)
# 1. 修改主机名
hostnamectl set-hostname oracle
1
# 2. 添加hosts解析
echo "当前机器IP oracle" >> /etc/hosts
1
# 3. 关闭防火墙、Selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
setenforce 0
systemctl disable --now firewalld
1
2
3
2
3
# 4. 创建swap文件
dd if=/dev/zero of=/swapfile bs=1M count=200
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile swap swap defaults 0 0' >> /etc/fstab
free -m
1
2
3
4
5
6
2
3
4
5
6
# 5. 创建用户、群组
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba -m oracle
usermod -aG oinstall oracle
echo "xiaobujiang" | passwd --stdin oracle
id oracle
1
2
3
4
5
6
2
3
4
5
6
# 6. 配置系统内核参数
echo '
fs.aio-max-nr = 1048576
fs.file-max = 6815744
# 机器内存4g kernel.shmall=内存*0.8*1024*1024*1024/4096 限制单个共享内存段的最大字节数
kernel.shmall = 838861
# 机器内存4G,kernel.shmmax=4*0.5*1024*1024*1024 限制所有共享内存段的总页面数
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 500 64000 500 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
' |tee -a /etc/sysctl.conf > /dev/null
sysctl -p
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 7. 修改用户限制文件
echo "oracle soft nproc 2047" >>/etc/security/limits.conf
echo "oracle hard nproc 16384" >>/etc/security/limits.conf
echo "oracle soft nofile 1024" >>/etc/security/limits.conf
echo "oracle hard nofile 65536">>/etc/security/limits.conf
echo "oracle soft stack 1024" >>/etc/security/limits.conf
echo "oracle hard stack 65536">>/etc/security/limits.conf
echo "session required /lib64/security/pam_limits.so" >>/etc/pam.d/login
echo "session required pam_limits.so">>/etc/pam.d/login
echo '
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
umask 022
fi
' | sudo tee -a /etc/profile.d/oracle.sh > /dev/null
source /etc/profile.d/oracle.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 8. 创建oracle主目录
mkdir -p /u01/app/oracle
chown -R oracle:oinstall /u01
chmod -R 775 /u01
1
2
3
2
3
# 9. 配置oracle用户的环境变量
su - oracle
echo '
export ORACLE_SID=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"
export NLS_LANG=American_america.ZHS16GBK
export PATH=$PATH:$ORACLE_HOME/bin
'| tee -a ~/.bash_profile > /dev/null
#使配置文件生效
source ~/.bash_profile
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 10. 安装依赖
su - root
yum -y install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC-devel
1
2
2
# 11. 上传Oracle包
su - root
mkdir /tmp/oracle
cd /tmp/oracle
curl -O https://github.com/xiaobujiang/service/releases/download/v11.2.0.4.0/p13390677_112040_Linux-x86-64_1of7.zip
curl -O https://github.com/xiaobujiang/service/releases/download/v11.2.0.4.0/p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
chown -R oracle:oinstall /tmp/oracle/database
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 12. 编辑静默文件
su - oracle
cd /tmp/oracle/database/response/
cp db_install.rsp db_install.rsp.bak
echo > db_install.rsp
echo '
oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v11_2_0
oracle.install.option=INSTALL_DB_SWONLY
# 主机名
ORACLE_HOSTNAME=oracle
# 安装组
UNIX_GROUP_NAME=oinstall
# INVENTORY中央库存目录(不填就是默认值)
INVENTORY_LOCATION=/u01/app/oracle/inventory
# 选择语言
SELECTED_LANGUAGES=en,zh_CN
# 数据目录
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
ORACLE_BASE=/u01/app/oracle
oracle.install.db.InstallEdition=EE
oracle.install.db.EEOptionsSelection=false
oracle.install.db.optionalComponents=oracle.rdbms.partitioning:11.2.0.4.0,oracle.oraolap:11.2.0.4.0,oracle.rdbms.dm:11.2.0.4.0,oracle.rdbms.dv:11.2.0.4.0,oracle.rdbms.lbac:11.2.0.4.0,oracle.rdbms.rat:11.2.0.4.0
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oinstall
oracle.install.db.CLUSTER_NODES=
oracle.install.db.isRACOneInstall=
oracle.install.db.racOneServiceName=
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=ZHS16GBK
oracle.install.db.config.starterdb.memoryOption=true
oracle.install.db.config.starterdb.memoryLimit=
oracle.install.db.config.starterdb.installExampleSchemas=false
oracle.install.db.config.starterdb.enableSecuritySettings=true
oracle.install.db.config.starterdb.password.ALL=oracle
oracle.install.db.config.starterdb.password.SYS=
oracle.install.db.config.starterdb.password.SYSTEM=
oracle.install.db.config.starterdb.password.SYSMAN=
oracle.install.db.config.starterdb.password.DBSNMP=
oracle.install.db.config.starterdb.control=DB_CONTROL
oracle.install.db.config.starterdb.gridcontrol.gridControlServiceURL=
oracle.install.db.config.starterdb.automatedBackup.enable=false
oracle.install.db.config.starterdb.automatedBackup.osuid=
oracle.install.db.config.starterdb.automatedBackup.ospwd=
oracle.install.db.config.starterdb.storageType=
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=
oracle.install.db.config.asm.diskGroup=
oracle.install.db.config.asm.ASMSNMPPassword=
MYORACLESUPPORT_USERNAME=
MYORACLESUPPORT_PASSWORD=
SECURITY_UPDATES_VIA_MYORACLESUPPORT=
DECLINE_SECURITY_UPDATES=true
PROXY_HOST=
PROXY_PORT=
PROXY_USER=
PROXY_PWD=
PROXY_REALM=
COLLECTOR_SUPPORTHUB_URL=
oracle.installer.autoupdates.option=
oracle.installer.autoupdates.downloadUpdatesLoc=
AUTOUPDATES_MYORACLESUPPORT_USERNAME=
AUTOUPDATES_MYORACLESUPPORT_PASSWORD=
' | tee -a db_install.rsp > /dev/null
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 13. 安装
su - oracle
cd /tmp/oracle/database/
./runInstaller -silent -responseFile /tmp/oracle/database/response/db_install.rsp -ignorePrereq
注: 报/tpm/xxx.log没权限的话可以执行如下命令后,重新执行安装命令
export TEMP=/home/oracle/tmp
export TMP=/home/oracle/tmp
mkdir -p /home/oracle/tmp
chmod 777 /home/oracle/tmp
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 14. root用户执行上述的脚本
su - root
/u01/app/oracle/inventory/orainstRoot.sh
/u01/app/oracle/product/11.2.0/dbhome_1/root.sh
1
2
3
2
3
# 15. 创建数据库实例配置
su - oracle
cd /tmp/oracle/database/response/
cp dbca.rsp dbca.rsp.bak
sed -i '/^#/d;/^$/d' dbca.rsp
echo > dbca.rsp
echo '
[CREATEDATABASE]
GDBNAME = "orcl"
SID = "orcl"
SYSPASSWORD = "oracle"
SYSTEMPASSWORD = "oracle"
SYSMANPASSWORD = "oracle"
DBSNMPPASSWORD = "oracle"
DATAFILEDESTINATION = /u01/app/oracle/oradata
RECOVERYAREADESTINATION = /u01/app/oracle/fast_recovery_area
CHARACTERSET = "ZHS16GBK"
# 我这边设置TOTALMEMORY = 物理内存*75% MB
TOTALMEMORY = "3072"
TEMPLATENAME = "General_Purpose.dbc"
'|tee -a dbca.rsp > /dev/null
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 16. 安装数据库实例
su - oracle
dbca -silent -createDatabase -responseFile /tmp/oracle/database/response/dbca.rsp
1
2
2
# 17. 修改配置监听程序
su - oracle
netca /silent /responseFile /tmp/oracle/database/response/netca.rsp
cat << EOF > /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
LISTENER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = 当前机器IP)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(SID_NAME = orcl)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(PRESPAWN_MAX = 20)
(PRESPAWN_LIST =
(PRESPAWN_DESC = (PROTOCOL = tcp)(POOL_SIZE = 2)(TIMEOUT = 1))
)
)
)
ADR_BASE_LISTENER = /u01/app/oracle
EOF
cat << EOF > /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
orcl =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 当前机器IP)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
EOF
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
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
# 18. 启动数据库
su - oracle
lsnrctl stop
lsnrctl start
1
2
3
2
3
# 19. 设置开机自启
su - root
echo "orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y" >>/etc/oratab
echo "su oracle -lc /u01/app/oracle/product/11.2.0/db_1/bin/lsnrctl start" >>/etc/rc.d/rc.local
echo "su oracle -lc /u01/app/oracle/product/11.2.0/db_1/bin/dbstart" >>/etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
1
2
3
4
5
2
3
4
5
# 20. 以 sysdba 身份登录
su - oracle
# 本地登录
sqlplus / as sysdba
# 查看用户有没有锁定
SQL> select username,account_status from dba_users where username='SYSTEM';
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SYSTEM EXPIRED & LOCKED
# 改解锁
SQL> alter user SYSTEM account unlock;
# 修改密码
SQL> alter user SYSTEM identified by "tlgjj@123";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
上次更新: 2026/05/31, 03:30:34