Tuesday, February 11, 2020

 Administrating USER Account in Oracle


1. Types of USER

As per Oracle documentation, Oracle categories user according to usages.

  • Database Administrator
  • Network Administrator
  • System Administrator
  • Application Developer
  • Database USER


2. Built-in Account

Some Important Built-in account in oracle are- Sys, System, Sysman 

Sys User account -

  • DBA Role - pre-built role, 
  • Own Data Dictionary, 
  • Superuser in Oracle, 
  • Similar to SA in Microsoft SQL Server, or Administrator in Window or root in *inx. 

Relationship between SYS user account SYSDBA privilege- 

Sys is a superuser account in Oracle while sysdba is a privilege that is added to a user account who have a member of the dba group of OS. When a user login by using Sysdba privilege that the user becomes a superuser like SYS user. 


SQLPLUS / as sysdba or connect / as sysdba or connect <someuser> as sysdba


System User Account - 

  • Less Power User than SYS.  
  • Along with the DBA Role System user also has MGMT_USER and AQ_Administrator role. 
  • The system is a safer account for day to day DBA task. 
  • Can't do DATABASE Upgrade, BACKUP and Recovery.

Sysman User Account - 

  • Lower level Default System account having the least power but have more power than a normal user account. 
  • Have MGMT_USER, RESOURCE, and SELECT_CATALOG_ROLE role.


3. How to create a new USER

Component of USER Account

Mandatory Field

Username - Unique Username <= 30 char , Alphanumeric , allowed special characters are $ and _

authentication - Password, or Bimetric, or Certificate, or OS, or external.

Optional Field

tablespace - specify default tablespace and temporary tablespace for the user.

Profile - Password policy, account Security

Schema - Collection of Object owned by USER. username = schema

Saturday, February 8, 2020

Question : How do I open my application with the Launcher app file .desktop

I've a problem with the application Oracle SQL Developer, I can only run it going to the terminal and only with the sudo command. My file is there : /usr/local/bin/sqldeveloper and to open it I have to do sudo sqldeveloper.

Now here is the code of my launcher app :

$ cat /usr/share/applications/Oracle-sqldeveloper.desktop 
[Desktop Entry]
Type=Application
Name=Oracle SQL Developer
Exec=sqldeveloper
Icon=/opt/sqldeveloper/icon.png
Terminal=false >> ~/.local/share/applications/sqldeveloper.desktop

I've already tried to put the full path in the Exec row but nothing, the app doesn't launch, there's the icon in the toolbar few second and it disappears.

Solutions

I also faced same issue, googled lot but nothing got helpful.. BTW I solved this problem by adding absolute path in /usr/share/applications/Oracle-sqldeveloper.desktop. If you want to run sqldeveloper from applications>programming menu then you need to edit your Oracle-sqldeveloper.desktop file. add absolute path which is Exec=/opt/sqldeveloper/sqldeveloper/bin/sqldeveloper in my case also change Terminal=true which show you other problem like java home etc, if java related issue then set according to terminal instruction after that change Terminal=false

 $ sudo vim /usr/share/applications/Oracle-sqldeveloper.desktop

    [Desktop Entry]
    Encoding=UTF-8
    Name=SQL Developer
    Comment=Oracle SQL Developer
    Icon=/opt/sqldeveloper/icon.png
    Exec=/opt/sqldeveloper/sqldeveloper/bin/sqldeveloper
    Terminal=true
    Type=Application
    X-Desktop-File-Install-Version=0.23
    Categories=X-Red-Hat-Extra;Application;Development;
 

Deinstallation of Oracle Database

deinstall stop the oracle software and remove it, including data files and recovery files.

deinstall utility exist in ORACLE_HOME/deinstall directory.

$ [oracle@devBase deinstall]$ pwd
/u01/app/oracle/product/19.3.0/dbhome_1/deinstall

Steps involved in deintallation of Oracle Software and data files.

Step 1 Backup all the data files.

Step 2 Switch into deinstall directory.

Step 3 Enter following command

$ [oracle@devBase deinstall]$ ./deinstall 

It start deinstallation process

Note : On CentOS 8 / RedHat 8 deinstalltion utility stop by throwing an error.

[oracle@devBase deinstall]$ ./deinstall
Checking for required files and bootstrapping ...
Please wait ...
Location of logs /tmp/deinstall2020-02-09_07-19-33AM/logs/

############ ORACLE DECONFIG TOOL START ############


######################### DECONFIG CHECK OPERATION START #########################
## [START] Install check configuration ##


Checking for existence of the Oracle home location /u01/app/oracle/product/19.3.0/dbhome_1
Oracle Home type selected for deinstall is: Oracle Single Instance Database
Oracle Base selected for deinstall is: /u01/app/oracle
Checking for existence of central inventory location /u01/app/oraInventory
ERROR: null

To solve this change CentOS / RedHat version temporarily by entering following command.

[oracle@devBase deinstall]$ export CV_ASSUME_DISTID=RHEL7.6

After that you can successfully execute deinstall utility.

You can also use various flags with deinstall such as -checkonly, -help etc. For complete information on options click here

Oracle Listener Problem : The listener supports no services - lsnrctl status

Question

Hi,



I have installed the Oracle Database 12.1.0 on one my linux box.



When I do a lsnrctl status, I get the following output:



LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 19-MAR-2019 09:42:20





Copyright (c) 1991, 2016, Oracle.  All rights reserved.





Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=X.X.X.X)(PORT=1521)))

STATUS of the LISTENER

------------------------

Alias                     LISTENER

Version                   TNSLSNR for Linux: Version 12.2.0.1.0 - Production

Start Date                19-MAR-2019 08:02:58

Uptime                    0 days 1 hr. 39 min. 21 sec

Trace Level               off

Security                  ON: Local OS Authentication

SNMP                      OFF

Listener Parameter File   /home/oracle/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora

Listener Log File         /home/oracle/app/oracle/diag/tnslsnr/X.X.X.X/listener/alert/log.xml

Listening Endpoints Summary...

  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=X.X.X.X)(PORT=1521)))

  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

The listener supports no services

The command completed successfully



When I try to connect to this database, I get error saying 'The Network Adapter Could Not establish the connection'

Answer

set local_listener parameter
$ su - oracle 
SQL> show parameter local_listener
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
local_listener                       string      

SQL> alter system set local_listener='(ADDRESS =(PROTOCOL=TCP)(HOST=devbase.lambda.asia)(PORT=1539))' scope=both;
SQL> --change the value in red
SQL> -- your problem will be solved

CentOS 8 / RedHat 8 : Download Tor Browser and Install it

We can directly use tor browser , simply by extracting downloaded file. But if we want to configure it as Application menu item (like the below picture) then we follow some steps


Step 1. Download tor Browser and extract it, i extract it under /opt directory.
$ sudo tar -xvjf ~/Downloads/tor-browser-linux64-9.0.4_en-US.tar.xz -C /opt/

Step 2 . Change permission to read and write.
$ sudo chmod -R 775 /opt/tor-browser_en-US 

Step 3. Enter the following command

$ cd /opt/tor-browser_en-US 
$ ./start-tor-browser.desktop --register-app
After this step tor icon appear in the Application > Internet menu

How to install python on CentOS 8 / RedHat 8

Python is most popular programming language nowadays in the world.

By default RHEL/CentOS 8 doesn’t have an unversioned system-wide python command to avoid locking the users to a specific version of Python. Instead, it gives the user a choice to install, configure, and run a specific Python version. The system tools such as yum use an internal Python binary and libraries.

This guide will walk you through installing Python 3 and Python 2 on CentOS 8.

Installing Python 3 on CentOS 8 / RedHat 8

Enter following command to install Python3

$ sudo dnf install python3 
verify python version
$ python3 --version
Python 3.6.8

Installing Python 2 on CentOS 8 / RedHat 8

Enter the following command to install Python2

$ sudo dnf install python2
verify python version
$ python2 --version
Python 2.7.16

Set Default Python version

Use alternatives command to set default python version

For Python version 3

$ sudo alternatives --set python /usr/bin/python3 

For Python Version 2

$ sudo alternatives --set python /usr/bin/python2 

CentOS 8 / RedHat 8 : Installation of youtube-dl

If you configure epel repository then you can easily install youtube-dl package using dnf install youtube-dl .


$ yum info youtube-dl
CentOS-8 - AppStream                                                                                                  242 kB/s | 6.4 MB     00:27    
CentOS-8 - Base                                                                                                       310 kB/s | 5.0 MB     00:16    
CentOS-8 - cr                                                                                                         582  B/s | 257  B     00:00    
CentOS-8 - Extras                                                                                                     2.1 kB/s | 2.1 kB     00:00    
CentOS-8 - PowerTools                                                                                                 224 kB/s | 2.0 MB     00:09    
CentOS-8 - Plus                                                                                                       212 kB/s | 570 kB     00:02    
CentOS-8 - fasttrack                                                                                                  235  B/s | 257  B     00:01    
Amazon Corretto                                                                                                       4.7 kB/s |  13 kB     00:02    
ELRepo.org Community Enterprise Linux Repository - el8                                                                 22 kB/s |  97 kB     00:04    
ELRepo.org Community Enterprise Linux Kernel Repository - el8                                                         182 kB/s | 920 kB     00:05    
ELRepo.org Community Enterprise Linux Extras Repository - el8                                                         9.3 kB/s |  16 kB     00:01    
Extra Packages for Enterprise Linux 8 - Playground - x86_64                                                           121 kB/s | 4.6 MB     00:38    
google-chrome                                                                                                         8.6 kB/s | 3.4 kB     00:00    
RPM Fusion for EL 8 - Free - Updates                                                                                   16 kB/s | 229 kB     00:14    
RPM Fusion for EL 8 - Nonfree - Updates                                                                               9.6 kB/s |  61 kB     00:06    
Available Packages
Name         : youtube-dl
Version      : 2020.01.24
Release      : 1.epel8.playground
Architecture : noarch
Size         : 2.8 M
Source       : youtube-dl-2020.01.24-1.epel8.playground.src.rpm
Repository   : epel-playground
Summary      : A small command-line program to download online videos
URL          : https://yt-dl.org
License      : Unlicense
Description  : Small command-line program to download videos from YouTube and other sites.

The above output show that youtube-dl package available in epel repository. I also installed this package by same method, but it does not work properly.

So I have decided to installed latest version directly from github - https://ytdl-org.github.io/youtube-dl/index.html

Enter following command from terminal

$ sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl 

After fetching file set executable permission on the script
$ sudo chmod a+rx /usr/local/bin/youtube-dl 

After that update the youtube-dl

$ youtube-dl -U 

Prerequisite for youtube-dl

you should have latest version of python.


CentOS 8 / RedHat 8 : Install SDKMAN for all users

After installation of CentOS 8 at my system, I decided to install java using sdkman. So i simply follow the instruction from https://sdkman.io/install

I successfully configured sdkman and also install latest version of jdk. javac and java both are working well in current user. but when i switch to another user both java and javac are not available.

The problem is that everything installed in home directory of current user. for other user sdkman is not available.

After sometimes i found the solution which solved my problem. I have decided to install sdkman globally, which is available for all users.

1. Uninstall sdkman - if you already install it.

Uninstall done into three steps 1. take backup of installed sdkman and then remove it. 

$ tar zcvf ~/sdkman-backup_$(date +%F-%kh%M).tar.gz -C ~/ .sdkman
$ rm -rf ~/.sdkman

After that edit .bashrc, .bash_profile or .profile file and remove sdkman environment settings.

2. Install sdkman to custom location

Decide the location where you want to install sdkman. In my case i install all the software in /opt directory. So I installed it under /opt/local/sdkman.

enter the following command.

$ export SDKMAN_DIR="/opt/local/sdkman" && curl -s "https://get.sdkman.io" | bash

3. Create sdkman.sh inside /etc/profile.d/ directory

create sdkman.sh under profile.d directory and add following lines.

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/opt/local/sdkman"
[[ -s "/opt/local/sdkman/bin/sdkman-init.sh" ]] && source "/opt/local/sdkman/bin/sdkman-init.sh"

# vim /etc/profile.d/sdkman.sh

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/opt/local/sdkman"
[[ -s "/opt/local/sdkman/bin/sdkman-init.sh" ]] && source "/opt/local/sdkman/bin/sdkman-init.sh"
# source /etc/profile

SDKMAN available for all the user enjoy :)

Installation of ORACLE 19c at CentOS 8

After installing CentOS 8 , I have decided to install oracle db. With CentOS 7 i used oracle 12c for my work. But when I try to install Oracle 12c at CentOS 8 it show warning INS-13001


By Ignoring this warning message i can install Oracle12c, but i have decided to install Oracle 19c
So I download it from Oracle website. For Linux, Oracle19c have two variant one is rpm and other .zip file. I have decided to download zip file.

Prerequisite of ORACLE 19c For CentOS/ RedHat 8

Server Configuration
Oracle Server Configuration
Machine NameIP AddressProcessorOSMemory
devbase.lambda.asia192.168.0.11 x AMD Athlon™ 64 X2 Dual Core Processor 3800+CentOS 8 (64-bit)8GB


Disk Partition for Oracle Software As per oracle Recommendation
Mount Point UsagesSize
/u01Oracle Database Softwareat least 8 GB
/u02Data fileat least 6 GB but it should be according to your db size
/u03Recovery AreaSame as data file

Server Hardware and Memory Check List
ComponentRecomendationHow To Check
Physical RAMat least 1 GB
#grep MemTotal /proc/meminfo
Swapif 1GB < RAM < 2GB then 1.5 times of RAM
if 2GB < RAM < 16GB then equal to SIZE of RAM
if RAM >16GB then SWAP SIZE is 16 GB
#grep SwapTotal /proc/meminfo
tmp dirat least 1 GB
#df -h /tmp

Oracle Configuration

This section provides instruction how to create the operating system user and groups that will used to manage and install oracle database release 19c.


Create Oracle Software Owner
Description OS Group NameOS User Assigned to  this GroupOracle PrivilegeOracle Group NameHome Directory
Oracle Inventory and Software Owneroinstalloracle/home/oracle
Database Administratordbaoracle,yogeshSYSDBAOSDBA
Database Operatoroperoracle,yogeshSYSOPEROSOPER

# groupadd oinstall
#groupadd dba
#groupadd oper
#useradd -g oinstall -G dba,oper -c "oracle software owner" oracle

Now create password for user oracle
#passwd oracle
Changing password for user oracle.

New password: xxxxxxxxxxx 

Retype new password: xxxxxxxxxxx 

passwd: all authentication tokens updated successfully.
Create Environment variable for user Oracle
# su - oracle
Login to machine using user Oracle and set enviornment variable.
$vim ~/.bash_profile 

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
 . ~/.bashrc
fi

# User specific environment and startup programs
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_HOSTNAME=devbase.lambda.asia
export ORACLE_UNQNAME=devdb
##########ORACLE BASE #############

ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE

export ORACLE_HOME=$ORACLE_BASE/product/19.3.0/dbhome_1
export ORA_INVENTORY=/u01/app/oraInventory
export ORACLE_SID=devdb
export PDB_NAME=devdbpdb
export DATA_DIR=/u02/app/oracle/oradata
export GLOBAL_NAME=devdb.lambda.asia
# ---------------------------------------------------
# TNS NAME SETTING
# ---------------------------------------------------
export TNS_ADMIN=$ORACLE_HOME/network/admin
# ---------------------------------------------------
# PATH
# ---------------------------------------------------
# Used by the shell to locate executable programs;
# must include the $ORACLE_HOME/bin directory.
# ---------------------------------------------------
PATH=.:${PATH}:$ORACLE_HOME/bin:/u01/app/oracle/dba_scripts/bin
export PATH

# ---------------------------------------------------
# LD_LIBRARY_PATH
# ---------------------------------------------------
# Specifies the list of directories that the shared
# library loader searches to locate shared object
# libraries at runtime.
# ---------------------------------------------------

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
export LD_LIBRARY_PATH
# ---------------------------------------------------
# CLASSPATH
# ---------------------------------------------------
# The class path is the path that the Java runtime
# environment searches for classes and other resource
# files. The class search path (more commonly known
# by the shorter name, "class path") can be set using
# either the -classpath option when calling a JDK
# tool (the preferred method) or by setting the
# CLASSPATH environment variable. The -classpath
# option is preferred because you can set it
# individually for each application without affecting
# other applications and without other applications
# modifying its value.
# --------------------------------------------------

CLASSPATH=.:$ORACLE_HOME/jdbc/lib/ojdbc6.jar
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH


Oracle Software Component
Software ComponentVersion
Oracle DatabaseOracle Database Release 19c Zip file

Oracle Database Name
Software ComponentOracle SIDGlobal Database Name
oracle container database(cdb)devdbdevdb.lambda.asia
oracle pluggable databasedevpdbdevpdb.lambda.asia

Oracle Software Component
DiscriptionDirectory
Oracle Base /u01/app/oracle
Oracle Home /u01/app/oracle/product/19.3.0/dbhome_1
Oracle data /u02/app/oracle/oradata
Oracle Recovery Files /u03/app/oracle/flash_recovery_area

Create Oracle Base
# mkdir -p /u01/app/oracle
# chown -R oracle.oinstall /u01/app 
# chmod -R 775 /u01/app 
Create Oracle Home
$ mkdir -p /u01/app/oracle/product/19.3.0/dbhome_1
Create Oracle Data Directory
# mkdir -p /u02/app/oracle/oradata
# chown -R oracle.oinstall /u02/app 
# chmod -R 775 /u02/app 
Create Recovery Directory
# mkdir -p /u03/app/oracle/flash_recovery_area 
# chown -R oracle.oinstall /u03/app 
# chmod -R 775 /u03/app 
 

Configuring  Kernel Parameters for Linux

This section focuses on preparing the CentOS/RedHat 8 machine for Oracle 19c installation. This section include verfying memory and swap space , setting shared memory and semaphores, setting the maximum number of file handles, setting IP local port range.


Following table show the minimum kernel parameter settings
If the current value for any parameter is greater than the value listed in this table, then the Fixup scripts do not change the value of that parameter.
Parameter Value File
semmsl
semmns
semopm
semmni
250
32000
100
128
/proc/sys/kernel/sem
shmall Greater than or equal to the value of shmmax, in pages. /proc/sys/kernel/shmall
shmmax Half the size of physical memory in bytes /proc/sys/kernel/shmmax
shmmni 4096 /proc/sys/kernel/shmmni
panic_on_oops 1 /proc/sys/kernel/panic_on_oops
file-max 6815744 /proc/sys/fs/file-max
aio-max-nr 1048576
Note: This value limits concurrent outstanding requests and should be set to avoclass="tblrow" I/O subsystem failures.
/proc/sys/fs/aio-max-nr
ip_local_port_range Minimum: 9000
Maximum: 65500
/proc/sys/net/ipv4/ip_local_port_range
rmem_default 262144 /proc/sys/net/core/rmem_default
rmem_max 4194304 /proc/sys/net/core/rmem_max
wmem_default 262144 /proc/sys/net/core/wmem_default
wmem_max 1048576 /proc/sys/net/core/wmem_max

1. The kernel parameter need to persist after reboot. there are serveral method to set kernel parameter. In CentOS 8 or RedHat 8  i used /etc/sysctl.d/ and create a file 97-oracle-database-sysctl.conf  file and add kernel parameter in it.
# vim /etc/sysctl.d/97-oracle-database-sysctl.conf 

fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4057989120
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.panic_on_oops = 1


2. To Change current value of kernel parameter
# /sbin/sysctl --system 

Review the output of above command, if the value is incorrect, edit 97-oracle-database-sysctl.conf file, then enter this command again.
3. Confirm that value are set correctly.
# /sbin/sysctl -a 

4. Restart the system or enter sysctl --system command to make the changes in 97-oracle-database-sysctl.conf file avilable in active memory of kernel.

 Download Oracle19c and extract it

 After above mentioned steps now we need Oracle Software 19c Zip file. Download it from Oracle Website. 
Unzip downloaded file into Oracle Home directory i.e. /u01/app/oracle/product/19.3.0./dbhome_1/

I have downloded Oracle Software under /home/oracle/oracle19c/ . Enter following command to extract zip file to ORACLE Home. Note -> Starting from Oracle 18c, zip file should be extracted into ORACLE Home location.
$ unzip ~/oracle19c/LINUX.X64_193000_db_home.zip -d /u01/app/oracle/product/19.3.0/dbhome_1/ 

Install Prerequisite packages

Nowadays all the required packages are available for Oracle database installation but i Got few errors. So I mentioned thoses and steps i used to solved.

Error-1: /u01/app/oracle/product/19.3.0/dbhome_1/perl/bin/perl: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

For this check the following perl script
$ ldd /u01/app/oracle/product/19.3.0/dbhome_1/perl/bin/perl
        linux-vdso.so.1 (0x00007ffd0e9b1000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f31d8706000)
        libnsl.so.1 => not found
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f31d82e9000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f31d7f67000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f31d7d3e000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f31d7b3a000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f31d7776000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f31d755e000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f31d8926000)

To solved this install following packages
dnf install -y libnsl
dnf install -y libnsl.i686
dnf install -y libnsl2
dnf install -y libnsl2.i686
dnf install -y xorg-x11-xauth

Error-2: [WARNING] [INS-08101] Unexpected error while executing the action at state: 'supportedOSCheck' CAUSE: No additional information available. ACTION: Contact Oracle Support Services or refer to the software manual. SUMMARY: - java.lang.NullPointerException
To solve this i enter the following command.
$ export CV_ASSUME_DISTID=RHEL7.6

Now I again start installer.
 $ cd $ORACLE_HOME
$ ./runInstaller
 

POST Installation work

1. Oracle Network Configuration 

After successful installtion of Oracle, we need to configure Listener. and If we want to use tnsname to connect database then we need to configure tnsnames.ora file.

   a. Configuring Listener


Steps Involved in Configuring Listner.

1. Start Listener

$ switch to Oracle user if not 
$ su - oracle
$ -- use lsnrctl command to check listener
$ lsnrctl
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 08-FEB-2020 08:48:51

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> status
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=devbase.lambda.asia)(PORT=1539)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                05-FEB-2020 07:48:08
Uptime                    3 days 1 hr. 1 min. 9 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/devBase/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1539)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=localhost)(PORT=5500))(Security=(my_wallet_directory=/u01/app/oracle/admin/devdb/xdb_wallet))(Presentation=HTTP)(Session=RAW))
Services Summary...
Service "86b637b62fdf7a65e053f706e80a27ca.lambda.asia" has 1 instance(s).
  Instance "devdb", status READY, has 1 handler(s) for this service...
Service "9dcb836d9b005d05e055000000000001.lambda.asia" has 1 instance(s).
  Instance "devdb", status READY, has 1 handler(s) for this service...
Service "9df280b47456442ee055000000000001.lambda.asia" has 1 instance(s).
  Instance "devdb", status READY, has 1 handler(s) for this service...
Service "devdb.lambda.asia" has 1 instance(s).
  Instance "devdb", status READY, has 1 handler(s) for this service...
Service "devdbXDB.lambda.asia" has 1 instance(s).
  Instance "devdb", status READY, has 1 handler(s) for this service...
Service "devpdb.lambda.asia" has 1 instance(s).
  Instance "devdb", status READY, has 1 handler(s) for this service...
Service "studentpdb.lambda.asia" has 1 instance(s).
  Instance "devdb", status READY, has 1 handler(s) for this service...
The command completed successfully

2. Configure Listener
  •   connect oracle database server using sqlplus / as sysdba
  •   Now check available services use  -  select name from v$services;
  •   Now check listener parameter  use - show parameter listener
  •   Now alter local_listener parameter value if it is not set. two ways 
    • Either use - alter sysetm set local_listener='(ADDRESS = (PROTOCOL=TCP)(HOST=devbase.lambda.asia)(PORT=1539))' scope=both;
    • or use listener alias, Listener alias we can get from lisenter.ora file 
      [oracle@devBase admin]$ cat listener.ora 
      # listener.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/listener.ora
      # Generated by Oracle configuration tools.
      
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = devbase.lambda.asia)(PORT = 1539))
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          )
        )
      
      SQL>alter sysetm set local_listener='LISTENER' scope =both;

b . Configure tnsnames.ora

Luckliy Oracle provide us a very handy tools for doing this. it is net manager.  To open net manager in CentOS 8 or RedHat 8 we  enter following command


 $ netmgr & 
Now we configure tnsnames for our servers.



 Connect with PDB

From oracle 12c onwards oracle introduce concept of pluggable database. we can connect pluggable database by following steps

Method using SQLPLUS alter session

1. sqlplus / as sysdba
2. select name,open_mode from v$pdbs;
or 
2. show pdbs;
if open_mount is not in read write then enter following query
3. alter pluggable database all open;
4. now alter session - alter session set container=devpdb;
5. show con_name -> it will present you pluggable database name.

using TNSNAMES.ora configuration

1. conn system/password@devpdb
2. verify that you are connected with pdbs or not show con_name;

Installing Example database

Here I am going to explain how to install example database manually.

Download Script From Github

Starting from Oracle 12.2 , the sample schemas are avialable on github. 


Extract the Downloaded File

Extract downloaded file  directly into the $ORACLE_HOME/demo/schema
$ unzip db-sample-schemas-19.2.zip -d $ORACLE_HOME/demo/schema 

Adjust working directory

Enter the following perl command to replace "_SUB_CWD" tag in the scripts with current working directory

$ cd $ORACLE_HOME/demo/schema
$ perl -p -i.bak -e ‘s#SUB__CWD#’$(pwd)’#g’ *.sql */*.sql */*.dat
 

Install Sample Schema

1. Connect with pdb where you want to create these schema

$ sqlplus / as sysdba
SQL> conn system/password@devpdb
Connected.

2. Create dedicated tablespace

SQL> -- verify tablespace
SQL> select tablespace_name, b.file_name from dba_tablespaces a join dba_data_files b using (tablespace_name); 
TABLESPACE_NAME                FILE_NAME                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
------------------------------ ----------------------------------------------------------------
SYSTEM                         /u02/app/oracle/oradata/DEVDB/devpdb/system01.dbf                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
SYSAUX                         /u02/app/oracle/oradata/DEVDB/devpdb/sysaux01.dbf                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
UNDOTBS1                       /u02/app/oracle/oradata/DEVDB/devpdb/undotbs01.dbf                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
USERS                          /u02/app/oracle/oradata/DEVDB/devpdb/users01.dbf 
 
SQL> create tablespace example datafile '/u02/app/oracle/oradata/DEVDB/devpdb/example.dbf'
size 100M AUTOEXTEND ON next 10M 
extent management local;
Tablespace EXAMPLE created.

3. Install sample schemas


SQL> -- Now we run mksample.sql sql script
@mksample systempw syspw hrpw oepw pmpw ixpw shpw bipw example temp /your/path/to/log/ connect_stri
where mksample is located inside $ORACLE_HOME/demo/schema/ 
systempw - System User password
syspw - Sys user password
hrpw - Hr User Password
oepw - OE(Order Entry) user password
pmpw - pm(Print media) user password
ixpw - ix(Information exchange) user password
shpw - sh( Sale history) user password
bipw - bi (business information) user password
example - tablespace
temp - tablespace
/log - log location
connect_string - system/password@devpdb

$ cd $ORACLE_HOME/demo/schema
$ sqlplus / as sysdba
SQL> @?/demo/schema/mksample password password hr oe pm ix sh bi example temp $ORACLE_HOME/demo/schema/log devbase.lambda.asia:1539/devpdb.lambda.asia