VirtualBox中的ArchLinux安装Oracle 19C备忘

这段时间跟Oracle杆上了,有点闲余就想在各种Linux系统上安装一遍Oracle,安装过程中发现,非RedHat系列的Linux越来越契合Oracle数据库,使得Oracle安装变得越来越简单,当然生成环境首推RHEL和Solaris,还有SUSE一直与Oracle保持良好的兼容,它在安装过程中可以在软件包里选择Oracle Server Base,免得一个个去安装Oracle必须的软件包。就在最后一步【安装设置】时点击【软件】,然后再选中【Oracle服务器基础】。

安装过后,有两个文件需要更改配置:

1、/etc/profile.d/oracle.sh 或 /etc/profile.d/oracle.csh
2、/etc/sysconfig/oracle

言归正传

Oracle 19c的下载地址为:https://edelivery.oracle.com,文件名为:V981623-01.zip

 

ArchLinux向来以更新快速、简洁优雅而著称于世,刚刚拿到的版本为:archlinux-2019.04.01-x86_64.iso,安装过程比较新颖,分区、挂载、时区、启动啥的都得自己动手,系统安装过程不再啰嗦,2048M内存,2CPU,40G硬盘,ArchLinux + BIOS启动,8G swap + 32G ext4,pacstrap只需安装base和base-devel即可。VirtualBox在EFI方面一直短板,用它安装系统会经常产生许多不可思议的错误。

重启之后设置一下dhcp。

$ systemctl enable dhcpcd

设置主机名和地址,本例的hostname为linux

$ echo linux > /etc/hostname
$ cat >> /etc/hosts << EOT
127.0.0.1 localhost
::1 localhost
10.0.2.15 linux
EOT

ip地址使用ifconfig -a查看

安装常用软件:

$ pacman -S openssh sudo wget git net-tools go python
$ systemctl enable sshd
$ vi /etc/ssh/sshd_config

#更改三个参数
PermitRootLogin yes
PubkeyAuthentication yes
PasswordAuthentication yes

$ vi /etc/sudoers

#增加两行
%wheel ALL=(ALL) NOPASSWD: ALL
oracle ALL=(ALL) NOPASSWD: ALL

然后安装oracle必须的软件包

$ pacman -S unzip icu gawk gdb elfutils sysstat libstdc++5 libelf unixodbc libaio

libaio终于被REPO支持了,以前都在AUR里面,而rpm、beecrypt、ksh仍然在AUR里,需要用pacman wrapper安装,aurbuild、yaourt在N年前就已经处于停更状态,根据AUR helpers提示,可以考虑yay或aurman,参考地址:https://wiki.archlinux.org/index.php/AUR_helpers,本文以yay为例。

pacman wrapper不能使用root权限,所以新建用户:

$ groupadd vagrant
$ useradd -d /home/vagrant -m -s /bin/bash -g vagrant -G wheel vagrant
$ passwd vagrant

切换到vagrant,安装yay

$ mkdir ~/aur
$ cd ~/aur
$ git clone https://aur.archlinux.org/yay.git
$ cd yay
$ makepkg -si

安装beecrypt

$ yay -S beecrypt

这个包有点问题,它在sourceforge.net里的下载链接已经丢失,需要访问sourceforge.net取得最新的下载链接,手动下载到yay的缓存目录

$ cd ~/.cache/yay/beecrypt
$ wget https://nchc.dl.sourceforge.net/project/beecrypt/beecrypt/4.2.1/beecrypt-4.2.1.tar.gz
$ yay -S beecrypt

安装rpm和ksh

$ yay -S rpm-org ksh

这两个包的安装没有什么问题。然后建立rpm数据库

$ rpm --rebuilddb

不然oracle用rpm检查不到软件包就会产生无厘头错误:
[DBT-50000] Unable to check for available memory

最后一个软件包是glibc-2.27,因为archlinux当前使用glibc-2.28,这个版本以及后续版本不再提供Oracle需要的libpthread_nonshared.a,所以需要安装2.27版本,2.27版本的安装非常蛋疼,需要三次yay才能成功

第一次:

$ yay -S glibc-2.27

在PGP验证时输入n,因为没有sig文件,所以不需要马上验证。下一步是下载文件,这个文件来自gnu的官网,速度慢如蜗牛,所以需要用主机的迅雷下载,地址为:https://ftp.gnu.org/gnu/glibc/glibc-2.27.tar.xz,下载之后保存到主机网站的根目录,如果是IIS服务器,需要添加xz文件的mime类型:application/x-xz,然后从虚拟机再次下载。

$ cd ~/.cache/yay/glibc-2.27
$ rm glibc*
$ wget http://10.0.2.2/glibc-2.27.tar.xz

第二次:

$ yay -S glibc-2.27

这一次在PGP验证时依然输入n,下一步会自动安装依赖包,不过最终抛出PGP验证错误

第三次:

$ yay -S glibc-2.27

这一次在PGP验证时则需要输入y,接下来就是漫长的编译过程,长到看完光头森的《致胜王牌》,编译仍未完成。等到花儿也谢了的时候,终于完了,不过它与glibc-2.28冲突,所以yay把它安装到/opt/glibc-2.27/usr/lib目录下。

建立软链接:

$ ln -s /opt/glibc-2.27/usr/lib/libpthread_nonshared.a /usr/lib64/libpthread_nonshared.a

接下来设置Oracle安装环境,首先创建用户和组及文件夹

$ groupadd oinstall
$ groupadd dba
$ groupadd oper
$ groupadd backupdba
$ groupadd dgdba
$ groupadd kmdba
$ groupadd racdba
$ useradd -d /home/oracle -m -s /bin/bash -g oinstall -G dba,oper,backupdba,dgdba,kmdba,racdba oracle
$ passwd oracle

$ mkdir -p /opt/app/oracle/product/db
$ chown -R oracle:oinstall /opt/app

更改内核配置

$ cat >> /etc/sysctl.conf << EOT
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 1048576
kernel.shmmax = 4294967296
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.ip_local_port_range = 9000 65500
EOT

更改资源限制

$ cat >> /etc/security/limits.conf << EOT
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
EOT

$ cat >> /etc/pam.d/login << EOT
session required pam_limits.so
EOT

设置环境变量

$ cat >> /etc/profile << EOT
export TMP=/tmp
export TMPDIR=\$TMP
export ORACLE_HOSTNAME=linux
export ORACLE_UNQNAME=oracdb
export ORACLE_BASE=/opt/app/oracle
export ORACLE_HOME=\$ORACLE_BASE/product/db
export ORACLE_BASE_HOME=\$ORACLE_HOME
export ORACLE_SID=oracdb
export DB_UNIQUE_NAME=oracdb
export ORACLE_OWNER=oracle
export PATH=\$PATH:\$ORACLE_HOME/bin
export LD_LIBRARY_PATH=/lib:/usr/lib:\$ORACLE_HOME/lib
export CLASSPATH=\$ORACLE_HOME/jlib:\$ORACLE_HOME/rdbms/jlib
EOT

欺骗Oracle,不过好像无效,不过也能继续安装,只是一个WARNING

$ echo "RHEL 7.6" > /etc/redhat-release

重启虚拟机,切换到oracle账号,而V981623-01.zip放在主机网站根目录

$ wget http://10.0.2.15/V981623-01.zip
$ unzip -d $ORACLE_HOME V981623-01.zip

安装oracle软件

$ cd $ORACLE_HOME
$ ./runInstaller -silent  -force -noconfig -ignorePrereq \
oracle.install.option=INSTALL_DB_SWONLY \
UNIX_GROUP_NAME=oinstall \
INVENTORY_LOCATION=/opt/app/oraInventory \
ORACLE_HOME=$ORACLE_HOME \
ORACLE_BASE=$ORACLE_BASE \
oracle.install.db.InstallEdition=EE \
oracle.install.db.OSDBA_GROUP=dba \
oracle.install.db.OSOPER_GROUP=oper \
oracle.install.db.OSBACKUPDBA_GROUP=backupdba \
oracle.install.db.OSDGDBA_GROUP=dgdba \
oracle.install.db.OSKMDBA_GROUP=kmdba \
oracle.install.db.OSRACDBA_GROUP=racdba \
oracle.install.db.rootconfig.executeRootScript=true \
oracle.install.db.rootconfig.configMethod=ROOT \
oracle.install.db.config.starterdb.type=GENERAL_PURPOSE \
oracle.install.db.config.starterdb.globalDBName=oracdb \
oracle.install.db.config.starterdb.SID=oracdb \
oracle.install.db.ConfigureAsContainerDB=true \
oracle.install.db.config.PDBName=orapdb \
oracle.install.db.config.starterdb.characterSet=AL32UTF8 \
oracle.install.db.config.starterdb.memoryOption=true \
oracle.install.db.config.starterdb.memoryLimit=2048 \
oracle.install.db.config.starterdb.installExampleSchemas=true \
oracle.install.db.config.starterdb.password.ALL=123456 \
oracle.install.db.config.starterdb.managementOption=CLOUD_CONTROL \
oracle.install.db.config.starterdb.enableRecovery=true \
oracle.install.db.config.starterdb.storageType=FILE_SYSTEM_STORAGE \
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=$ORACLE_BASE/oradata \
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=$ORACLE_BASE/fast_recovery_area

配置监听

$ vi $ORACLE_HOME/assistants/netca/netca.rsp
#修改两个选项
SHOW_GUI=false
LOG_FILE=""/opt/app/oracle/cfgtoollogs/netca/netca.log""

$ netca -silent -responsefile $ORACLE_HOME/assistants/netca/netca.rsp
$ lsnrctl status

安装数据库实例

$ dbca -silent -createDatabase -responseFile NO_VALUE \
-gdbName oracdb \
-sid oracdb \
-databaseConfigType SI \
-createAsContainerDatabase true \
-numberOfPDBs 1 \
-pdbName orapdb \
-pdbAdminPassword 123456 \
-templateName General_Purpose.dbc \
-sysPassword 123456 \
-systemPassword 123456 \
-emConfiguration DBEXPRESS \
-emExpressPort 5500 \
-datafileJarLocation {ORACLE_HOME}/assistants/dbca/templates \
-datafileDestination {ORACLE_BASE}/oradata/{DB_UNIQUE_NAME} \
-recoveryAreaDestination {ORACLE_BASE}/fast_recovery_area/{DB_UNIQUE_NAME} \
-storageType FS \
-characterSet AL32UTF8 \
-listeners LISTENER \
-sampleSchema true

最后检查oracle

$ ps -ef | grep ora_

$ lsnrctl status

$ sqlplus / as sysdba
$ netstat -tnpl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值