Tag Archives: oracle

Local mirror of Oracle public yum – UPDATED

Updating Oracle Linux installations via the Oracle public yum server has been cumbersome because the download speeds I have been getting are quite terrible.

Having quite a number of Oracle Linux installations compounds the issue as each server will have to endure the same slow download speeds for the same packages.  One way to stop this from happening is having a local mirror of the public yum server.  This local mirror will perform the download of the packages from the public yum server, and all other Oracle Linux installations will then grab the packages from the local mirror, saving lots of time.

I have been scouring the internet for days looking for the best way to do this, and I think the best guide so far comes from this post by Martin Nash.

I hope to setup my own mirror soon.


Update 19 August 2013

Below are the steps to setup yum mirror from a fresh CentOS 6.4 Minimal Install.

Create the directory to put the repository in.

# mkdir -p /repos/x86_64

Install the yum-utils and createrepo packages that provide the reposync and createrepo commands.

# yum install yum-utils createrepo

Set up the repository to mirror as per the instruction at Oracle.  Open the repo file and disable all repos by making sure enabled=0 for all repos.

# vi /etc/yum.repos.d/public-yum-ol6.repo

Run reposync.  This will take quite a long time, especially with the slow speeds from the Oracle public yum server.

# reposync --repoid=ol6-latest --repoid=ol6-UEK-latest -p /repos/ol6

After the reposync command finished downloading all the packages from the source repo, run createrepo to create the repository metadata.

# createrepo /repos/ol6/ol6_UEK_latest/getPackage/
# createrepo /repos/ol6/ol6_latest/getPackage/

Create a script to re-run the above as often as required (I am going to run it once a day).

#!/bin/bash
LOG_FILE=/repos/logs/orayum-update_$(date +%Y.%m.%d).log
/usr/bin/reposync --repoid=ol6_latest --repoid=ol6_UEK_latest -p /repos/ol6 >> $LOG_FILE 2>&1
/usr/bin/createrepo /repos/ol6/ol6_UEK_latest/getPackage/ >> $LOG_FILE 2>&1
/usr/bin/createrepo /repos/ol6/ol6_latest/getPackage/ >> $LOG_FILE 2>&1

Create the directories to store the script and logs, and move the script inside the directory

# mkdir -p /repos/logs
# mkdir -p /repos/scripts
# mv orayum-update.sh /repos/scripts

Make the script executable

# chmod +x /repos/scripts/orayum-update.sh

Add the script to crontab, and run once every day.

# crontab -e
0 0 * * * /repos/scripts/orayum-update.sh

# crontab -l
0 0 * * * /repos/scripts/orayum-update.sh

Install and configure Apache webserver.

# yum install httpd
# chkconfig httpd on
# service httpd start

Now configure Apache to serve the repository.

# mkdir -p /var/www/html/repo/OracleLinux/OL6/latest
# mkdir -p /var/www/html/repo/OracleLinux/OL6/UEK/latest
# ln -s /repos/ol6/ol6_latest/getPackage/ /var/www/html/repo/OracleLinux/OL6/latest/x86_64
# ln -s /repos/ol6/ol6_UEK_latest/getPackage/ /var/www/html/repo/OracleLinux/OL6/UEK/latest/x86_64

Open up the firewall for Apache.

# iptables -I INPUT 5 -p tcp --dport 80 -m state --state NEW -j ACCEPT
# service iptables save

Now we need to fix the SELinux contexts for the repository files, so that the repository, which is soft-linked from the /var/www/html sub-folders, can be served by Apache.

# yum install policycoreutils-python
# semanage fcontext -a -t httpd_sys_content_t "/repos/ol6/ol6_latest/getPackage(/.*)?"
# semanage fcontext -a -t httpd_sys_content_t "/repos/ol6/ol6_UEK_latest/getPackage(/.*)?"
# restorecon -R -v /repos/ol6/

Get the repository GPG key as well, and put it into the root Apache directory.

# cd /var/www/html
# wget http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6

Now the local yum mirror is fully setup!  Local Oracle Linux 6 installations can now use this repository by creating a repo file in /etc/yum.repos.d/ folder.

# cd /etc/yum.repos.d
# vi public-yum-ol6-local.repo

The repo file looks something like this:

[ol6_latest_local]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=http://<hostname>/repo/OracleLinux/OL6/latest/$basearch/
gpgkey=http://<hostname>/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
enabled=1

[ol6_UEK_latest_local]
name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
baseurl=http://<hostname>/repo/OracleLinux/OL6/UEK/latest/$basearch/
gpgkey=http://<hostname>/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
enabled=1

Done!

Upgrade to Oracle 12c Exam

Just registered for the 1Z1-060 exam.  Time to read up!

New Features of Oracle Database 12c
Enterprise Manager and Other Tools
  • Use EM Express
  • Use OUI, DBCA for installation and configuration
Basics of Multitenant Container Database (CDB)
  • Identify the benefits of the multitenant container database
  • Explain root and multitenant architecture
Configuring and Creating CDBs and PDBs
  • Create and configure a CDB
  • Create and configure a PDB
  • Migrate a non-CDB to a PDB database
Managing CDBs and PDBs
  • Establish connection to a CDB/PDB
  • Start up and shut down a CDB/PDB
  • Change instance parameters for a CDB/PDB
Managing Tablespaces, Common and Local Users, Privileges and Roles
  • Manage tablespaces in a CDB/PDB
  • Manage users and privileges for CDB/PDB
Backup, Recovery and Flashback for a CDB/PDB
  • Perform backup of CDB and PDB
  • Perform recovery of CDB and PDB
  • Perform Flashback for a CDB
Information Lifecycle Management and Storage Enhancements
  • Use ILM features
  • Perform tracking and automated data placement
  • Use Online Move Datafile
In-Database Archiving and Valid-Time Temporal
  • Differentiate between IL and Valid-Time Temporal
  • Set and use Valid Time Temporal
  • Use In-Database archiving
Auditing
  • Enable and configure Unified Audit Data Trail
  • Create and enable audit policies
Privileges
  • Use administrative privileges
  • Create, enable and use privilege analysis
Oracle Data Redaction
  • Use and manage Oracle Data Redaction policies

RMAN and Flashback Data Archive

  • Use RMAN enhancements
  • Implement the new features in Flashback Data Archive
Real-Time Database Operation Monitoring
  • Implement real-time database operation monitoring
SQL Tuning
  • Use Adaptive Execution Plans
  • Use enhanced features of statistics gathering
  • Use Automatic SQL Plan Management
Emergency Monitoring, Real-Time ADDM, Compare Period ADDM, and Active Session History (ASH) Analytics
  • Perform emergency monitoring and real-time ADDM
  • Generate ADDM Compare Period
  • Diagnose performance issues using ASH enhancements
Resource Manager and Other Performance Enhancements
  • Use Resource Manager for a CDB and PDB
  • Explain Multi-process Multi-threaded Oracle architecture
  • Use Flash Cache
Index and Table Enhancements
  • Use Index enhancements
  • Use Table enhancements
  • Use Online operation enhancements
ADR and Network Enhancements
  • Explain ADR enhancements
Oracle Data Pump, SQL*Loader, External Tables and Online Operations Enhancements
  • Use Oracle Data Pump enhancements
  • Use SQL*Loader and External table enhancements
Partitioning Enhancements
  • Explain Partitioning enhancements
  • Explain Index enhancements for partitioned tables
SQL Enhancements
  • Use Oracle Database Migration Assistant for Unicode
  • Use Row limiting clause, and secure file LOBs enhancements
  • Configure extended datatypes
Key DBA Skills
Core Administration
  • Explain the fundamentals of DB architecture
  • Install and configure a database
  • Configure server and client network for a database
  • Monitor database alerts
  • Perform daily administration tasks
  • Apply and review patches
  • Back up and recover the database
  • Troubleshoot network and database issues
  • Detect and repair data failures with Data Recovery Advisor
  • Implement Flashback Technology
  • Load and Unload Data
  • Miscellaneous
    • Relocate SYSAUX occupants
    • Create a default permanent tablespace
    • Use the Redo Logfile Size Advisor
    • Use Secure File LOBs
    • Use Direct NFS
Performance Management
  • Design the database layout for optimal performance
  • Monitor performace
  • Manage memory
  • Analyze and identify performance issues
  • Perform real application testing
  • Use Resource Manager to manage resources
  • Implement Application Tuning
Storage
  • Manage database structures
  • Administer ASM
  • Manage ASM disks and diskgroups
  • Manage ASM instance
  • Manage VLDB
  • Implement Space Management
Security
  • Develop and implement a security policy
  • Configure and manage auditing
  • Create the password file
  • Implement column and tablespace encryption

Using nice URLs for APEX

So, I have installed the OS to my server, and subsequently installed the latest Oracle Express Database, and now I can start making applications using Oracle Application Express (APEX).

I can access the APEX login page by typing in the following address:

http://host.domain.com:8080/apex/

Notice the ugly :8080 after the hostname? That is because the APEX installation on Oracle XE defaults to using the Embedded PL/SQL Gateway (EPG) and EPG listens to port 8080 by default.

I want to change the URL to a ‘nicer-looking’ one. One way of doing this is to configure EPG to listen to port 80.  This is especially fine if APEX is the sole purpose of the server. However, since the server will be used for other purposes, this is undesirable because EPG cannot serve as a regular webserver, and therefore cannot replace Apache.

Another way to give APEX a nice URL is to use Apache’s reverse proxy feature.  The users will not directly access APEX via EPG but will connect to Apache, which in turn will connect to APEX.

First, set up the proxy directives in apache conf:

<IfModule mod_proxy.c>
#ProxyRequests should be turned off to disable forward proxy
ProxyRequests Off
<Proxy *>
    Order allow,deny
    Allow from all
</Proxy>
</IfModule>

Then put in the actual proxy configuration for APEX:

NameVirtualHost *:80

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName host.domain.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/www/html"
    ServerName apex.domain.com

    Redirect    /       http://apex.domain.com/apex/

    <Location /apex/>
        ProxyPass               http://localhost:8080/apex/
        ProxyPassReverse        http://localhost:8080/apex/
    </Location>

    <Location /i/>
        ProxyPass               http://localhost:8080/i/
        ProxyPassReverse        http://localhost:8080/i/
    </Location>
</VirtualHost>

Now the browser will show the APEX login page when you go to apex.domain.com.