目录
编辑
安装
安装前检查配置:
安装依赖
创建用户和组
关闭防火墙
关闭selinux
创建目录
配置环境变量
配置资源限制
配置pam
配置ssh快速登录
解压安装包
图形界面安装
使其他用户可以调用图形界面
在图形界面安装
创建监听器
创建数据库
使用sqlplus连接
使用java进行连接测试
安装java
配置环境变量
编写程序并执行
navicat连接测试
解决重启后oracle未启动的问题?
1. 检查 Oracle 服务是否启动
2. 检查环境变量是否正确设置
3. 检查监听配置文件
4. 检查防火墙设置
5. 检查数据库状态
安装
安装前检查配置:
挂载50g盘:
- lvcreate -L 49.8G -n oralv oravg
复制代码
- mkfs.xfs /dev/oravg/oralv
复制代码
- 复制分区表
- cp /etc/fstab /etc/fstab.bak
- vi /etc/fstab
- 内容为:
- /dev/oravg/oralv /u01 xfs defaults 0 0
- cat /etc/fstab
复制代码
系统运行级别
- grep MemTotal /proc/meminfo
- cat /etc/redhat-release
复制代码
安装依赖
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
- bc
- binutils
- compat-libcap1
- compat-libstdc++
- dtrace-modules
- dtrace-modules-headers
- dtrace-modules-provider-headers
- dtrace-utils
- elfutils-libelf
- elfutils-libelf-devel
- fontconfig-devel
- glibc
- glibc-devel
- ksh
- libaio
- libaio-devel
- libdtrace-ctf-devel
- libX11
- libXau
- libXi
- libXtst
- libXrender
- libXrender-devel
- libgcc
- librdmacm-devel
- libstdc++
- libstdc++-devel
- libxcb
- make
- smartmontools
- sysstat
复制代码
检查是否有缺失的:
- 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
复制代码
检查依赖包是否安装:
- 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
复制代码
提示缺失compat-libstdc++,这里用上传安装包的安装上去:
- ls
- rpm -ivh compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
复制代码
再次检查,提示没有no package,说明依赖包安装成功!
- 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
复制代码
创建用户和组
- groupadd -g 54321 oinstall
- groupadd -g 54322 dba
- groupadd -g 54323 oper
- useradd -u 54321 -g oinstall -G dba,oper oracle
复制代码
关闭防火墙
- systemctl stop firewalld.service
- systemctl disable firewalld.service
复制代码
关闭selinux
- #临时关闭
- setenforce 0
- #永久关闭
- vi /etc/selinux/config
- SELINUX=enforcing
- 改成
- SELINUX=disabled
复制代码
创建目录
- mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
- -- 给组,给目录权限
- chown -R oracle:oinstall /u01/
- chmod -R 775 /u01/
复制代码
配置环境变量
在/home/oracle/.bash_profile文件中添加以下内容
- su - oracle
- vim /home/oracle/.bash_profile
复制代码- export PATH
- export ORACLE_BASE=/u01/app/oracle
- export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
- export ORACLE_SID=ora19c
- export PATH=$ORACLE_HOME/bin:$PATH
- export TNS_ADMIN=$ORACLE_HOME/network/admin
- export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32:/lib/usr/lib:/usr/local/lib
- umask 022
复制代码
使命令生效:
- source /home/oracle/.bash_profile
复制代码
配置资源限制
- sed -i 's/* soft nproc 4096/* soft nproc 65535/' /etc/security/limits.d/20-nproc.conf
- echo "
- oracle soft nproc 65535
- oracle hard nproc 65535
- oracle soft nofile 65535
- oracle hard nofile 65535
- oracle soft stack 10240
- oracle hard stack 32768
- " >>/etc/security/limits.conf
复制代码
配置pam
- echo "session required pam_limits.so">>/etc/pam.d/login
- echo "session required pam_limits.so">>/etc/pam.d/su
复制代码
- cat /etc/pam.d/login|grep pam_limits
复制代码
配置ssh快速登录
- vi /etc/ssh/sshd_config
- UseDNS no
复制代码
解压安装包
往/tmp下上传oralce安装包
- su root
- cd /tmp
- ls -lh
- 给权限
- chmod 777 LINUX.X64_193000_db_home.zip
复制代码
解压:
- su - oracle
- cd /tmp
- unzip LINUX.X64_193000_db_home.zip -d $ORACLE_HOME
复制代码
图形界面安装
使其他用户可以调用图形界面
设置隧道:
切换到root用户:
我电脑的ip地址为:192.168.3.148
- su - oracle
- export DISPLAY=192.168.3.148:0.0
- $ORACLE_HOME/runInstaller
复制代码
成功打开图形界面!
在图形界面安装
密码:123456
等待安装:
安装完毕!
创建监听器
- su - oracle
- $ORACLE_HOME/bin/netca
复制代码
创建数据库
等待安装:
使用sqlplus连接
- su - oracle
- sqlplus / as sysdba
复制代码
- SQL>
- create user school identified by school123;
复制代码
- sqlplus system/123456
- 建立create session权限
- GRANT CREATE SESSION TO school;
- sqlplus school/school123
复制代码
使用java进行连接测试
上传java安装包
📎jdk-8u191-linux-x64.tar.gz
📎jdk-8u221-linux-x64.tar.gz
安装java
- mkdir /usr/java/
- tar -zxvf jdk-8u191-linux-x64.tar.gz -C /usr/java/
复制代码
配置环境变量
- # 配置环境变量
- echo '
- export JAVA_HOME=/usr/java/jdk1.8.0_191
- export PATH=$JAVA_HOME/bin:$PATH
- export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
- ' >> /etc/profile
- # 生效环境变量
- source /etc/profile
复制代码
编写程序并执行
- pwd
- vi OracleConnectionExample.java
复制代码
这里的servicename:
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.ResultSet;
- import java.sql.Statement;
- public class OracleConnectionExample {
- public static void main(String[] args) {
- // 数据库连接信息
- String url = "jdbc:oracle:thin:@localhost:1521:ora19c";
- String username = "system";
- String password = "123456";
- try {
- // 加载Oracle驱动
- Class.forName("oracle.jdbc.driver.OracleDriver");
- // 建立数据库连接
- Connection connection = DriverManager.getConnection(url, username, password);
- // 创建Statement对象
- Statement statement = connection.createStatement();
- // 执行SQL查询
- String sql = "SELECT * FROM v$version";
- ResultSet resultSet = statement.executeQuery(sql);
- // 处理查询结果
- while (resultSet.next()) {
- // 输出数据库版本
- String name = resultSet.getString("BANNER_FULL");
- System.out.println("version:" + name);
- }
- // 关闭资源
- resultSet.close();
- statement.close();
- connection.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
复制代码
执行:
- # 加载Oraclejdbc驱动并编译java代码
- javac -cp $ORACLE_HOME/jdbc/lib/ojdbc8.jar OracleConnectionExample.java
- # 执行java代码
- java -cp /u01/app/oracle/product/19.0.0/dbhome_1/jdbc/lib/ojdbc8.jar:. OracleConnectionExample
复制代码
navicat连接测试
解决重启后oracle未启动的问题?
当在 Linux 系统上安装完 Oracle 后测试连接正常,但重启 Linux 系统后无法连接 Oracle 数据库
1. 检查 Oracle 服务是否启动
Oracle 数据库服务在 Linux 系统重启后可能没有自动启动,需要手动启动或者配置为开机自启。
手动启动 Oracle 服务
- sqlplus / as sysdba
- SQL> startup
- SQL> exit
复制代码
配置 Oracle 服务开机自启
编辑 /etc/oratab 文件,确保数据库实例对应的启动标志为 Y,例如:
- ORCL:/u01/app/oracle/product/19.3.0/dbhome_1:Y
复制代码
然后创建一个启动脚本 /etc/init.d/oracle,内容如下(根据实际情况修改 ORACLE_HOME 和 ORACLE_SID):
- #!/bin/bash
- # chkconfig: 345 99 10
- # description: Oracle auto start-stop script.
- #
- # Set ORA_HOME to be equivalent to the $ORACLE_HOME
- # from which you wish to execute dbstart and dbshut;
- #
- # Set ORA_OWNER to the user id of the owner of the
- # Oracle database in ORA_HOME.
- ORA_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
- ORA_OWNER=oracle
- if [ ! -f $ORA_HOME/bin/dbstart ]
- then
- echo "Oracle startup: cannot start"
- exit
- fi
- case "$1" in
- 'start')
- # Start the Oracle databases:
- # The following command assumes that the oracle login
- # will not prompt the user for any values
- # Remove "&" if you don't want startup as a background process.
- su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl start"
- su - $ORA_OWNER -c "$ORA_HOME/bin/dbstart $ORA_HOME" &
- touch /var/lock/subsys/oracle
- echo "Oracle Start Successful"
- ;;
- 'stop')
- # Stop the Oracle databases:
- # The following command assumes that the oracle login
- # will not prompt the user for any values
- su - $ORA_OWNER -c "$ORA_HOME/bin/dbshut $ORA_HOME"
- su - $ORA_OWNER -c "$ORA_HOME/bin/lsnrctl stop"
- rm -f /var/lock/subsys/oracle
- echo "Oracle Stop Successful"
- ;;
- *)
- echo "Usage: `basename $0` {start|stop}"
- exit 1
- esac
- exit 0
复制代码
赋予脚本执行权限:
- chmod +x /etc/init.d/oracle
复制代码
添加到系统服务并设置开机自启:
- chkconfig --add oracle
- chkconfig oracle on
复制代码
2. 检查环境变量是否正确设置
在 Linux 系统重启后,Oracle 相关的环境变量可能没有正确加载。可以将环境变量配置到用户的 .bashrc 或 /etc/profile 文件中。
编辑 ~/.bashrc 文件,添加以下内容(根据实际情况修改):
- export ORACLE_HOME=/u01/app/oracle/product/19.3.0/dbhome_1
- export PATH=$ORACLE_HOME/bin:$PATH
- export ORACLE_SID=ORCL
复制代码
使配置生效:
3. 检查监听配置文件
监听配置文件 listener.ora 可能在重启后出现问题。该文件通常位于 $ORACLE_HOME/network/admin 目录下。
检查 listener.ora 文件内容是否正确,示例如下:
- LISTENER =
- (DESCRIPTION_LIST =
- (DESCRIPTION =
- (ADDRESS = (PROTOCOL = TCP)(HOST = your_hostname)(PORT = 1521))
- (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
- )
- )
复制代码
确保 HOST 字段填写的是正确的主机名或 IP 地址。修改配置文件后,重启监听服务:
- lsnrctl stop
- lsnrctl start
复制代码
4. 检查防火墙设置
防火墙可能会阻止对 Oracle 数据库端口(默认是 1521)的访问。可以临时关闭防火墙或者开放相应的端口。
临时关闭防火墙
开放 1521 端口
- firewall-cmd --zone=public --add-port=1521/tcp --permanent
- firewall-cmd --reload
复制代码
5. 检查数据库状态
使用以下命令检查数据库的状态:
- sqlplus / as sysdba
- SQL> select status from v$instance;
复制代码
如果数据库状态不正常,可以根据具体情况进行相应的处理。