安装
安装前检查配置:
挂载50g盘:
vgcreate oravg /dev/sdb
lvcreate -L 49.8G -n oralv oravg
lvscan
mkfs.xfs /dev/oravg/oralv
查看uuid
blkid
复制分区表
cp /etc/fstab /etc/fstab.bak
vi /etc/fstab
内容为:
/dev/oravg/oralv /u01 xfs defaults 0 0
cat /etc/fstab
挂载并查看
mount -a
df -Th
系统运行级别
runlevel
uname -m
grep MemTotal /proc/meminfo
cat /etc/redhat-release
df-h/tmp
free -h
df -h /u01
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
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
检查组
id 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/
ls -l /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
配置资源限制
su root
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用户:
su root
xhost +
我电脑的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
netca
创建数据库
su - oracle
dbca
等待安装:
使用sqlplus连接
su - oracle
sqlplus / as sysdba
sqlplus system/123456
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:
lsnrctl status
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 服务
- 以 Oracle 用户登录系统:
su - oracle
- 启动监听服务:
lsnrctl start
- 启动数据库实例:
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
使配置生效:
source ~/.bashrc
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)的访问。可以临时关闭防火墙或者开放相应的端口。
临时关闭防火墙
systemctl stop firewalld
开放 1521 端口
firewall-cmd --zone=public --add-port=1521/tcp --permanent
firewall-cmd --reload
5. 检查数据库状态
使用以下命令检查数据库的状态:
sqlplus / as sysdba
SQL> select status from v$instance;
如果数据库状态不正常,可以根据具体情况进行相应的处理。