Installing Oracle used to be a tedious and error prone operation, it takes my inexperienced colleague a week, but still cannot fix it. I have fixed the server and would make note on the procedures to install Oracle so that I won’t spend too much time on it next time.
Basically I follow the RHEL steps in the following links. CentOS on LXC is exactly the same in the following link.
https://www.oracle.com/database/technologies/appdev/xe/quickstart.html
I need to prepare the environment first as followed. Everything is done by “root”
- Host Table – Hard Code the hostname in /etc/hosts, with the following line
10.168.10.90 OracleCentOS
- Disable IPv6 – seems IPv6 doesn’t work very well in Oracle XE 18, I can only connect locally (with port forwarding) but not from another machine.
edit/etc/sysctl.conf
, amend the following two lines at the end offilenet.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1 - Install curl for subsequent installation steps
yum install curl
- Restart server to make every thing effective.
shutdown -r now
And then we could follow the above link “Red Hat compatible Linux distribution” section to install the Oracle
We can get an up-and-running Oracle up to now, however, it can only be connect by sqlplus, you cannot connect to it from external. It is due to the listener settings is not correct yet. So, we need to go through a few post installation configuration steps.
- Setup the Oracle default DB
/etc/init.d/oracle-xe-18c configure
- Modify tnsname.ora and listener.ora, use hostname OracleCentOS and port 1521
vi /opt/oracle/product/18c/dbhomeXE/network/admin/tnsnames.ora
tnsnames.ora Network Configuration File: /opt/oracle/product/18c/dbhomeXE/network/admin/tnsnames.ora
Generated by Oracle configuration tools.
XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleCentOS)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)
LISTENER_XE =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleCentOS)(PORT = 1521))
vi /opt/oracle/product/18c/dbhomeXE/network/admin/listener.ora
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = OracleCentOS)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
- Restart the oracle service by the following command
/etc/init.d/oracle-xe-18c restart
- You can verify port 1521 opens with the following command
netstat -anp | grep 1521
You should be able to connect to the Oracle via IP as sysdba in SQLDeveloper
it is strange that I cannot simply use SQLDeveloper to create user, we need to modify the final SQL to create user a bit. https://stackoverflow.com/questions/33330968/error-ora-65096-invalid-common-user-or-role-name-in-oracle
Therefore, what we do is to add this line in the SQL tab during create user.alter session set "_ORACLE_SCRIPT"=true;