Linux下安装Oracle数据库之一路报错

系统环境:

Linux:CentOS-8  x86-64

CentOS8下载:http://isoredirect.centos.org/centos/8/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso

Oracle数据库版本:19.3

Oracle数据库下载:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#19c

关于如何在虚拟机安装Linux系统操作非常简单,这里不再赘述!

接下来开始安装Oracle数据库!

1、打开官方安装文档

可以看到数据的安装建议是内存2GB,集群的安装是8GB

2、下载一些oracle数据库依赖的包

在联网的情况下可以将yum设置为阿里云镜像然后通过yum命令去下载,如果没有网络就把linux的iso镜像文件挂载为yum的下载源,其实将iso文件解压后会发现,在iso镜像文件中包含了绝大多数环境需要的依赖包(rpm文件)

依赖包下载方式一:配置aliyun镜像,通过yum命令下载

进入 /etc/yum.repos.d,将CentOS-AppStream.repo、CentOS-Base.repo、CentOS-Extras.repo三个文件中的

mirrorlist、baseurl注释掉,然后添加

baseurl=http://mirrors.aliyun.com/centos/$releasever/AppStream/$basearch/os/

三个文件修改完后执行

yum clean all
yum makecache

此时便可以通过  yum install 包名  来下载

 

依赖包下载方式二:将yum源挂载到本地iso文件

a.将安装Linux的镜像文件上传到linux中,比如放在 /usr/local下

b.创建挂载目录:mkdir /media/cdrom

c.将iso文件挂载到挂载目录:mount -o loop -t iso9660 /usr/local/CentOS-8-x86_64-1905-dvd1.iso  /media/cdrom

d.将Centos-Base.repo进行重命名备份

cd /etc/yum.repos.d/
mv Centos-Base.repo Centos-Base.repo.back

e.在Centos-Media.repo中添加配置

vim /etc/yum.repos.d/Centos-Media.repo

[c8-media-BaseOS]
name=CentOS-BaseOS-$releasever - Media
baseurl=file:///media/cdrom/BaseOS  #挂载目录
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[c8-media-AppStream]
name=CentOS-AppStream-$releasever - Media
baseurl=file:///media/cdrom/AppStream #挂载目录
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

f.重新加载yum

yum clean all
yum makecache

之后便可以通过yum install 下载

可以去这个网站手动下载一些依赖包

https://pkgs.org/download/compat-libcap1 

注意,通过yum下载后是自动安装的,如果是从网站下载的rpm文件,则需要手动导入linux后使用rpm去安装这些软件包。如下:

我下载了一些rpm文件放在了 /usr/lib 下,然后在该文件夹中新建一个脚本 vim /usr/lib/myrpm,脚本内容如下:

cd /usr/lib
# rpm -ipv 软件包的完整名字
rpm -ipv compat-libstdc++-33-3.2.3-72.el7.x86_64.rpm
rpm -ipv compat-libcap1-1.10-7.el7.x86_64.rpm
rpm -ipv platform-python-3.6.8-15.1.el8.x86_64.rpm

然后执行该脚本:sh /usr/lib/myrpm

其中,ipv是rpm的一些可选指令,i代表install、p代表package、v代表version,意思就是安装指定版本的软件包。

这种通过rpm手动安装软件包的方式有一个致命的缺点:无法解决软件包之间的依赖问题。意思就是你安装一个软件包A时可能需要先安装另外一个软件包B,因为软件包A依赖软件包B的环境,但是软件包B又可能依赖软件包C,这样就需要手动下载很多软件包。而yum安装则可以自动解决软件包之间的依赖问题,它会自动下载相关依赖。

3、创建用户和组

需要创建两个组,一个是主要的组oinstall、一个是次要的组dba

groupadd oinstall

groupadd dba

创建用户 oracle,并将组添加到oracle用户

useradd -g oinstall -G dba oracle

修改oracle用户密码

passwd oracle

密码最少为8为,不可以含有特定词汇如oracle

4、配置

配置Oracle软件安装用户的资源限制

vim /etc/security/limits.conf

加入:

oracle soft nofile 1024
oracle hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft stack 10240
oracle hard stack 32768

更改linux 的内核参数:如果使用RPM方式安装的oracle,则会自动创建该参数,不需要更改。此步骤也可以在安装完成之后进行。

sudo vim /etc/sysctl.d/97-oracle-database-sysctl.conf

加入:

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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

保存后退出

让该文件立即生效

/sbin/sysctl --system

确认值是否正确

/sbin/sysctl -a

在oracle用户下配置环境变量:

sudo vim ~/.bash_profile

加入:

ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1
ORACLE_SID=baifan
PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH LD_LIBRARY_PATH

使该文件立即生效:

source ~/.bash_profile

5、开始安装oracle

直接来到第11步骤

执行如下指令:

mkdir -p /u01/app/oracle
mkdir -p /u01/app/oraInventory
chown -R oracle:oinstall /u01/app/oracle
chown -R oracle:oinstall /u01/app/oraInventory
chmod -R 775 /u01/app

mkdir -p /u01/app/oracle/product/19.0.0/dbhome_1
cd /u01/app/oracle/product/19.0.0/dbhome_1
#解压下载好的oracle的zip文件,我的是放在了/usr/local/LINUX.X64_193000_db_home.zip
unzip -q /usr/local/LINUX.X64_193000_db_home.zip 

 执行解压命令后会自动解压到/u01/app/oracle/product/19.0.0/dbhome_1目录下,所以一定要按照官方文档来创建文件夹

 

此时切换到oracle用户下,注意不可以在root下是使用 su oracle来切换,要使用系统右上角的切换用户来切换,然后登录oracle用户

然后执行:

cd /u01/app/oracle/product/19.0.0/dbhome_1

./runInstaller

 此时报错:

Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.

解决:

切换到root下(此时可以使用su root切换,因为登录状态依然在oracle下)执行:

xdpyinfo

记下name of display的值

如果提示命令不存在就安装;

yum -y install xdpyinfo

然后切换回oracle用户:su oracle

执行:export DISPLAY=:0  #修改display的值

           echo $DISPLAY  #查看是否修改成功

然后执行:./runInstaller

报错:You must not be logged in as root to run this tool

意思就是你不可以在root用户下来执行./runInstaller。可我是在oracle用户下啊。。

解决:更改runInstaller脚本所属用户组为oracle用户下的oinstall组

sudo chown oracle:oinstall runInstaller

再次执行./runInstall

解决:

 sudo chmod -R 755 /u01/app/oracle/product/19.0.0/dbhome_1  #将该目录下的所有文件赋予 读和执行(755)的权限

 sudo chown oracle:oinstall /u01/app/oracle/product/19.0.0/dbhome_1 #将该目录的所有者改为oracle用户和oinstall组

然后再次执行:./runInstaller

这下可以弹出安装界面了:

中文乱码了无语。。

解决:修改系统的 字符集编码

sudo vim /etc/locale.conf

修改为:LANG="en_US.UTF-8"

source /etc/locale.conf #使其立即生效

再次执行:./runInstaller

报错了,点击No退出界面

原因:无法识别Linux 的版本

解决:

export CV_ASSUME_DISTID=CentOS-8

再次执行:./runInstaller

可以看到弹出了GUI安装界面

选择第一项代表:安装oracle的同时创建一个实例,即创建一个数据库实例。这也会同时默认创建一个监听。oracle数据库的使用必须具备实例和监听两项。

选择第二项代表:只安装oracle软件。创建数据库实例以及创建监听可以在后期进行。

我这里选择第一项进行安装。

选择第一项回车

为数据库设置密码,其他默认。密码需要以大写字母开头且同时包含数字,最少8位,最长128位。数据库名字是orcl,默认即可。

回车

选择yes

回车 进行配置

配置必须以root身份进行:

方式一:选择第一个。然后输入root用户的密码。回车

方式二:选择第二个。代表在oracle用户下使用sudo命令进行。密码位oracle用户的密码。回车

由于我们是在oracle用户下进行安装,所以这里我选择了第二个。

回车

此时由于看不到下面的选项,可以先回车,如果使exit则选择No。然后使用键盘的左键来移动选项,再次回车后便进入了下一步

当我点击ok后悲剧发生了。。。

自动退出了安装界面。。。

上面错误的意思是某个文件权限不够

解决:

这次以为可以了,没想到跑了一会:

按照提示打开报错日志:在 /tmp下

打开后用记事本看下具体报错:

可以看到还是权限问题。原本以为是root.sh这个脚本没有执行的权限。后来即使改成root用户拥有该脚本还是无济于事。然后注意到自动退出安装界面后的报错:从上一个截图可以看出,在执行root脚本时会自动备份一些文件到另外一个文件夹,就是这个操作没有权限。

解决:

执行

sudo chmod -R 777 /u01/app/oracle/product/19.0.0/dbhome_1/*
sudo chown oracle:oinstall /u01/app/oracle/product/19.0.0/dbhome_1/*

然后再次 ./runInstaller:

同样是权限问题

解决:重新开一个命令窗口,直接将bin目录下的所有文件都更改权限

sudo chmod -R 777 /u01/app/oracle/product/19.0.0/dbhome_1/bin/*
sudo chown oracle:oinstall  /u01/app/oracle/product/19.0.0/dbhome_1/bin/*

 改完之后返回安装界面,点击 Retry按钮:

之后我的又报错该目录lib下的文件没有权限,解决方法和上面一样。修改时,如果是具体文件报错,那么就去掉路径后面的 /*  ,否则修改后点击Retry会不成功。比如说:

这样的错误我这里连续遇到了好几次。解决方法都一样。

然后在Link binaries那一步等待了很长时间。

6、创建数据库实例

如果和我一样在开始的第一步安装时选择了同时创建一个数据库实例,那么可以跳过这一步以及下一步(7、创建监听)。

这里为了演示如何创建新的数据库实例。

在oracle用户下输入:

[oracle@localhost ~]$ dbca

可以看到弹出一个GUI界面:

选择第一项 回车

选择第二项回车

重新写一个自己喜欢的名字  回车

回车

连续回车到以下步骤,取消勾选,因为我们还没有创建监听 回车

连续回车到以下步骤,为不同账户创建密码,可以一样,也可以不一样。为了好记一些,这里将不同账户二点密码都创建相同的。首先字母大写。

继续回车等待创建完成

7、创建监听

如果和我一样在开始的第一步安装时选择了同时安装一个数据库实例,那么就默认创建了一个名字为LISTENER的监听。所以可以直接跳过这一步。

这里为了演示如何创建监听。

oracle的正常运行需要同时启动监听和启动实例,关闭也是如此。不同于mysql。

[oracle@localhost ~]$ netca

回车后可以看到弹出了GUI界面。然后一直next就行,到命名监听器名字的那一步需要换一个名字,因为LISTENER已经存在了。

从该界面也可以看出还有其他功能,可以自行研究。

8、数据库操作

启动实例--->启动监听--->关闭监听--->关闭实例

首先查看监听状态:

[oracle@localhost ~]$ lsnrctl status

可以看到没有监听

启动oracle实例:

[oracle@localhost ~]$ sqlplus / as sysdba
SQL> startup

 此时 报错:

到该目录查看后并没有该文件,于是去/u01/app/oracle/admin/orcl/pfile下将其中的init.ora.3162020133457文件重命名并复制一份到/u01/app/oracle/product/19.0.0/dbhome_1/dbs/下,需要命名的名字其实是init<ORACLE_SID>.ora,通过echo $ORACLE_SID来查看

[oracle@localhost ~]$ echo $ORACLE_SID
baifan
[oracle@localhost ~]$ cp /u01/app/oracle/admin/orcl/pfile/init.ora.3162020133457 /u01/app/oracle/product/19.0.0/dbhome_1/dbs/initbaifan.ora
[oracle@localhost ~]$

然后再次执行启动oracle实例的命令后报错:

ORA-00845: MEMORY_TARGET not supported on this system

原因: MEMORY_TARGET这个值的大小比linux中/dev/shm的值大,所以要增大/dev/shm的值。MEMORY_TARGET这个值与之前sudo vim /etc/sysctl.d/97-oracle-database-sysctl.conf中的kernel.shmmax = 4294967295有关,所以也可以在满足oracle要求的情况下将此值设置小一点。

[oracle@localhost ~]$ sudo vim /etc/fstab
[sudo] password for oracle: 

 加入:

如果原来有这一项的话直接修改其size大小值

tmpfs              /dev/shm            tmpfs   defaults,size=6G       0 0

 重新挂载使shm生效:

[oracle@localhost ~]$ sudo mount -o remount /dev/shm

再次执行oracle实例启动命令 :

此时成功启动实例

启动oracle实例的命令也可以为:

[oracle@localhost ~]$ sqlplus /nolog

SQL>conn / as sysdba

SQL>startup

SQL>exit

接下来启动监听:

[oracle@localhost ~]$ lsnrctl start

 

查看监听状态:

关闭步骤:关闭监听->关闭实例

关闭监听:

[oracle@localhost ~]$ lsnrctl stop

关闭实例:

[oracle@localhost ~]$ sqlplus / as sysdba

SQL> shutdown immediate;

SQL> exit

 

9、删除oracle实例

创建一个oracle实例一般需要占用很大的空间,我的最起码是3G以上,所以可能导致在启动监听或者启动实例时报错空间不够无法执行程序。所以,空间有限制的情况下不要 安装过多实例。以下介绍如何删除多余的实例:

[oracle@localhost ~]$ dbca

执行以上命令后回车,选择第三项 回车

可以看到我这里有之前创建的两个实例。选择要删除的实例并输入oracle用户以及密码。这里看不全下面的用户名以及密码选项。先把光标移动到第一行,输入用户名:oracle,接着按一下Tab键会跳到第二行,然后输入oracle用户的密码即可。接着回车 选择yes继续回车。然后一直到finsin即可。

10、rpm方式安装oracle

可以从官网看到从18.3以及19.3版本的oracle都提供了rpm包以及相应的安装方式

11、SQL Developer安装

这是一款oracle官方提供的oracle数据库图形化管理界面

https://www.oracle.com/tools/downloads/sqldev-v192-downloads.html

这里选择Linux RPM下载

将该包上传到Linux下进行安装:我这里将该RPM包放在了 /u01目录下。注意需要JDK1.8环境。

[oracle@localhost ~]$ sudo rpm -i /u01/sqldeveloper-19.2.1.247.2212.noarch.rpm
[sudo] password for oracle: 

[oracle@localhost ~]$ sqldeveloper

之后便可以看到弹出了安装的GUI界面,注意执行sqldeveloper一定要在oracle用户下执行,否则会报错。

等待安装进度条的过程之中出现如下界面,选择No即可

 

安装完之后界面:可以看到Databases Detected下自动检测到了已经安装的数据库实例

创建一个数据库连接:需要提前启动实例以及监听!!!

点击数据库实例ORCL后会发现左边的连接栏Oracle Connecion中多了一个ORCL连接,点击该连接的“+”号,然后输入创建ORCL实例时的密码即可连接成功。注意Username不是ORCL,而是system

创建成功后:

 

当然也可以手动去创建一个自由命名的连接:

注意:用户名为system,密码为创建oracle实例时的密码,SID为实例名称orcl。

关于以上的用户名以及密码并不是之前oracle版本的scott / tiger,通过select username from dba_users;查询默认用户可以看到没有scott。scott用户只是oracle之前版本的一个用户案例,并不是一定要是这个名字。用户可以自己创建。重要的是监听以及实例的启动。

暂且就写到这里吧,以后在学习的过程中再记录吧!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

那个小白猿

讨杯可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值