安装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。
第二步要我们选择对更新的处理,我们直接选择skip software updates跳过软件更新。
第三步安装选项,我们选择create and configure a dabatase,创建并配置一个数据库。
第四步选择是桌面模式还是服务器模式。因为我们是自己用,因此选择桌面模式Desktop Class。
第五步配置安装目录、实例名称等信息,这些根据具体的需要来进行修改。如果没有特别的需求除字符集外都可以用默认选项。此处我们需要将字符集(Character Set)改为AL32UTF8。输入密码之后,点击下一步。
第六步创建目录,如果没有特殊需求,直接点击下一步。
第七步运行检查,直接点击右上角ignore all忽略全部。忽略全部后点击next进行下一步。
第八步预览配置信息,有需要的可以看一下,没有需要直接跳过。
第九步开始安装,到70%的时候会报一个错,需要回到控制台修改一个文件,然后再继续。
现在我们将安装向导放在一旁暂时不管,重新回到控制台。我们需要在控制台修改文件,修改完然后再继续。
我们进入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
打开一个新的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,点击下一步。
第二步选择监听操作,选择重新设置监听Reconfigure,点击下一步。
第三步选择重新设置的对象,弹窗提示点击yes,重新设置的对象选择Listener,点击下一步。
第四步选择协议,若无特殊需求,点击下一步。
第五步选择TCP/IP端口号,若无特殊需求,选择Use the standard port number of 1521,点击下一步。
第六步选择是否修改其他监听对象,选择NO,点击下一步。
第七步提示监听配置成功,点击next后回到第一步界面,点击finish,监听配置结束。
配置完监听后,修改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了。
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,确认能够连接上,自启动就完成了。