系统环境:
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之前版本的一个用户案例,并不是一定要是这个名字。用户可以自己创建。重要的是监听以及实例的启动。
暂且就写到这里吧,以后在学习的过程中再记录吧!