Linux 下安装 Oracle 11g 实战指南

前言

以下是在 Linux 系统上安装 Oracle 11g 数据库的详细步骤。请注意,Oracle 11g 已经较旧,建议在生产环境中考虑使用更新的版本。


提示:以下是本篇文章正文内容,下面案例可供参考

一、简介

Oracle 吗?

Oracle 数据库是全球领先的关系型数据库管理系统(RDBMS),由 Oracle 公司开发。它为企业级应用提供高性能、高可用性和可扩展的数据管理解决方案。。

版本演进

版本代号发布年份重要特性
Oracle 19c长期支持版2019自动索引,持久内存支持
Oracle 21c创新版2020区块链表,JSON增强
Oracle 23c长期支持版2023JSON关系二元性,SQL属性图

二、前提条件

  1. 确认系统兼容性:

    • Oracle 11g R2 支持 RHEL/CentOS/Oracle Linux 5 和 6

    • 确保系统有足够资源(至少 2GB RAM,10GB 磁盘空间)

  2. 下载 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 continue 

Successfully 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

注意几个关键点:

  1. /silent 参数告诉 netca 以静默模式运行,不显示任何图形界面。

  2. /response 后面应该直接跟响应文件的路径和文件名,不包括前面的 /。所以应该是 /response /data/database/*.rsp

  3. 确保你的响应文件路径和名称正确,并且文件具有正确的格式和必要的权限。

  4. 如果你的 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. 实际建议

  1. 新项目:始终优先使用 impdp,除非有特殊兼容性需求

  2. 大数据量:必须使用 impdp 以获得更好的性能

  3. 旧系统迁移:如果源是旧版导出文件,可能需要先用 imp

  4. 功能需求:需要高级功能时选择 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 status 

LSNRCTL 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 官方文档或社区支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值