Prerequisites
Tools/software used
- Oracle express database
- Sql Developer
-
Downloading Oracle express database. Go to http://www.oracle.com/technetwork/products/express-edition/downloads/index.html. Accept the Accept License Agreement and you will be prompted to login in order to proceed to download. Create account at if you don't already have one.
-
Extract the Oracle Database Express. Once the zip file has finished downloading, unzip the file using the command
unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip. (this may take some time...) It will extract a folder called "Disk1". -
Convert to the Linux distribution package. The file has a
.rpmand we must convert it to a ubuntu package (or according to the distribution you are using.In mint for exable convert to.deb).To achieve the conversion installalienusing the command:sudo apt-get install alien libaio1 unixodbc vim, then execute the commandsudo alien --scripts -d oracle-xe-11.2.0-1.0.x86_64.rpmto convert the downloaded file. -
Prepare your computer for installation.
- Create a special chkconfig script with the following code:
sudo gedit /sbin/chkconfigPaste the following into the opened file and save it:
#!/bin/bash # Oracle 11gR2 XE installer chkconfig hack for Ubuntu file=/etc/init.d/oracle-xe if [[ ! `tail -n1 $file | grep INIT` ]]; then echo >> $file echo '### BEGIN INIT INFO' >> $file echo '# Provides: OracleXE' >> $file echo '# Required-Start: $remote_fs $syslog' >> $file echo '# Required-Stop: $remote_fs $syslog' >> $file echo '# Default-Start: 2 3 4 5' >> $file echo '# Default-Stop: 0 1 6' >> $file echo '# Short-Description: Oracle 11g Express Edition' >> $file echo '### END INIT INFO' >> $file fi update-rc.d oracle-xe defaults 80 01
-
Provide appropriate execute privilege to the file above by executing the command:
sudo chmod 755 /sbin/chkconfig -
Set the Kernel parameters. Oracle 11gR2 XE requires to set the following additional kernel parameters. Open the file 60-oracle.conf with the command
sudo gedit /etc/sysctl.d/60-oracle.confand paste the following:
# Oracle 11g XE kernel parameters fs.file-max=6815744 net.ipv4.ip_local_port_range=9000 65000 kernel.sem=250 32000 100 128 kernel.shmmax=536870912
Save the file.
Note: kernel.shmmax = max possible value , e.g. size of physical RAM ( in bytes e.g. 512MB RAM == 51210241024 == 536870912 bytes )
Verify the change :
sudo cat /etc/sysctl.d/60-oracle.confLoad new kernel parameters:
sudo service procps restart.**Verify:
sudo sysctl -q fs.file-maxfs.file-max = 6815744-
Increase the system swap space. Analyze your current swap space by following command:
free -mMinimum swap space requirement of Oracle 11gR2 XE is 2 GB . In case, your is lesser , you can increase it by following steps at: http://meandmyubuntulinux.blogspot.com/2011/09/installing-1-gb-swap-without.html.
-
Make some more required changes
sudo ln -s /usr/bin/awk /bin/awk
mkdir /var/lock/subsys
sudo touch /var/lock/subsys/listener
- Create a special chkconfig script with the following code:
-
At this point you are ready to install oracle database. Change directory to where you converted the database file in ubuntu(or the distribution you used) in step 3 above.Open your terminal and type:
sudo dpkg --install oracle-xe_11.2.0-2_amd64.deb
sudo /etc/init.d/oracle-xe configure
Enter the following configuration information:
A valid HTTP port for the Oracle Application Express (the default is 8080) A valid port for the Oracle database listener (the default is 1521) A password for the SYS and SYSTEM administrative user accounts Confirm password for SYS and SYSTEM administrative user accounts Whether you want the database to start automatically when the computer starts (next reboot).
-
Set Environmental variables before using the database.
Open .bashrc by executing:
sudo gedit ~/.bashrc. Paste the following and save.export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe export ORACLE_SID=XE export NLS_LANG=`$ORACLE_HOME/bin/nls_lang.sh` export ORACLE_BASE=/u01/app/oracle export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH export PATH=$ORACLE_HOME/bin:$PATH
Reload .profile to load the changes by executing:
sudo . ./.profile -
Start the Oracle database
sudo service oracle-xe start -
Create User
- Start sqlplus and login as sys:
sqlplus sys as sysdba - Provide the same password used during step 5 and you should see n output like this:
SQL*Plus: Release 11.2.0.2.0 Production on Wed May 9 12:12:16 2012 Copyright (c) 1982, 2011, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production SQL >
- Enter following on the sql prompt : Replace username1 and password1 by your desired ones.
SQL > create user username1 identified by password1; User created. SQL> grant connect,resource to username; Grant succeeded.
Now as you have created the user , you can login to it
- Start sqlplus and login as sys:
-
Dowload sql developer if you don't have it installed already. Just as we did with the Oracle express database, convert it with alien and install it:
sudo alien --scripts -d sqldeveloper-18.2.0.183.1748-1.noarch.rpm
sudo dpkg --install sqldeveloper_18.2.0.183.1748-2_all.deb
-
Launch the sql developer from terminal for a Gui interface
In Linux OS, type
sqldeveloperon the terminal. If the installation was successful, you should see the Gui interface similar to the image below.Click on the green ‘+’ located top left to invoke the connection dialog box
-
Connection Name: Could be any name .E.g retailer@localhost
-
Username: Input the user you created.
-
Password: Input the password used in creating the user.
-
-
Once connection is established, click Create a database named
EMPLOYEESand run the following SQL command to Create a table:CREATE TABLE "USERNAME1"."EMP" ("EMPNO" NUMBER NOT NULL ENABLE, "ENAME" VARCHAR2(20 BYTE), "JOB" VARCHAR2(20 BYTE), "MGR" VARCHAR2(20 BYTE), "HIREDATE" VARCHAR2(20 BYTE), "SAL" VARCHAR2(20 BYTE), "COMM" VARCHAR2(20 BYTE), "DEPTNO" VARCHAR2(20 BYTE), CONSTRAINT "EMP_PK" PRIMARY KEY ("EMPNO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ENABLE ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;
Sql * Loader session takes as input a control file, and one or more data files.
The output is an oracle database, a log file, a bad file, and potentially a discard file.
-
Create a file named:
control.ctland paste the following.LOAD DATA APPEND INTO TABLE emp FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( EMPNO, ENAME, JOB, MGR, HIREDATE DATE "dd/mm/yyyy", SAL, COMM, DEPTNO )
INSERT: It will load rows only if the target table is empty
APPEND: Load rows if the target table is empty or not
REPLACE: First delete the rows in the existing table and then load new rows
TRUNCATE: 1st truncates the table and then load rows
-
Create an simple *.CSV and name it:
abc.csv. Paste the following:7369,SMITH,CLERK,7902,17/12/1980,800,,20 234,fsdf,sdfsd,45,18/12/1980,900,,1
-
Create a log file and name it
sqllog.log. -
Run the following command:
sqlldr username1/password1 data='abc.csv' control='control.ctl' log='sqllog.log'. This assumes your username is username1 and password is password1.
If everything goes well, you could see the following in the log file:
SQL*Loader: Release 11.2.0.2.0 - Production on Fri Sep 14 02:37:22 2018
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Control File: control.ctl
Data File: abc.csv
Bad File: abc.bad
Discard File: none specified
(Allow all discards)
Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array: 64 rows, maximum of 256000 bytes
Continuation: none specified
Path used: Conventional
Table EMP, loaded from every logical record.
Insert option in effect for this table: APPEND
TRAILING NULLCOLS option in effect
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
EMPNO FIRST * , O(") CHARACTER
ENAME NEXT * , O(") CHARACTER
JOB NEXT * , O(") CHARACTER
MGR NEXT * , O(") CHARACTER
HIREDATE NEXT * , O(") DATE dd/mm/yyyy
SAL NEXT * , O(") CHARACTER
COMM NEXT * , O(") CHARACTER
DEPTNO NEXT * , O(") CHARACTER
Record 1: Rejected - Error on table EMP.
ORA-00001: unique constraint (USERNAME1.EMP_PK) violated
Table EMP:
1 Row successfully loaded.
1 Row not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
Space allocated for bind array: 132096 bytes(64 rows)
Read buffer bytes: 1048576
Total logical records skipped: 0
Total logical records read: 2
Total logical records rejected: 1
Total logical records discarded: 0
Run began on Fri Sep 14 02:37:22 2018
Run ended on Fri Sep 14 02:37:22 2018
Elapsed time was: 00:00:00.04
CPU time was: 00:00:00.01
- https://www.digitalocean.com/community/tutorials/how-to-install-java-with-apt-get-on-ubuntu-16-04
- https://community.oracle.com/thread/1108264
- http://meandmyubuntulinux.blogspot.com/2012/05/installing-oracle-11g-r2-express.html
- https://tec600.wordpress.com/2017/06/29/oracle-installation-on-ubuntu-16-04/
- https://docs.oracle.com/cd/E11882_01/server.112/e10897/install.htm#ADMQS021
- https://askubuntu.com/questions/665360/oracle-database-express-11-2-job-for-oracle-xe-service-failed