因为公司不能连外网,所以只能使用安装包离线安装oracle19c,所以就去网上找了方法,记录一下,也记录一下遇到的问题:
(1)关闭系统防火墙(如外网环境不能关闭防火墙自行开放相关需要使用的端口即可)
systemctl stop firewalld
关闭开机自启动
systemctl disable firewalld
(2)关闭selinux,修改文件设置
vim /etc/selinux/config
SELINUX=disabled
查看:
getenforce
关闭selinux,命令设置:
setenforce 0
(3)安装oracle需要的依赖(已通过互联网提前下载并制作yum仓库,配置一个离线yum源直接安装即可),这个是源来网友的,我写文章的时候还可以用
链接:https://pan.baidu.com/s/1zg6DUG0BTxY7H63lj78CrA 提取码:2ucb
unzip base.zip
创建离线yum源,备份原有repo文件,创建local.repo文件
创建离线yum源
进入cd /etc/yum.repos.d/
备份原有repo文件
tar -zcvf repobak.tar.gz CentOS-*
删除原有repo,然后依次执行一下命令创建local.repo
rm -rf CentOS-*
echo "[local]" > /etc/yum.repos.d/local.repo
echo "name=local" >> /etc/yum.repos.d/local.repo
echo "enable=1" >> /etc/yum.repos.d/local.repo
echo "baseurl=file:///root/base" >> /etc/yum.repos.d/local.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/local.repo
yum clean all
(4)安装oracle-database-preinstall
链接:https://pan.baidu.com/s/11TGhQ8H95umuV5PRUrfEcw 提取码:3yru
cd 到oracle目录
yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
提示没有Requires: libstdc++-devel和Requires: glibc-devel说明没有安装gcc和g++
1、安装 gcc (如果已经安装 gcc ,忽略此步骤。):
以下命令我已经下载好了gcc和g++ 放到/root/software/tqjklib/common/下
进入到/root/software/tqjklib/common/gcc
rpm -Uvh *.rpm --nodeps --force
2、安装 gcc-c++ (如果已经安装 gcc-c++ ,忽略此步骤。):
进入到/root/software/tqjklib/common/g++
rpm -Uvh *.rpm --nodeps --force
装完再执行:
yum -y localinstall oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm
二、安装配置Oracle 19c
(1)安装Oracle 19c
yum -y localinstall oracle-database-ee-19c-1.0-1.x86_64.rpm
(2)初始化Oracle数据库,这个过程一般比较漫长
/etc/init.d/oracledb_ORCLCDB-19c configure
(3)配置环境变量,切换到oracle用户下
su - oracle
vim .bash_profile
export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1
export PATH=$PATH:/opt/oracle/product/19c/dbhome_1/bin
export ORACLE_SID=ORCLCDB
source .bash_profile
同时将以上信息追加到/etc/profile文件中
source /etc/profile
(4)登陆oracle数据库
sqlplus / as sysdba
查看已有的pdb
show pdbs
exit退出
配置监听文件
vim /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
最后追加
ORCLPDB1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(POST = 1521))
(CONNTECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLPDB1) # show pdbs查询出的pdb名称
)
)
进入oracle
su - oracle
sqlplus / as sysdba
alter session set container=ORCLPDB1;
创建用户和授权略。。。
遇到的问题:
如果用navicat连接,报错ORA-28040: No matching authentication protocol
说明本机客户端版本比较低,需修改sqlnet.ora
vim /opt/oracle/product/19c/dbhome_1/network/admin/sqlnet.ora
加入以下语句:
SQLNET.ALLOWED_LOGON_VERSION_SERVER=10
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=10
如果连接提示密码错误,那就关闭重启,监听也关闭重启,再不行修改两次相同密码应该就行了。
Alter user 用户名 identified by 密码。
报错Oracle Net Services configuration failed
解决方法:应该是更改过hostname,导致listener.ora里的hostname和本机hostname不一致,因为安装时默认是localhost,所以把本机hostname全部改为localhost即可
1.修改配置文件 /etc/hosts和/etc/hostname
hosts原本应该是这样:
2.hostnamectl命令
hostnamectl set-hostname localhost
3.hostname命令进行临时更改
hostname localhost
4.使用hostname查看当前hostname
这个问题真的奇葩,因为我华为云的hostname不是localhost,每次我改了之后就正常了,结果重启服务器之后hostname又给我改回去了,为此我还跟华为云客服battle了一天。