[Linux服务器] linux安装oracle19c

104 0
Honkers 2025-8-21 15:16:39 | 显示全部楼层 |阅读模式

目录

​编辑

安装

安装前检查配置:

安装依赖

创建用户和组

关闭防火墙

关闭selinux

创建目录

配置环境变量

配置资源限制

配置pam

配置ssh快速登录

解压安装包

图形界面安装

使其他用户可以调用图形界面

在图形界面安装

创建监听器

创建数据库

使用sqlplus连接

使用java进行连接测试

安装java

配置环境变量

编写程序并执行

解决重启后oracle未启动的问题?

1. 检查 Oracle 服务是否启动

2. 检查环境变量是否正确设置

3. 检查监听配置文件

4. 检查防火墙设置

5. 检查数据库状态


安装

安装前检查配置:

挂载50g盘:

  1. vgcreate oravg /dev/sdb
复制代码

  1. lvcreate -L 49.8G -n oralv oravg
复制代码

  1. lvscan
复制代码

  1. mkfs.xfs /dev/oravg/oralv
复制代码

  1. 查看uuid
  2. blkid
复制代码

  1. 复制分区表
  2. cp /etc/fstab /etc/fstab.bak
  3. vi /etc/fstab
  4. 内容为:
  5. /dev/oravg/oralv /u01 xfs defaults 0 0
  6. cat /etc/fstab
复制代码

  1. 挂载并查看
  2. mount -a
  3. df -Th
复制代码

系统运行级别

  1. runlevel
复制代码

  1. uname -m
复制代码

  1. grep MemTotal /proc/meminfo
  2. cat /etc/redhat-release
复制代码

  1. df-h/tmp
复制代码

  1. free -h
复制代码

  1. df -h /u01
  2. df -h /dev/shm
复制代码

安装依赖

windows本地安装:

📎Xming-6-9-0-31-setup.rar

启动虚拟机,上传这两个文件:

📎compat-libstdc++-33-3.2.3-72.el7.x86_64 .rpm

一个是compat-libstdc++的包,这里oracle的包可以上传到/tmp

首先通过npm网络源安装以下依赖包:[安装前要配置yum网络镜像源,这里忽略配置过程]

例如yum install bc

  1. bc
  2. binutils
  3. compat-libcap1
  4. compat-libstdc++
  5. dtrace-modules
  6. dtrace-modules-headers
  7. dtrace-modules-provider-headers
  8. dtrace-utils
  9. elfutils-libelf
  10. elfutils-libelf-devel
  11. fontconfig-devel
  12. glibc
  13. glibc-devel
  14. ksh
  15. libaio
  16. libaio-devel
  17. libdtrace-ctf-devel
  18. libX11
  19. libXau
  20. libXi
  21. libXtst
  22. libXrender
  23. libXrender-devel
  24. libgcc
  25. librdmacm-devel
  26. libstdc++
  27. libstdc++-devel
  28. libxcb
  29. make
  30. smartmontools
  31. sysstat
复制代码

检查是否有缺失的:

  1. yum install -y bc binutils compat-libcap1 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat
复制代码

检查依赖包是否安装:

  1. rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc \
  2. binutils \
  3. compat-libcap1 \
  4. compat-libstdc++-33 \
  5. elfutils-libelf \
  6. elfutils-libelf-devel \
  7. fontconfig-devel \
  8. glibc \
  9. glibc-devel \
  10. ksh \
  11. libaio \
  12. libaio-devel \
  13. libX11 \
  14. libXau \
  15. libXi \
  16. libXtst \
  17. libXrender \
  18. libXrender-devel \
  19. libgcc \
  20. libstdc++ \
  21. libstdc++-devel \
  22. libxcb \
  23. make \
  24. smartmontools \
  25. sysstat
复制代码

提示缺失compat-libstdc++,这里用上传安装包的安装上去:

  1. ls
  2. rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
复制代码

再次检查,提示没有no package,说明依赖包安装成功!

  1. rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc libstdc++ libstdc++-devel libxcb make smartmontools sysstat
复制代码

创建用户和组

  1. groupadd -g 54321 oinstall
  2. groupadd -g 54322 dba
  3. groupadd -g 54323 oper
  4. useradd -u 54321 -g oinstall -G dba,oper oracle
复制代码

  1. 检查组
  2. id oracle
复制代码

关闭防火墙

  1. systemctl stop firewalld.service
  2. systemctl disable firewalld.service
复制代码

关闭selinux

  1. #临时关闭
  2. setenforce 0
  3. #永久关闭
  4. vi /etc/selinux/config
  5. SELINUX=enforcing
  6. 改成
  7. SELINUX=disabled
复制代码

创建目录

  1. mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
  2. -- 给组,给目录权限
  3. chown -R oracle:oinstall /u01/
  4. chmod -R 775 /u01/
复制代码

  1. ls -l /u01
复制代码

配置环境变量

在/home/oracle/.bash_profile文件中添加以下内容

  1. su - oracle
  2. vim /home/oracle/.bash_profile
复制代码
  1. export PATH
  2. export ORACLE_BASE=/u01/app/oracle
  3. export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
  4. export ORACLE_SID=ora19c
  5. export PATH=$ORACLE_HOME/bin:$PATH
  6. export TNS_ADMIN=$ORACLE_HOME/network/admin
  7. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/lib/usr/lib:/usr/local/lib
  8. umask 022
复制代码

使命令生效:

  1. source /home/oracle/.bash_profile
复制代码

配置资源限制

  1. su root
复制代码
  1. sed -i 's/* soft nproc 4096/* soft nproc 65535/' /etc/security/limits.d/20-nproc.conf
  2. echo "
  3. oracle soft nproc 65535
  4. oracle hard nproc 65535
  5. oracle soft nofile 65535
  6. oracle hard nofile 65535
  7. oracle soft stack 10240
  8. oracle hard stack 32768
  9. " >>/etc/security/limits.conf
复制代码

配置pam

  1. echo "session required pam_limits.so">>/etc/pam.d/login
  2. echo "session required pam_limits.so">>/etc/pam.d/su
复制代码

  1. cat /etc/pam.d/login|grep pam_limits
复制代码

配置ssh快速登录

  1. vi /etc/ssh/sshd_config
  2. UseDNS no
复制代码

解压安装包

往/tmp下上传oralce安装包

  1. su root
  2. cd /tmp
  3. ls -lh
  4. 给权限
  5. chmod 777 LINUX.X64_193000_db_home.zip
复制代码

解压:

  1. su - oracle
  2. cd /tmp
  3. unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
复制代码

图形界面安装

使其他用户可以调用图形界面

设置隧道:

切换到root用户:

  1. su root
  2. xhost +
复制代码

我电脑的ip地址为:192.168.3.148

  1. su - oracle
  2. export DISPLAY=192.168.3.148:0.0
  3. $ORACLE_HOME/runInstaller
复制代码

成功打开图形界面!

在图形界面安装

密码:123456

等待安装:

安装完毕!

创建监听器

  1. su - oracle
  2. $ORACLE_HOME/bin/netca
复制代码

  1. netca
复制代码

创建数据库

  1. su - oracle
  2. dbca
复制代码

等待安装:

使用sqlplus连接

  1. su - oracle
  2. sqlplus / as sysdba
复制代码

  1. sqlplus system/123456
复制代码

  1. SQL>
  2. create user school identified by school123;
复制代码

  1. sqlplus system/123456
  2. 建立create session权限
  3. GRANT CREATE SESSION TO school;
  4. sqlplus school/school123
复制代码

使用java进行连接测试

上传java安装包

📎jdk-8u191-linux-x64.tar.gz

📎jdk-8u221-linux-x64.tar.gz

安装java

  1. mkdir /usr/java/
  2. tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/java/
复制代码

配置环境变量

  1. # 配置环境变量
  2. echo '
  3. export JAVA_HOME=/usr/java/jdk1.8.0_191
  4. export PATH=$JAVA_HOME/bin:$PATH
  5. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  6. ' >> /etc/profile
  7. # 生效环境变量
  8. source /etc/profile
复制代码

编写程序并执行

  1. pwd
  2. vi OracleConnectionExample.java
复制代码

这里的servicename:

  1. lsnrctl status
复制代码

  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.Statement;
  5. public class OracleConnectionExample {
  6. public static void main(String[] args) {
  7. // 数据库连接信息
  8. String url = "jdbc:oracle:thin:@localhost:1521:ora19c";
  9. String username = "system";
  10. String password = "123456";
  11. try {
  12. // 加载Oracle驱动
  13. Class.forName("oracle.jdbc.driver.OracleDriver");
  14. // 建立数据库连接
  15. Connection connection = DriverManager.getConnection(url, username, password);
  16. // 创建Statement对象
  17. Statement statement = connection.createStatement();
  18. // 执行SQL查询
  19. String sql = "SELECT * FROM v$version";
  20. ResultSet resultSet = statement.executeQuery(sql);
  21. // 处理查询结果
  22. while (resultSet.next()) {
  23. // 输出数据库版本
  24. String name = resultSet.getString("BANNER_FULL");
  25. System.out.println("version:" + name);
  26. }
  27. // 关闭资源
  28. resultSet.close();
  29. statement.close();
  30. connection.close();
  31. } catch (Exception e) {
  32. e.printStackTrace();
  33. }
  34. }
  35. }
复制代码

执行:

  1. # 加载Oraclejdbc驱动并编译java代码
  2. javac -cp $ORACLE_HOME/jdbc/lib/ojdbc8.jar OracleConnectionExample.java
  3. # 执行java代码
  4. java -cp /u01/app/oracle/product/19.0.0/dbhome_1/jdbc/lib/ojdbc8.jar:. OracleConnectionExample
复制代码

解决重启后oracle未启动的问题?

当在 Linux 系统上安装完 Oracle 后测试连接正常,但重启 Linux 系统后无法连接 Oracle 数据库

1. 检查 Oracle 服务是否启动

Oracle 数据库服务在 Linux 系统重启后可能没有自动启动,需要手动启动或者配置为开机自启。

手动启动 Oracle 服务

  • 以 Oracle 用户登录系统:
  1. su - oracle
复制代码

  • 启动监听服务:
  1. lsnrctl start
复制代码

  • 启动数据库实例:
  1. sqlplus / as sysdba
  2. SQL> startup
  3. SQL> exit
复制代码

配置 Oracle 服务开机自启

编辑 /etc/oratab 文件,确保数据库实例对应的启动标志为 Y,例如:

  1. ORCL:/u01/app/oracle/product/19.3.0/dbhome_1:Y
复制代码

然后创建一个启动脚本 /etc/init.d/oracle,内容如下(根据实际情况修改 ORACLE_HOME 和 ORACLE_SID):

  1. #!/bin/bash
  2. # chkconfig: 345 99 10
  3. # description: Oracle auto start-stop script.
  4. #
  5. # Set ORA_HOME to be equivalent to the $ORACLE_HOME
  6. # from which you wish to execute dbstart and dbshut;
  7. #
  8. # Set ORA_OWNER to the user id of the owner of the
  9. # Oracle database in ORA_HOME.
  10. ORA_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
  11. ORA_OWNER=oracle
  12. if [ ! -f $ORA_HOME/bin/dbstart ]
  13. then
  14. echo "Oracle startup: cannot start"
  15. exit
  16. fi
  17. case "$1" in
  18. 'start')
  19. # Start the Oracle databases:
  20. # The following command assumes that the oracle login
  21. # will not prompt the user for any values
  22. # Remove "&" if you don't want startup as a background process.
  23. su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
  24. su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" &
  25. touch /var/lock/subsys/oracle
  26. echo "Oracle Start Successful"
  27. ;;
  28. 'stop')
  29. # Stop the Oracle databases:
  30. # The following command assumes that the oracle login
  31. # will not prompt the user for any values
  32. su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
  33. su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
  34. rm -f /var/lock/subsys/oracle
  35. echo "Oracle Stop Successful"
  36. ;;
  37. *)
  38. echo "Usage: `basename $0` {start|stop}"
  39. exit 1
  40. esac
  41. exit 0
复制代码

赋予脚本执行权限:

  1. chmod +x /etc/init.d/oracle
复制代码

添加到系统服务并设置开机自启:

  1. chkconfig --add oracle
  2. chkconfig oracle on
复制代码

2. 检查环境变量是否正确设置

在 Linux 系统重启后,Oracle 相关的环境变量可能没有正确加载。可以将环境变量配置到用户的 .bashrc 或 /etc/profile 文件中。

编辑 ~/.bashrc 文件,添加以下内容(根据实际情况修改):

  1. export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
  2. export PATH=$ORACLE_HOME/bin:$PATH
  3. export ORACLE_SID=ORCL
复制代码

使配置生效:

  1. source ~/.bashrc
复制代码

3. 检查监听配置文件

监听配置文件 listener.ora 可能在重启后出现问题。该文件通常位于 $ORACLE_HOME/network/admin 目录下。

检查 listener.ora 文件内容是否正确,示例如下:

  1. LISTENER =
  2. (DESCRIPTION_LIST =
  3. (DESCRIPTION =
  4. (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
  5. (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  6. )
  7. )
复制代码

确保 HOST 字段填写的是正确的主机名或 IP 地址。修改配置文件后,重启监听服务:

  1. lsnrctl stop
  2. lsnrctl start
复制代码

4. 检查防火墙设置

防火墙可能会阻止对 Oracle 数据库端口(默认是 1521)的访问。可以临时关闭防火墙或者开放相应的端口。

临时关闭防火墙

  1. systemctl stop firewalld
复制代码

开放 1521 端口

  1. firewall-cmd --zone=public --add-port=1521/tcp --permanent
  2. firewall-cmd --reload
复制代码

5. 检查数据库状态

使用以下命令检查数据库的状态:

  1. sqlplus / as sysdba
  2. SQL> select status from v$instance;
复制代码

如果数据库状态不正常,可以根据具体情况进行相应的处理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行