在Windows中使用wsl安装OracleLinux,并在OracleLinux中安装Oracle11g

988 阅读8分钟

安装Oracle的准备工作(虚拟机及文件)

提示:建议使用网络加速器,可以更高效的下载和安装各类文件,并避免因网络导致的各种问题。

先确定一下wsl的版本号,最好先更新到较新版本的wsl。

wsl --version

以下是笔者的版本,可供参考:

WSL 版本: 2.1.5.0
内核版本: 5.15.146.1-2
WSLg 版本: 1.0.60
MSRDC 版本: 1.2.5105
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.25131.1002-220531-1700.rs-onecore-base2-hyp
Windows 版本: 10.0.19045.4291

使用wsl查看一下可以直接使用的版本:

wsl --list --online

运行结果:

以下是可安装的有效分发的列表。
使用 'wsl.exe --install <Distro>' 安装。

NAME                                   FRIENDLY NAME
Ubuntu                                 Ubuntu
Debian                                 Debian GNU/Linux
kali-linux                             Kali Linux Rolling
Ubuntu-18.04                           Ubuntu 18.04 LTS
Ubuntu-20.04                           Ubuntu 20.04 LTS
Ubuntu-22.04                           Ubuntu 22.04 LTS
Ubuntu-24.04                           Ubuntu 24.04 LTS
OracleLinux_7_9                        Oracle Linux 7.9
OracleLinux_8_7                        Oracle Linux 8.7
OracleLinux_9_1                        Oracle Linux 9.1
openSUSE-Leap-15.5                     openSUSE Leap 15.5
SUSE-Linux-Enterprise-Server-15-SP4    SUSE Linux Enterprise Server 15 SP4
SUSE-Linux-Enterprise-15-SP5           SUSE Linux Enterprise 15 SP5
openSUSE-Tumbleweed                    openSUSE Tumbleweed

选择好合适的Linux的发行版并进行安装:

在此处,我们选择了OracleLinux_7_9这个版本。

wsl --install OracleLinux_7_9

运行结果:

Oracle Linux 7.9 已安装。
正在启动 Oracle Linux 7.9...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: blue
Changing password for user blue.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
Installation successful!

为root用户设置密码,并切换到root用户操作

安装结束后,会自动使用安装的用户名进入到OracleLinux中去,我们需要先使用exit命令暂时先退出OracleLinux。我们需要先为root用户设置密码,然后使用root用户来进行操作。修改root用户密码,需要在powershell中执行下面的命令:

wsl --user root --exec passwd root

运行结果

Changing password for user root.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

修改完root用户密码之后,我们使用root用户登录OracleLinux。如果不使用root用户登录,将会使用大量sudo,操作起来比较烦,因此我们直接使用root用户进行登录。

wsl --user root

配置好systemd

在wsl中,systemd默认是不启用的,systemctl等相关命令也是无效的。开机自启动的脚本/etc/rc.local也是不会执行的,因此我们需要添加配置打开systemd,让其默认开启。

echo -e "[boot]\nsystemd=true" >> /etc/wsl.conf

配置好systemd之后,需要重启虚拟机,才能让配置生效,因此我们需要先退出linux。

exit

回到powershell当中去之后,重启一下虚拟机:

wsl --shutdown
wsl --user root

选择好合适的Oracle版本,并准备好安装的必要文件

我们选择的oracle版本版本oracle11g,具体的版本号是: 11.2.0.4.0。相关文件已经放在百度网盘中了。

链接:https://pan.baidu.com/s/1pgJ2JHPSI7dExcZBPkBjmQ?pwd=nj12
提取码:nj12 

请将上述的文件准备好,并拷贝到/opt目录下。 在我的开发过程中,我将这些文件都放在了E:/linux目录下。 WSL中安装的OracleLinux会自动挂载windows下的磁盘到/mnt目录下。因此,我们可以直接通过cp命令,将这些文件从磁盘下拷贝到linux的/opt目录下,供我们后面使用:

cp /mnt/e/linux/p13390677_112040_Linux-x86-64_1of2.zip /opt/
cp /mnt/e/linux/p13390677_112040_Linux-x86-64_2of2.zip /opt/
cp /mnt/e/linux/jdk-8u202-linux-x64.rpm /opt/

安装Oracle的准备工作(Oracle所需的依赖)

添加Oracle用户并设置密码

执行以下命令,添加oracle用户,并为oracle用户设置密码:

groupadd oinstall
groupadd dba
useradd -g oinstall -G dba -m oracle
passwd oracle

执行以下命令,创建相关的目录:

mkdir -p /data/oracle
mkdir -p /data/oraInventory
mkdir -p /data/orapackage

更改目录所属用户:

chown -R oracle:oinstall /data/oracle
chown -R oracle:oinstall /data/oraInventory
chown -R oracle:oinstall /data/orapackage

为oracle用户设置sudo权限,方便oracle用户执行一些命令:

echo "oracle ALL=(ALL) ALL" >> /etc/sudoers

更新yum并安装oracle所需的依赖并进行正确的配置

更新yum:

yum -y update

安装oracle所需的依赖(适用于在OracleLinx_7_9平台安装oracle 11g 11.2.0.4.0)

yum -y install binutils compat-libcap1 compat-libstdc++-33 compat-libstdc++-33.i686 gcc gcc-c++ glibc glibc.i686 glibc-devel glibc-devel.i686 ksh libaio libaio.i686 libaio-devel libaio-devel.i686 libgcc libgcc.i686 libstdc++.i686 libstdc++ libstdc++-devel libstdc++-devel.i686 libXi libXi.i686 libXtst libXtst.i686 make sysstat

安装java

yum -y install /opt/jdk-8u202-linux-x64.rpm

安装unzip

yum -y install unzip

因为oracle的安装,最终会使用可视化的方式来进行,因此需要安装一些与可视化相关的依赖:

yum -y install xdpyinfo
yum -y install tigervnc-server

执行以下命令,配置vncserver

vncserver

运行结果:

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
xauth:  file /root/.Xauthority does not exist

New 'WIN-20230926HJV:1 (root)' desktop is WIN-20230926HJV:1

Creating default startup script /root/.vnc/xstartup
Creating default config /root/.vnc/config
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/WIN-20230926HJV:1.log

执行以下命令,配置DISPLAY:

export DISPLAY=:0.0
xhost +

运行结果:

access control disabled, clients can connect from any host

为oracle用户配置DISPLAY,在这里我们直接配在.bash_profile中了,避免后续因为shell操作而需要反复配置。

echo -e "\nexport DISPLAY=:0.0\n" >> /home/oracle/.bash_profile

修改内核参数、用户限制及环境变量

修改内核参数
echo -e "/etc/sysctl.d/\<name\>.conf file" >> /etc/sysctl.conf
echo -e "net.ipv4.icmp_echo_ignore_broadcasts = 1" >> /etc/sysctl.conf
echo -e "net.ipv4.conf.all.rp_filter = 1" >> /etc/sysctl.conf
echo -e "fs.file-max = 6815744" >> /etc/sysctl.conf
echo -e "fs.aio-max-nr = 1048576" >> /etc/sysctl.conf
echo -e "kernel.shmall = 2097152" >> /etc/sysctl.conf
echo -e "kernel.shmmax = 2147483648" >> /etc/sysctl.conf
echo -e "kernel.shmmni = 4096" >> /etc/sysctl.conf
echo -e "kernel.sem = 250 32000 100 128" >> /etc/sysctl.conf
echo -e "net.ipv4.ip_local_port_range = 9000 65500" >> /etc/sysctl.conf
echo -e "net.core.rmem_default = 262144" >> /etc/sysctl.conf
echo -e "net.core.rmem_max= 4194304" >> /etc/sysctl.conf
echo -e "net.core.wmem_default= 262144" >> /etc/sysctl.conf
echo -e "net.core.wmem_max= 1048576" >> /etc/sysctl.conf
修改用户限制
echo -e "oracle soft nproc 2047" >> /etc/security/limits.conf
echo -e "oracle hard nproc 16384" >> /etc/security/limits.conf
echo -e "oracle soft nofile 1024" >> /etc/security/limits.conf
echo -e "oracle hard nofile 65536" >> /etc/security/limits.conf
echo -e "oracle soft stack 10240" >> /etc/security/limits.conf
echo -e "oracle hard stack 32768" >> /etc/security/limits.conf
修改oracle登录环境变量
echo -e "export PATH" >> /home/oracle/.bash_profile
echo -e "export ORACLE_BASE=/data/oracle" >> /home/oracle/.bash_profile
echo -e "export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/db_1" >> /home/oracle/.bash_profile
echo -e "export ORACLE_SID=orcl" >> /home/oracle/.bash_profile
echo -e "export ORACLE_TERM=xterm" >> /home/oracle/.bash_profile
echo -e "export PATH=\$ORACLE_HOME/bin:/usr/sbin:\$PATH" >> /home/oracle/.bash_profile
echo -e "export LD_LIBRARY_PATH=\$ORACLE_HOME/lib:/lib:/usr/lib" >> /home/oracle/.bash_profile
echo -e "export LANG=\"C\"" >> /home/oracle/.bash_profile
echo -e "export NLS_LANG=\"SIMPLIFIED CHINESE_CHINA.AL32UTF8\"" >> /home/oracle/.bash_profile

解压oracle安装包

将放在/opt目录下的安装包解压到/data/database目录下:

unzip /opt/p13390677_112040_Linux-x86-64_1of2.zip -d /data
unzip /opt/p13390677_112040_Linux-x86-64_2of2.zip -d /data

安装Oracle

将用户切换至先前创建的oracle用户,并进入安装目录:

su - oracle
cd /data/database

查看当前目录文件:

ls

主要包含以下文件:

install  readme.html  response  rpm  runInstaller  sshsetup  stage  welcome.html

执行安装命令:

./runInstaller

执行安装命令的时候,会有以下提示文字,如果前面已经按照步骤操作成功的话,会直接弹窗让我们来安装:

Starting Oracle Universal Installer...

Checking Temp space: must be greater than 120 MB.   Actual 971939 MB    Passed
Checking swap space: must be greater than 150 MB.   Actual 8192 MB    Passed
Checking monitor: must be configured to display at least 256 colors.    Actual 16777216    Passed
Preparing to launch Oracle Universal Installer from /tmp/OraInstall2024-05-12_07-16-37PM. Please wait ...

安装步骤共有10步

第一步填写email可以直接不填,点击next跳过,告警直接选择Yes

1.PNG

第二步要我们选择对更新的处理,我们直接选择skip software updates跳过软件更新。

3.PNG

第三步安装选项,我们选择create and configure a dabatase,创建并配置一个数据库。

4.PNG

第四步选择是桌面模式还是服务器模式。因为我们是自己用,因此选择桌面模式Desktop Class

5.PNG

第五步配置安装目录、实例名称等信息,这些根据具体的需要来进行修改。如果没有特别的需求除字符集外都可以用默认选项。此处我们需要将字符集(Character Set)改为AL32UTF8。输入密码之后,点击下一步。

6.PNG

第六步创建目录,如果没有特殊需求,直接点击下一步。

8.PNG

第七步运行检查,直接点击右上角ignore all忽略全部。忽略全部后点击next进行下一步。

9.PNG

第八步预览配置信息,有需要的可以看一下,没有需要直接跳过。

11.PNG

第九步开始安装,到70%的时候会报一个错,需要回到控制台修改一个文件,然后再继续。

12.PNG

现在我们将安装向导放在一旁暂时不管,重新回到控制台。我们需要在控制台修改文件,修改完然后再继续。 我们进入lib目录下,备份文件ins_emagent.mk,然后再打开该文件:

cd $ORACLE_HOME/sysman/lib
cp ins_emagent.mk ins_emagent.mk.bak
vim ins_emagent.mk

进入vim后,在命令模式下输入/NMECTL并跳转到对应的行。在该行后面添加一个参数-lnnz11,添加完结果如下:

...
#===========================
#  emdctl
#===========================

$(SYSMANBIN)emdctl:
        $(MK_EMAGENT_NMECTL) -lnnz11

#===========================
#  nmocat
#===========================
...

修改完再回到向导,点击retry,继续安装。 安装结束时,会让我们使用root用户执行两行命令。因此我们需要再开一个root用户的连接,并执行下面两行命令:

/data/oraInventory/orainstRoot.sh
/data/oracle/product/11.2.0/db_1/root.sh

13.PNG

打开一个新的powershell,并使用root用户登录。

wsl --user root

执行命令1:

/data/oraInventory/orainstRoot.sh
Changing permissions of /data/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.

Changing groupname of /data/oraInventory to oinstall.
The execution of the script is complete.

执行命令2:

/data/oracle/product/11.2.0/db_1/root.sh
Performing root user operation for Oracle 11g

The following environment variables are set as:
    ORACLE_OWNER= oracle
    ORACLE_HOME=  /data/oracle/product/11.2.0/db_1

Enter the full pathname of the local bin directory: [/usr/local/bin]:
   Copying dbhome to /usr/local/bin ...
   Copying oraenv to /usr/local/bin ...
   Copying coraenv to /usr/local/bin ...


Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Finished product-specific root actions.

运行完毕后,回到安装向导,点击ok。

第十步,安装结束。

使用Oracle数据库

登录及创建用户

创建完回到oracle用户登录的shell。 使用非登录的方式执行sqlplus:

sqlplus /nolog

执行后,连接到数据库,并创建用户。

SQL> conn / as sysdba;
Connected.
SQL> create user test identified by 123456;

User created.

SQL> grant dba to test;

Grant succeeded.

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

配置数据库监听

执行以下命令配置,重新配置oracle的监听:

netca

配置过程一共七步。

第一步选择监听设置,选择Listener configuration,点击下一步。

19.PNG

第二步选择监听操作,选择重新设置监听Reconfigure,点击下一步。

netca1.PNG

第三步选择重新设置的对象,弹窗提示点击yes,重新设置的对象选择Listener,点击下一步。

netca3.PNG

第四步选择协议,若无特殊需求,点击下一步。

15.PNG

第五步选择TCP/IP端口号,若无特殊需求,选择Use the standard port number of 1521,点击下一步。

16.PNG

第六步选择是否修改其他监听对象,选择NO,点击下一步。

17.PNG

第七步提示监听配置成功,点击next后回到第一步界面,点击finish,监听配置结束。

19.PNG

配置完监听后,修改listener.ora文件,将实例添加进去。

vim /data/oracle/product/11.2.0/db_1/network/admin/listener.ora

添加以下内容:

SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = orcl)
  (SID_NAME = orcl)
  )
)

如果之前将实例名称从orcl改成了别的,那么在此处需要同步修改。修改结束后,我的listener.ora内容如下,可供参考

# listener.ora Network Configuration File: /data/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-20230926HJV.)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = orcl)
  (SID_NAME = orcl)
  )
)

ADR_BASE_LISTENER = /data/oracle

重启oracle的监听:

lsnrctl stop LISTENER
lsnrctl start LISTENER
lsnrctl status LISTENER

好了,至此可以使用navicat连接oracle了。

a47713d250ec95432ce35006e112155.png

oracle自启动设置

使用oracle用户登录系统,并重置sys的用户名和密码:

sqlplus /nolog
SQL> conn / as sysdba
Connected.
SQL> alter user sys identified by sys;

User altered.

SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

切换回root用户

su - root

执行以下命令:

echo "export ORACLE_BASE=/data/oracle" >> /etc/rc.local
echo "export ORACLE_HOME=\$ORACLE_BASE/product/11.2.0/db_1" >> /etc/rc.local
echo "export ORACLE_SID=orcl" >> /etc/rc.local
echo "export ORACLE_TERM=xterm" >> /etc/rc.local
echo "export PATH=\$ORACLE_HOME/bin:/usr/sbin:\$PATH" >> /etc/rc.local
echo "echo -e \"conn sys/sys as sysdba \n startup\" | sqlplus /nolog" >> /etc/rc.local
echo "lsnrctl start LISTENER" >> /etc/rc.local

rc.local文件增加可执行的能力,使其具备可执行的能力。

chmod +x /etc/rc.d/rc.local

操作完毕后,退出Linux。回到powershell界面,使用下面命令重启linux

wsl --shutdown
wsl

重新启动后,使用navicat再次测试连接oracle,确认能够连接上,自启动就完成了。