前言
以下是在 Linux 系统上安装 Oracle 11g 数据库的详细步骤。请注意,Oracle 11g 已经较旧,建议在生产环境中考虑使用更新的版本。
提示:以下是本篇文章正文内容,下面案例可供参考
一、简介
Oracle 吗?
Oracle 数据库是全球领先的关系型数据库管理系统(RDBMS),由 Oracle 公司开发。它为企业级应用提供高性能、高可用性和可扩展的数据管理解决方案。。
版本演进
版本 | 代号 | 发布年份 | 重要特性 |
---|---|---|---|
Oracle 19c | 长期支持版 | 2019 | 自动索引,持久内存支持 |
Oracle 21c | 创新版 | 2020 | 区块链表,JSON增强 |
Oracle 23c | 长期支持版 | 2023 | JSON关系二元性,SQL属性图 |
二、前提条件
-
确认系统兼容性:
-
Oracle 11g R2 支持 RHEL/CentOS/Oracle Linux 5 和 6
-
确保系统有足够资源(至少 2GB RAM,10GB 磁盘空间)
-
-
下载 Oracle 11g 安装文件:
-
从 Oracle 官网下载以下两个文件:
-
linux.x64_11gR2_database_1of2.zip
-
linux.x64_11gR2_database_2of2.zip
-
-
Oracle 11G 官方下载的新鲜出炉无病痛 健康绿芽 MD5完整
分享文件:Oracle11g
链接:https://pan.xunlei.com/s/VOQgyUFCC_J6XU4p-R32N5DjA1#
提取码:rnri
复制这段内容后打开迅雷,查看更方便
三、安装步骤
1.安装必要的依赖包
yum install -y binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
2.创建用户和组
[root@localhost ~]# groupadd oinstall #创建oinstall组
[root@localhost ~]# groupadd dba #创建dba组
[root@localhost ~]# useradd -g oinstall -G dba -m oracle #创建oracle用户并将用户加入到dba组与oinstall组
[root@localhost ~]# passwd oracle #设置oracle用户密码
3.配置内核参数
编辑 /etc/sysctl.conf
文件,添加以下内容:
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
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
应用更改:sysctl -p
4.设置用户限制
编辑 /etc/security/limits.conf
,添加:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
5.创建安装目录
代码如下(示例):
[root@localhost ~]# mkdir -p /data/oracle #oracle根目录
[root@localhost ~]# mkdir -p /data/database #用于存放Oracle解压后的安装包
[root@localhost ~]# mkdir -p /data/oraInventory #数据库配置文件目录
6.设置用户环境变量
编辑 /home/oracle/.bash_profile
,添加:
export ORACLE_BASE=/data/oracle #oracle数据库安装目录
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1 #oracle数据库路径
export ORACLE_SID=ORCL #oracle启动数据库实例名
export ORACLE_UNQNAME=ORCL
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK #设置Oracle客户端字符集,必须与Oracle安装时设置的字符集保持一致
应用更改:source /home/oracle/.bash_profile
7.解压安装文件
代码如下(示例):
[root@localhost src]# unzip linux.x64_11gR2_database_1of2.zip -d /data/ #解压第一个压缩包
[root@localhost src]# unzip linux.x64_11gR2_database_2of2.zip -d /data/ #解压第二个压缩包
[root@localhost src]# chown -R oracle:oinstall /data
8.开始安装
代码如下(示例):
[root@localhost database]# cd /data/database/response
[root@localhost response]# ls
dbca.rsp db_install.rsp netca.rsp
[root@localhost response]# vi response/db_install.rsp
9.配置db_install.rsp
编辑 /data/database-old/response/.
db_install.rsp
29 oracle.install.option=INSTALL_DB_SWONLY #安装选项
37 ORACLE_HOSTNAME=centos7 #命令hostname查看
42 UNIX_GROUP_NAME=oinstall #主组
47 INVENTORY_LOCATION=/data/oraInventory
78 SELECTED_LANGUAGES=en,zh_CN
83 ORACLE_HOME=/data/oracle/product/11.2.0/db_1
88 ORACLE_BASE=/data/oracle
99 oracle.install.db.InstallEdition=EE #版本
108 oracle.install.db.isCustomInstall=true
142 oracle.install.db.DBA_GROUP=dba #admin管理组名
147 oracle.install.db.OPER_GROUP=dba #oper操作员组名
160 oracle.install.db.config.starterdb.type=GENERAL_PURPOSE
170 oracle.install.db.config.starterdb.SID=ORCL
200 oracle.install.db.config.starterdb.memoryLimit=800
233 oracle.install.db.config.starterdb.password.ALL=123456 #设置所有用户密码。
385 DECLINE_SECURITY_UPDATES=true
10.开始安装
代码如下(示例):
[root@localhost database]# su oracle
[root@localhost database]# source /home/oracle/.bash_profile
[oracle@localhost database]$ ./runInstaller -silent -ignorePrereq -responseFile /data/database/response/db_install.rsp
返回结果-成功
[oracle@iZ2ze8jfzrgvrw4vxaey44Z database]$ ./runInstaller -silent -ignorePrereq -responseFile /data/database/response/db_install.rsp
Starting Oracle Universal Installer...Checking Temp space: must be greater than 120 MB. Actual 23776 MB Passed
Checking swap space: must be greater than 150 MB. Actual 1023 MB Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2025-05-19_06-51-26PM. Please wait ...[oracle@iZ2ze8jfzrgvrw4vxaey44Z database]$ You can find the log of this install session at:
/data/oraInventory/logs/installActions2025-05-19_06-51-26PM.log
The following configuration scripts need to be executed as the "root" user.
#!/bin/sh
#Root scripts to run/data/oracle/product/11.2.0/db_1/root.sh
To execute the configuration scripts:
1. Open a terminal window
2. Log in as "root"
3. Run the scripts
4. Return to this window and hit "Enter" key to continueSuccessfully Setup Software.
核心意思:
以下配置脚本需要以“root”用户身份执行。
#要运行的根脚本在
/data/oracle/product/11.2.0/db_1/root.sh
要执行配置脚本,请执行以下操作:
1.打开终端窗口
2.以“root”身份登录
3.运行脚本
4.返回此窗口并按“Enter”键继续
11.运行Root脚本
代码如下(示例):以root用户执行
#要运行的 Root 脚本,以 "root" 身份登录
sh /data/oracle/product/11.2.0/db_1/root.sh
12.配置监听器
编辑 /data/database-old/response/netca.rsp
INSTALL_TYPE=""typical""安装的类型
LISTENER_NUMBER=1监听器数量
LISTENER_NAMES={"LISTENER"}监听器的名称列表
LISTENER_PROTOCOLS={"TCP;1521"}监听器使用的通讯协议列表
LISTENER_START=""LISTENER""监听器启动的名称
13.执行监听
代码如下(示例):以oracle 执行 切换用户 su - oracle
[oracle@centos database]$ netca /silent /responseFile /data/database/response/netca.rsp
注意几个关键点:
/silent
参数告诉netca
以静默模式运行,不显示任何图形界面。
/response
后面应该直接跟响应文件的路径和文件名,不包括前面的/
。所以应该是/response /data/database/*.rsp
。确保你的响应文件路径和名称正确,并且文件具有正确的格式和必要的权限。
如果你的 Oracle 环境变量设置正确(如
ORACLE_HOME
),通常不需要指定完整的 Oracle 安装路径。否则,你可能需要使用完整路径指向netca
工具,例如/data/oracle/product/12.1.0/dbhome_1/bin/netca
。
执行返回结果:
[oracle@iZ2ze8jfzrgvrw4vxaey44Z ~]$ netca /silent /responseFile /data/database/response/netca.rsp
Parsing command line arguments:
Parameter "silent" = true
Parameter "responsefile" = /data/database/response/netca.rsp
Done parsing command line arguments.
Oracle Net Services Configuration:
Profile configuration complete.
Oracle Net Listener Startup:
Running Listener Control:
/data/oracle/product/11.2.0/db_1/bin/lsnrctl start LISTENER
Listener Control complete.
Listener started successfully.
Listener configuration complete.
Oracle Net Services configuration successful. The exit code is 0
14.监听操作
代码如下(示例):
# oracle用户下执行
0) 查看 运行:netstat -tnulp | grep 1521
1)监听器状态:lsnrctl status
2)停止监听器:lsnrctl stop
3)启动监听器:lsnrctl start
15.安装数据库
编辑 /data/database/response/dbca.rsp
RESPONSEFILE_VERSION ="11.2.0" #不能更改
OPERATION_TYPE ="createDatabase"
GDBNAME ="ORCL" #数据库的名字
SID ="ORCL" #对应的实例名字
TEMPLATENAME ="General_Purpose.dbc" #建库用的模板文件
CHARACTERSET ="ZHS16GBK" #字符集,重要!!!建库后一般不能更改,所以建库前要确定清楚。
TOTALMEMORY ="800" #800MB,物理内存*80%
16.执行建库命令
代码如下(示例):
[oracle@centos database]$ dbca -silent -createDatabase -templateName General_Purpose.dbc -gdbName ORCL -sysPassword oracle -systemPassword oracle -responseFile /data/database/response/dbca.rsp
返回结果:
17.登录测试
代码如下(示例):
[oracle@centos database]$ sqlplus / as sysdba
登录成功 O(∩_∩)O哈哈~ 开始一通乱操作 OK
18.操作命令
代码如下(示例):
1)查看监听器状态:lsnrctl status 【oracle下执行】
2)停止监听器:lsnrctl stop 【oracle下执行】
3)连接数据库:sqlplus sys/密码 as sysdba 【oracle下执行】
4)停止数据库:shutdown immediate 【sqlplus 下执行】
5)启动数据库:startup 【sqlplus 下执行】
6)退出数据库:exit 【sqlplus 下执行】
7)启动监听器:lsnrctl start 【oracle下执行】
三、客户端操作
1.客户端-登录
代码如下(示例):
2.客户端-导入导出
使用数据泵导入 *.dmp 文件时,错误如下截图:
原因:
没有授权 SYSDBA 权限
解决:
授权SYSDBA权限
[oracle@iZ2ze8jfzrgvrw database]$ sqlplus / as sysdba
SQL> grant sysdba to system;
Grant succeeded.
然后客户端登录选择
3.命令导出
^_^ 键盘罢工了 谁送我一个哦
4.命令导入
科普知识:
Oracle 提供了两种主要的数据导入工具:传统的
imp
(Import) 和更现代的impdp
(Data Pump Import)。以下是它们的主要区别:1. 技术架构
特性 imp (传统导入) impdp (Data Pump 导入) 技术基础 基于客户端/服务器架构 基于服务器端作业 处理方式 直接处理数据文件 使用数据库服务器进程 速度 相对较慢 显著更快 (通常快2-5倍) 2. 功能对比
imp (传统导入)
支持较旧的 Oracle 版本
只能导入由
exp
工具导出的文件功能相对基础
不支持并行操作
无法在导入过程中转换对象
impdp (Data Pump 导入)
支持更高级的功能:
并行处理:可通过 PARALLEL 参数实现
作业控制:可以暂停、恢复和监控导入作业
对象过滤:精细控制导入哪些对象
数据转换:可在导入时修改对象属性
网络导入:直接从源数据库导入而不需要转储文件
压缩和加密:支持导入压缩和加密的转储文件
3. 使用场景
适用 imp 的情况:
需要导入由旧版
exp
工具创建的转储文件处理非常旧的 Oracle 数据库版本 (10g 之前)
简单的数据迁移需求
适用 impdp 的情况:
Oracle 10g 及更高版本
大数据量迁移
需要更快的导入速度
需要更精细的控制和灵活性
企业级数据迁移和整合
4. 性能差异
impdp
通常比imp
快得多,原因包括:
服务器端处理减少了网络开销
并行处理能力
更高效的 I/O 处理
直接路径加载选项
5. 命令语法示例
imp 基本语法:
imp username/password@database file=export.dmp log=import.log full=y
完整示例:
imp system/password@ORCL file=full_export.dmp log=imp_full.log full=y ignore=y
常用参数详解
参数 说明 示例 userid 指定用户名/密码 userid=system/password
file 指定导入的dump文件 file=export.dmp
log 指定日志文件 log=import.log
full 导入整个文件内容 full=y
tables 指定要导入的表 tables=(employees,departments)
fromuser 导出数据的原始用户 fromuser=scott
touser 导入数据的目标用户 touser=hr
ignore 忽略创建错误 ignore=y
rows 是否导入数据行 rows=y
(默认) /rows=n
indexes 是否导入索引 indexes=y
(默认)constraints 是否导入约束 constraints=y
(默认)grants 是否导入权限 grants=y
(默认)buffer 设置缓冲区大小 buffer=102400
commit 每次插入后提交 commit=y
destroy 覆盖现有数据文件 destroy=y
impdp 基本语法:
impdp username/password@database directory=dpump_dir dumpfile=export.dmp logfile=import.log
完整示例:
impdp system/password@ORCL directory=DPUMP_DIR dumpfile=hr_schema.dmp logfile=impdp_hr.log schemas=hr remap_schema=hr:hr_dev remap_tablespace=users:users_dev parallel=4 table_exists_action=replace
常用参数详解
参数 说明 示例 directory 指定转储文件和日志的目录对象 directory=DATA_PUMP_DIR
dumpfile 指定dump文件名 dumpfile=expdp_full.dmp
logfile 指定日志文件名 logfile=impdp_full.log
schemas 指定要导入的模式 schemas=hr,scott
tables 指定要导入的表 tables=employees,departments
full 导入整个dump文件 full=y
parallel 设置并行度 parallel=4
remap_schema 模式映射 remap_schema=hr:hr_new
remap_tablespace 表空间映射 remap_tablespace=users:users_new
table_exists_action 表存在时的操作 table_exists_action=replace/append/truncate/skip
exclude 排除特定对象 exclude=table:"like 'TEMP%'"
include 包含特定对象 include=table:"in ('EMPLOYEES','DEPARTMENTS')"
transform 转换对象特性 transform=segment_attributes:n
job_name 指定作业名称 job_name=imp_hr_job
status 显示作业状态 status=30
(每30秒显示一次)network_link 网络导入直接连接 network_link=source_db
content 导入内容选择 content=data_only/metadata_only/all
6. 实际建议
新项目:始终优先使用
impdp
,除非有特殊兼容性需求大数据量:必须使用
impdp
以获得更好的性能旧系统迁移:如果源是旧版导出文件,可能需要先用
imp
功能需求:需要高级功能时选择
impdp
Oracle 官方推荐在新项目中使用 Data Pump 工具 (
expdp
/impdp
),因为传统导入导出工具 (exp
/imp
) 已在较新版本中被标记为过时,未来可能会被移除。
当前环境:
系统环境:CentOS Linux 7
Oracle版本:11.02
准备Oracle用户:
表空间:XDT 500M
用户名:XDT
密码:321321
服务名:ORCL
导入DMP文件:
原文件:xdt2025.dmp 版本:11.01
用户名:XDT
密码:321321
服务名:未知
dmp文件路径:/data/oracle/admin/ORCL/dpdump/xdt2025.DMP
导入命令:
linux 服务器 切换 su - oracle 环境下执行
imp xdt/321321@ORCL file='/data/oracle/admin/ORCL/dpdump/xdt2025.dmp' full=y ignore=y
命令解析:imp 用户名/密码@服务名 file="文件路径地址" full=y ignore=y
执行结果:完美 ^_^
客户端验证:
验证XDT库是否导入表 OK
验证XDT表数据是否导入 OK
验证XDT表空间使用情况 OK
验证通过 完美 ^_^ 哇咔咔
OK 可以以愉快的操作了 ^_^
四、安装问题
Q1. 问题解决
问题:
Checking Temp space: must be greater than 120 MB. Actual 23776 MB Passed
Checking swap space: 0 MB available, 150 MB required. Failed <<<<Some requirement checks failed. You must fulfill these requirements before
continuing with the installation,
原因:正在检查临时空间:必须大于120 MB。实际通过23776 MB
正在检查交换空间:0 MB可用,需要150 MB。失败<<<<
一些需求检查失败。您必须先满足这些要求验证:
[root@iZ2zeapfczk6uvx2hwia34Z ~]# free -h
total used free shared buff/cache available
Mem: 15G 346M 12G 456K 2.1G 14G
Swap: 0B 0B 0B
经查看确实0MB
解决:
swap空间不够可以临时增加
方法1:使用 swapfile(推荐)
创建新的交换文件(例如增加 1GB):
sudo fallocate -l 1G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
立即启用:
sudo swapon /swapfile
验证:
free -h # 查看Swap总量是否增加
Q2.问题解决
问题:bash: lsnrctl: command not found
[root@iZ2ze8jfzrgvrw4vxaey44Z ~]# su oracle
[oracle@iZ2ze8jfzrgvrw4vxaey44Z root]$ lsnrctl status
bash: lsnrctl: command not found
原因:因为使用 su oracle 用户造成的
解决:
使用su -oracle 登录
[oracle@iZ2ze8jfzrgvrw4vxaey44Z root]$ su - oracle
[oracle@iZ2ze8jfzrgvrw4vxaey44Z ~]$ lsnrctl statusLSNRCTL for Linux: Version 11.2.0.1.0 - Production on 19-MAY-2025 21:01:04
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 19-MAY-2025 19:24:58
Uptime 0 days 1 hr. 36 min. 6 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
Listener Log File /data/oracle/diag/tnslsnr/iZ2ze8jfzrgvrw4vxaey44Z/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=iZ2ze8jfzrgvrw4vxaey44Z)(PORT=1521)))
Services Summary...
Service "ORCL" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
Service "ORCLXDB" has 1 instance(s).
Instance "ORCL", status READY, has 1 handler(s) for this service...
The command completed successfully
总结
以上就是今天要讲的内容,本文仅仅简单介绍了Oracle安装,希望这个指南对您有所帮助!如需更详细的配置或遇到特定问题,可以参考 Oracle 官方文档或社区支持。