<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Andrew Pazikas</title>
    <description>The latest articles on DEV Community by Andrew Pazikas (@pazyp).</description>
    <link>https://dev.to/pazyp</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F462929%2F8af69adf-2503-4216-9768-c20692d03198.jpg</url>
      <title>DEV Community: Andrew Pazikas</title>
      <link>https://dev.to/pazyp</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pazyp"/>
    <language>en</language>
    <item>
      <title>4 Best FREE Resources for learning Linux Online</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Thu, 10 Jun 2021 12:56:08 +0000</pubDate>
      <link>https://dev.to/pazyp/4-best-free-resources-for-learning-linux-online-1fio</link>
      <guid>https://dev.to/pazyp/4-best-free-resources-for-learning-linux-online-1fio</guid>
      <description>&lt;p&gt;It’s hard to pin down exactly how popular Linux is on the web, but recent studies estimate Unix and Unix-like operating systems power about 70% of all web servers.&lt;/p&gt;

&lt;p&gt;At least half of those run Linux—and probably the vast majority.&lt;/p&gt;

&lt;p&gt;If you are on a technology learning journey no matter if its back-end development, front-end or server admin it is a great skill to have know or at least have some basic knowlage around.&lt;/p&gt;

&lt;p&gt;With over 10 years in the industry as a DBA and Sys Admin here are my top 4 resources for learning and mastering Linux/Unix.&lt;/p&gt;

&lt;h1&gt;
  
  
  Introduction to Linux
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.edx.org/course/introduction-to-linux"&gt;https://www.edx.org/course/introduction-to-linux&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  The “Start From Scratch” Linux Course
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.netacad.com/courses/os-it/ndg-linux-unhatched"&gt;https://www.netacad.com/courses/os-it/ndg-linux-unhatched&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Linux Essentials
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.netacad.com/courses/os-it/ndg-linux-essentials"&gt;https://www.netacad.com/courses/os-it/ndg-linux-essentials&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Fundamentals of Red Hat Enterprise Linux
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://www.edx.org/course/fundamentals-of-red-hat-enterprise-linux"&gt;https://www.edx.org/course/fundamentals-of-red-hat-enterprise-linux&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  BONUS – Shell Scripting
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Bash
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/learning/learning-bash-scripting-2?trk=learning-serp_learning_search-card&amp;amp;upsellOrderOrigin=default_guest_learning"&gt;https://www.linkedin.com/learning/learning-bash-scripting-2?trk=learning-serp_learning_search-card&amp;amp;upsellOrderOrigin=default_guest_learning&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Python
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=rfscVS0vtbw&amp;amp;feature=emb_logo"&gt;https://www.youtube.com/watch?v=rfscVS0vtbw&amp;amp;feature=emb_logo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What are your best learning resources for learning Linux? Please comment below.&lt;/p&gt;

&lt;p&gt;If you like my articles please check out my &lt;a href="https://pazikas.com/articles/"&gt;blog&lt;/a&gt; and follow me on &lt;a href="https://twitter.com/PazyP"&gt;Twitter&lt;/a&gt; where I share most of my tips.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>showdev</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>Small "side gig" type freelance?</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Sat, 05 Jun 2021 21:36:06 +0000</pubDate>
      <link>https://dev.to/pazyp/small-side-gig-type-freelance-2f4j</link>
      <guid>https://dev.to/pazyp/small-side-gig-type-freelance-2f4j</guid>
      <description>&lt;p&gt;Hi,&lt;/p&gt;

&lt;p&gt;Has anyone had good success going freelance work on the side while maintaining a full-time job? Personally I have extensive database knowledge as well as being very competent with Linux shell scripting and Python. I like the idea of "side gig" freelance work but how does one find small enough projects where the client doesn't expect you to be on hand for 30/35hrs per week (since I would be doing my full-time job).&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>A simple Oracle DB connection in Python</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Tue, 25 May 2021 13:48:20 +0000</pubDate>
      <link>https://dev.to/pazyp/a-simple-oracle-db-connection-in-python-4gid</link>
      <guid>https://dev.to/pazyp/a-simple-oracle-db-connection-in-python-4gid</guid>
      <description>&lt;p&gt;If you are managing a python backend with an wanting an Oracle database to serve you data you will likely need to use the cx_Oracle module to create an Oracle DB connection. Heres a little Python snippet to create an Oracle DB connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Oracle?
&lt;/h2&gt;

&lt;p&gt;Many of use small time use common Opensource DBs like mySQL and PostgreSQL but in large corporations many of the database estate is Oracle therefore it helps to have an idea on how to work with it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;cx_Oracle&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;

&lt;span class="n"&gt;inst&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"ORACLE_SID"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="n"&gt;dbconn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cx_Oracle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mode&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;cx_Oracle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SYSDBA&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;print&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Connected to Oracle instance "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;inst&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" ("&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;dbconn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="s"&gt;")"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;release&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;dbconn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;version&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;split&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'.'&lt;/span&gt;&lt;span class="p"&gt;))[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;cx_Oracle&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DatabaseError&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
  &lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;
  &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Error connecting to instance: "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;inst&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" : "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="s"&gt;")



db = dbconn.cusrsor()```

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>database</category>
      <category>webdev</category>
      <category>python</category>
      <category>beginners</category>
    </item>
    <item>
      <title>
5 Steps to use Oracle Database with Vagrant</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Tue, 02 Mar 2021 08:42:15 +0000</pubDate>
      <link>https://dev.to/pazyp/5-steps-to-use-oracle-database-with-vagrant-8i</link>
      <guid>https://dev.to/pazyp/5-steps-to-use-oracle-database-with-vagrant-8i</guid>
      <description>&lt;p&gt;I’ve written about my love for Vagrant a few times already here, today I will show the steps to getting an Oracle Database with Vagrant.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Love Vagrant
&lt;/h2&gt;

&lt;p&gt;It is just so simple, I recall the days when I used to have to package up my own VM’s for re-use it wasn’t difficult but it was a time sink at the end of the day, Vagrant has a pretty good level of adoption with most of the big Tech software corps producing some sort of Vagrant box or support making is super easy to spin up Virtual Machines with the software you need.&lt;/p&gt;

&lt;p&gt;I also really like how Vargant is file-based, editing the Vagrantfile is really simple meaning you can add additional custom tools to a virtual host as you please making Vagrant ideal for use a lab environment as you can very easily create a Vagrantfile that mimics your production infrastructure giving you a like for like testbed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Oracle Database with Vagrant
&lt;/h2&gt;

&lt;p&gt;Thankfully once again on Oracle’s GitHub, they provide a bunch of different Vagrant Images for your use here. Personally, I have used OracleDatabase, OracleLinux, and OracleRAC images.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Oracle Database Vagrant Files
&lt;/h2&gt;

&lt;p&gt;Let's pull the Oracle Vagrant file repo down to our own machines;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;PS D:\Vagrant&amp;gt; git clone https://github.com/oracle/vagrant-projects.git&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Cloning into 'vagrant-projects'...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;remote: Enumerating objects: 18, done.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;remote: Counting objects: 100% (18/18), done.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;remote: Compressing objects: 100% (17/17), done.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;remote: Total 2509 (delta 3), reused 5 (delta 0), pack-reused 2491&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Receiving objects: 100% (2509/2509), 1.12 MiB | 2.42 MiB/s, done.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Resolving deltas: 100% (1508/1508), done.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Change to Database Directory&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;As you see when pulling the repo down from GitHub Oracle have a bunch of different software application available for you to start. In the article, we’re showing Oracle Database with Vagrant but the steps are applicable to all applications.&lt;/p&gt;

&lt;p&gt;Move into the 19.3 directories. For this post, we will use 19.3 but from the screen below you see 11g, 12c, 18 &amp;amp; 19 are available.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;PS D:\Vagrant\vagrant-projects\OracleDatabase&amp;gt; ls&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Move Oracle Database .zip Files
&lt;/h2&gt;

&lt;p&gt;Once we are in the directory we need to place the Oracle 19c database installation .zip files here so that our Vargant VM can pick them up and install an Oracle Database for us.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;PS D:\Vagrant\vagrant-projects\OracleDatabase\19.3.0&amp;gt; ls&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Start Oracle Database with Vagrant
&lt;/h2&gt;

&lt;p&gt;Next, it’s as simple as typing Vagrant up command, which will then go away and build you an Oracle Database Virtual machine running on Oracle Linux 7. It takes a little bit of time as it installs the database so it’s worth going to make a coffee on my host it took 30 minutes to get a working VM. If you’re starting the VM again it will be much faster, the initial start is the only one that takes the time.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;PS D:\Vagrant\vagrant-projects\OracleDatabase\19.3.0&amp;gt; vagrant up&lt;/code&gt;&lt;br&gt;
&lt;code&gt;...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;oracle-19c-vagrant: ORACLE PASSWORD FOR SYS, SYSTEM AND PDBADMIN: 5UPTEi9mXjA=1&lt;/code&gt;&lt;br&gt;
&lt;code&gt;oracle-19c-vagrant: INSTALLER: Installation complete, database ready to use!&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Log in to Oracle Database
&lt;/h2&gt;

&lt;p&gt;Head onto your Virtual Machine using vagrant ssh and check the database;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;PS D:\Vagrant\vagrant-projects\OracleDatabase\19.3.0&amp;gt; vagrant ssh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Welcome to Oracle Linux Server release 7.9 (GNU/Linux 5.4.17-2011.6.2.el7uek.x86_64)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;The Oracle Linux End-User License Agreement can be viewed here:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;* /usr/share/eula/eula.en_US&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;For additional packages, updates, documentation and community help, see:&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;* https://yum.oracle.com/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[vagrant@oracle-19c-vagrant ~]$ sudo su - oracle&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Last login: Sun Feb 21 14:22:42 GMT 2021&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[oracle@oracle-19c-vagrant ~]$ ps -ef |grep -i listener&lt;/code&gt;&lt;br&gt;
&lt;code&gt;oracle    8263     1  0 14:06 ?        00:00:00 /opt/oracle&lt;/code&gt;&lt;br&gt;
&lt;code&gt;/product/19c/dbhome_1/bin/tnslsnr LISTENER -inherit&lt;/code&gt;&lt;br&gt;
&lt;code&gt;oracle   12907 12883  0 14:26 pts/0    00:00:00 grep --color=auto -i listener&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[oracle@oracle-19c-vagrant ~]$ ps -ef |grep -i pmon&lt;/code&gt;&lt;br&gt;
&lt;code&gt;oracle   12294     1  0 14:22 ?        00:00:00 ora_pmon_ORCLCDB&lt;/code&gt;&lt;br&gt;
&lt;code&gt;oracle   12914 12883  0 14:26 pts/0    00:00:00 grep --color=auto -i pmon&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[oracle@oracle-19c-vagrant ~]$ . oraenv&lt;/code&gt;&lt;br&gt;
&lt;code&gt;ORACLE_SID = [ORCLCDB] ?&lt;/code&gt;&lt;br&gt;
&lt;code&gt;The Oracle base remains unchanged with value /opt/oracle&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[oracle@oracle-19c-vagrant ~]$ cat /etc/oratab&lt;/code&gt;&lt;br&gt;
&lt;code&gt;ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[oracle@oracle-19c-vagrant ~]$ sqlplus / as sysdba&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SQL*Plus: Release 19.0.0.0.0 - Production on Sun Feb 21 14:26:47 2021&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Version 19.3.0.0.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Copyright (c) 1982, 2019, Oracle.  All rights reserved.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Connected to:&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 -&lt;/code&gt; &lt;code&gt;Production&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Version 19.3.0.0.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SQL&amp;gt; select version from v$instance;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;VERSION&lt;/code&gt;&lt;br&gt;
&lt;code&gt;-----------------&lt;/code&gt;&lt;br&gt;
&lt;code&gt;19.0.0.0.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now we have a 19.3 Oracle database running on Oracle Linux 7 for your use in a lab or at home for any testing or checking you want to perform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;From the steps above you can hopefully see how simple Vagrant can be, if you have any questions or get stuck please get in touch and I can help you through your issues.&lt;/p&gt;

</description>
      <category>database</category>
      <category>devops</category>
      <category>showdev</category>
      <category>oracle</category>
    </item>
    <item>
      <title>Transform CentOS to Oracle Linux in 2 Easy Steps</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Tue, 23 Feb 2021 09:03:38 +0000</pubDate>
      <link>https://dev.to/pazyp/transform-centos-to-oracle-linux-in-2-easy-steps-21k0</link>
      <guid>https://dev.to/pazyp/transform-centos-to-oracle-linux-in-2-easy-steps-21k0</guid>
      <description>&lt;p&gt;I’ve been meaning to write an article on how to switch from CentOS to Oracle Linux for a while since Red Hat owned by IBM announced its new direction for CentOS, I’ve found myself with a bit of spare time over the weekend so finally got around to documenting the steps required to migrate from CentOS to Oracle Linux.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is CentOS?
&lt;/h2&gt;

&lt;p&gt;CentOS (Community Enterprise Operating System) was a Linux distribution that provided a free, community-supported computing platform functionally compatible with its upstream source,&lt;br&gt;
Red Hat Enterprise Linux in January 2014, CentOS announced the official joining with Red Hat while staying independent from RHEL under a new CentOS governing board. The first CentOS release in May 2004, numbered CentOS version 2, was forked from RHEL version 2.1AS with the most recent version being CentOS 8 released on 24 September 2019.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Switch?
&lt;/h2&gt;

&lt;p&gt;In December last year, Red Hat announced that CentOS that the availability of CentOS undermines the commercial side of its business with CentOS becoming CentOS Stream, which is is a development preview of what is soon to come in Red Hat Enterprise Linux, focused on the next minor release. Fedora another distribution maintained by Red Hat is further ahead and more experimental than what CentOS will become.&lt;/p&gt;

&lt;p&gt;In the past, CentOS has been a community build of the current RHEL source, providing a robust production distro for those willing to do without Red Hat support. When RHEL gets a fix, the project aims to have the same fix available for CentOS “within 72 hours” of its release, while new point releases of CentOS come “four to eight weeks after the release by upstream.” In other words, CentOS tracked RHEL. But with this new update, the direction changes making CentOS a more experimental OS rather than the stable distro capable of production workloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Oracle Linux
&lt;/h2&gt;

&lt;p&gt;Not Oracle you say why move away from one corporate overload (IBM owns Red Hat) and jump in the pan with another (Oracle)?&lt;br&gt;
CentOS to Oracle Linux&lt;/p&gt;

&lt;p&gt;Oracle Linux much like what CentOS does tracks the RHEL base release and bar Oracles Unbreakable Kernal is pretty much a direct clone of Red Hat with some Oracle branding slapped over the Red Hat stuff. Oracle previously posted about it here and to alleviate some concerns provides an FAQ.&lt;br&gt;
Switching from CentOS to Oracle Linux&lt;/p&gt;

&lt;p&gt;Switching from CentOS to Oracle Linux couldn’t be easier, Oracle provides a lovely shell script to do all the hard work for you, you can get it from their GitHub. Let’s demo the process below. I’ve used a CentOS 7 Vagrant host to perform the process which you can manually download yourself here or if you are already using Vargant just follow the steps below. I’ve written about Vagrant before if you are interested.&lt;/p&gt;

&lt;p&gt;Let's get the vagrant CentOS 7 vagrant file and start the machine;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vagrant init centos/7&lt;br&gt;
vagrant up&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With CentOS 7 installed let's install git and ensure all the packages are up-to-date;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[vagrant@localhost ~]$ cat /etc/redhat-release&lt;br&gt;
CentOS Linux release 7.9.2009 (Core)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo yum install git&lt;br&gt;
sudo yum update &amp;amp;&amp;amp; sudo yum upgrade -yum&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Get Oracle’s script to swap the OS from CentOS to Oracle Linux&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git clone https://github.com/oracle/centos2ol.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Run the centos2ol.sh script;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[root@localhost centos2ol]# ls&lt;/code&gt;&lt;br&gt;
&lt;code&gt;centos2ol.sh&lt;/code&gt;  &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;  &lt;code&gt;LICENSE.txt&lt;/code&gt;  &lt;code&gt;README.md&lt;/code&gt; &lt;code&gt;SECURITY.md&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[root@localhost centos2ol]# ./centos2ol.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It doesn't take long at all to do the changes, my example took about 5 minutes to run. Below I have posted an extract of the logs&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[root@localhost centos2ol]# ./centos2ol.sh&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Checking for required packages...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Checking your distribution...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;package epel-release is not installed&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Checking for yum lock...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Checking for required python packages...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Finding your repository directory...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Learning which repositories are enabled...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Repositories enabled before update include:&lt;/code&gt;&lt;br&gt;
&lt;code&gt;base&lt;/code&gt;&lt;br&gt;
&lt;code&gt;extras&lt;/code&gt;&lt;br&gt;
&lt;code&gt;updates&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Looking for yumdownloader...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Backing up and removing old repository files...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Removing CentOS-specific yum configuration from /etc/yum.conf&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Downloading Oracle Linux release package...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Loaded plugins: fastestmirror&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Loading mirror speeds from cached hostfile&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;...&lt;/code&gt;&lt;br&gt;
&lt;code&gt;...&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;done&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Removing yum cache&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Switch complete. Oracle recommends rebooting this system.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After a reboot of the host, we see we have successfully moved from CentOS to Oracle Linux&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[vagrant@localhost ~]$ uptime&lt;/code&gt;&lt;br&gt;
 &lt;code&gt;12:31:05 up 0 min,  1 user,  load average: 1.17, 0.42, 0.15&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[vagrant@localhost ~]$ cat /etc/redhat-release&lt;/code&gt;&lt;br&gt;
&lt;code&gt;RedHat Enterprise Linux Server release 7.9 (Maipo)&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[vagrant@localhost ~]$ cat /etc/oracle-release&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Oracle Linux Server release 7.9&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Other Options
&lt;/h2&gt;

&lt;p&gt;Another option is to wait on Rocky Linux, after the news broke Gregory Kurtzer, the founder of the CentOS project who had been out of the scene for a few years would return and create Rocky Linux with the goal of building a community enterprise operating system designed to be 100 percent bug-for-bug compatible with Red Hat Enterprise Linux. This is great news but it’s likely to be a year or two away at the earliest, you can help out with Rocky Linux and track updates on their website here.&lt;/p&gt;

&lt;p&gt;Cloud Linux OS made a similar announcement as well that it would also work on making a CentOS/Red Hat clone called AlmaLinux. Both Rocky Linux and AlmaLinux are still developing their respective operating systems but Alma already has a working Beta which you can check out here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;Whether you like Oracle or not they have provided a viable way to move from CentOS to Oracle Linux as Red Hat starts to utilize CentOS for experimental features do you really want production hosts running on such a distro?&lt;/p&gt;

</description>
      <category>linux</category>
      <category>database</category>
      <category>oracle</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Vagrant Comand Cheat Sheet</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Tue, 16 Feb 2021 19:46:20 +0000</pubDate>
      <link>https://dev.to/pazyp/vagrant-comand-cheat-sheet-171m</link>
      <guid>https://dev.to/pazyp/vagrant-comand-cheat-sheet-171m</guid>
      <description>&lt;p&gt;Some useful commands I have collected to act as a Vagrant cheat sheet for using Vagrant. More for my own reference than anything else but sharing and posting on my blog is always good for each future reference. Expect this Vagrant cheat sheet article to be updated over time as I add more to it to become an all-inclusive vagrant cheat sheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a VM
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant init — Initialize Vagrant with a Vagrantfile and ./.vagrant directory, using no specified base image. Before you can do vagrant up, you’ll need to specify a base image in the Vagrantfile.&lt;br&gt;
vagrant init &amp;lt;boxpath&amp;gt; — Initialize Vagrant with a specific box. To find a box, go to the public Vagrant box catalog. When you find one you like, just replace its name with box path. For example, vagrant init ubuntu/trusty64.&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting a VM
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant up - starts vagrant environment (also provisions only on the FIRST vagrant up)&lt;br&gt;
vagrant resume — resume a suspended machine (vagrant up works just fine for this as well)&lt;br&gt;
vagrant provision — forces reprovisioning of the vagrant machine&lt;br&gt;
vagrant reload — restarts the Vagrant machine, loads new Vagrantfile configuration&lt;br&gt;
vagrant reload --provision — restart the virtual machine and force provisioning&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting into a VM
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant ssh — connects to the machine via SSH&lt;br&gt;
vagrant ssh &amp;lt;boxname&amp;gt; — If you give your box a name in your Vagrantfile, you can ssh into it with the box name. Works from any directory.&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Stopping a VM
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant halt — stops the vagrant machine&lt;br&gt;
vagrant suspend — suspends a virtual machine (remembers state)&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cleaning Up a VM
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant destroy — stops and deletes all traces of the vagrant machine&lt;br&gt;
vagrant destroy -f — same as above, without confirmation&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Boxes
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant box list — see a list of all installed boxes on your computer&lt;br&gt;
vagrant box add &amp;lt;name&amp;gt; &amp;lt;url&amp;gt; — download a box image to your computer&lt;br&gt;
vagrant box outdated — check for updates vagrant box update&lt;br&gt;
vagrant boxes remove &amp;lt;name&amp;gt; — deletes a box from the machine&lt;br&gt;
vagrant package — packages a running VirtualBox env in a reusable box&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Saving Progress
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant snapshot save [options] [vm-name] &amp;lt;name&amp;gt; — vm-name is often default. Allows us to save so that we can rollback at a later time&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant -v — get the vagrant version&lt;br&gt;
vagrant status — outputs status of the vagrant machine&lt;br&gt;
vagrant global-status — outputs status of all vagrant machines&lt;br&gt;
vagrant global-status --prune — same as above, but prunes invalid entries&lt;br&gt;
vagrant provision --debug — use the debug flag to increase the verbosity of the output&lt;br&gt;
vagrant push — yes, vagrant can be configured to deploy code!&lt;br&gt;
vagrant up --provision | tee provision.log — Runs vagrant up, forces provisioning, and logs all output to a file&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you know of any useful commands to add to this vagrant cheat sheet leave a comment and ill get them added.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Puppet Master with Vagrant to Pull your DevOps Strings</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Sat, 13 Feb 2021 10:17:28 +0000</pubDate>
      <link>https://dev.to/pazyp/puppet-master-with-vagrant-to-pull-your-devops-strings-462c</link>
      <guid>https://dev.to/pazyp/puppet-master-with-vagrant-to-pull-your-devops-strings-462c</guid>
      <description>&lt;h1&gt;
  
  
  What is Vagrant?
&lt;/h1&gt;

&lt;p&gt;Puppet Master with Vagrant, but what is Vagrant? Vagrant is an open-source software product by HashiCorp for building and maintaining portable virtual software development environments; e.g., for VirtualBox, KVM, Hyper-V, Docker containers, VMware, and AWS. It tries to simplify the software configuration management of virtualizations in order to increase development productivity.&lt;/p&gt;

&lt;p&gt;Vagrant really comes into its own when you need something more than a Docker image. In simplistic terms, it provides you with a nice packaged “Vagrant” file to install a “Vagrant VM”. It’s great because it’s repeatable and you can ensure if you are using it as part of a lab or test suite that each Virtual Machine is identical.&lt;/p&gt;

&lt;h1&gt;
  
  
  Puppet Master with Vagrant
&lt;/h1&gt;

&lt;p&gt;I’ve been using Vagrant with Oracle Databases and Ansible for years it’s quick and easy and saves me the hassle of going through the oracle install process each time I want a database, with Vagrant I can simply navigate to the location of my Vagrant File and type “vagrant up”.&lt;/p&gt;

&lt;p&gt;In my work, I have had started to focus more on Puppet so I embarked on a quest to create a Puppet Master vagrant file at home so I can spin up my own puppet master within a virtual machine to help with my own learning. I found this great GitHub repository that had already done much of the work but it hadn’t been touched or updated for years so I forked the code (here) and started my own journey.&lt;/p&gt;

&lt;p&gt;I have successfully upgraded the base OS to Ubuntu 20.04 (LTS) and upgraded to Puppet 7. I am still not all the way there yet having some issue with a dashboard module that I am trying to get my head around if anyone fancied helping with all the code on GitHub feel free to pull it down and have a look for yourself.&lt;br&gt;
Using Vagrant&lt;/p&gt;

&lt;p&gt;Install the vagrant application from the Vagrant site you also need to ensure you have Virtual Box or VMware installed. I use Virtual Box myself as it’s just what I am most familiar with but the steps involved are the same regardless.&lt;/p&gt;

&lt;p&gt;Use Git to clone the vagrant files to your own machine;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git clone https://github.com/pazyp/vagrant-puppetmaster.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This should be pretty fast, navigate to the downloaded code and start the vagrant host;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd vagrant-puppetmaster&lt;br&gt;
vagrant up&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Running vagrant up will star the process of building the Virtual Machine and installing Puppet the whole process takes about 15min to be left with a usable Puppet Master.&lt;/p&gt;

&lt;h1&gt;
  
  
  Useful Vagrant Commands
&lt;/h1&gt;

&lt;p&gt;A list of commands for reference that can help you out using Vagrant&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating a VM
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant init — Initialize Vagrant with a Vagrantfile and ./.vagrant directory, using no specified base image. Before you can do vagrant up, you’ll need to specify a base image in the Vagrantfile.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;vagrant init &amp;lt;boxpath&amp;gt; — Initialize Vagrant with a specific box. To find a box, go to the public Vagrant box catalog. When you find one you like, just replace its name with box path. For example, vagrant init ubuntu/trusty64.&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting a VM
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant up — starts vagrant environment (also provisions only on the FIRST vagrant up)&lt;br&gt;
vagrant resume — resume a suspended machine (vagrant up works just fine for this as well)&lt;br&gt;
vagrant provision — forces reprovisioning of the vagrant machine&lt;br&gt;
vagrant reload — restarts the Vagrant machine, loads new Vagrantfile configuration&lt;br&gt;
vagrant reload --provision — restart the virtual machine and force provisioning&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting into a VM
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant ssh — connects to the machine via SSH&lt;br&gt;
vagrant ssh &amp;lt;boxname&amp;gt; — If you give your box a name in your Vagrantfile, you can ssh into it with box name. Works from any directory.&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Stopping a VM
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant halt — stops the vagrant machine&lt;br&gt;
vagrant suspend — suspends a virtual machine (remembers state)&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cleaning Up a VM
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant destroy — stops and deletes all traces of the vagrant machine&lt;br&gt;
vagrant destroy -f — same as above, without confirmation&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Boxes
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant box list — see a list of all installed boxes on your computer&lt;br&gt;
vagrant box add &amp;lt;name&amp;gt; &amp;lt;url&amp;gt; — download a box image to your computer&lt;br&gt;
vagrant box outdated — check for updates vagrant box update&lt;br&gt;
vagrant boxes remove &amp;lt;name&amp;gt; — deletes a box from the machine&lt;br&gt;
vagrant package — packages a running VirtualBox env in a reusable box&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Saving Progress
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;–vagrant snapshot save [options] [vm-name] &amp;lt;name&amp;gt; — vm-name is often default. Allows us to save so that we can rollback at a later time&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tips
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;vagrant -v — get the vagrant version&lt;br&gt;
vagrant status — outputs status of the vagrant machine&lt;br&gt;
vagrant global-status — outputs status of all vagrant machines&lt;br&gt;
vagrant global-status --prune — same as above, but prunes invalid entries&lt;br&gt;
vagrant provision --debug — use the debug flag to increase the verbosity of the output&lt;br&gt;
vagrant push — yes, vagrant can be configured to deploy code!&lt;br&gt;
vagrant up --provision | tee provision.log — Runs vagrant up, forces provisioning and logs all output to a file&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusions
&lt;/h1&gt;

&lt;p&gt;As I said at the start of the article Vagrant is great when you need something more traditional that a docker image and since its a Virtual Machine with a little work, time and patience you should be able to replicate any production environment to have a reusable testing host to increase your DevOps productivity.&lt;/p&gt;

</description>
      <category>puppet</category>
      <category>devops</category>
      <category>showdev</category>
      <category>linux</category>
    </item>
    <item>
      <title>How To Use Oracle Database Docker Image To Supercharge Your DevOps Learning</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Tue, 09 Feb 2021 21:38:36 +0000</pubDate>
      <link>https://dev.to/pazyp/how-to-use-oracle-database-docker-image-to-supercharge-your-devops-learning-676</link>
      <guid>https://dev.to/pazyp/how-to-use-oracle-database-docker-image-to-supercharge-your-devops-learning-676</guid>
      <description>&lt;h2&gt;
  
  
  What is Docker?
&lt;/h2&gt;

&lt;p&gt;Docker is a set of platform as a service (PaaS) products that use OS-level virtualization to deliver software in packages called containers. Containers are isolated from one another and bundle their own software, libraries and configuration files; they can communicate with each other through well-defined channels. Because all of the containers share the services of a single operating system kernel, they use fewer resources than virtual machines.&lt;/p&gt;

&lt;h2&gt;
  
  
  Oracle Database Docker Image
&lt;/h2&gt;

&lt;p&gt;I previously wrote these two blog posts (here and here) about installing Oracle Database Docker Image as well as patching an Oracle Database Docker Image. Today a slight cop-out of an article but I am combining both posts into an all in a one-stop-shop for creating and patching an Oracle Database Docker Image.&lt;/p&gt;

&lt;p&gt;Note – You will need to have a My Oracle Support login and valid support agreement to download Oracle Database patches if you don’t have one of these your not going to get very far. Further, if you have chosen to use a “slim” Oracle database docker image you will likely run into problems, during the “sliming” down process folders are removed from the docker image that means when it comes to patching opatch will throw an error since some folders and directories don’t exist.&lt;br&gt;
Useful Docker Commands&lt;/p&gt;

&lt;p&gt;Stop Docker Image&lt;br&gt;
&lt;code&gt;docker container stop oracle19.3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Start docker container&lt;br&gt;
&lt;code&gt;docker container start oracle19.3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Show running Docker containers&lt;br&gt;
&lt;code&gt;docker ps&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;List All Docker Images&lt;br&gt;
&lt;code&gt;docker images&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Delete Docker Image&lt;br&gt;
&lt;code&gt;docker image rm "image_id_here"&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Oracle Database Docker Image
&lt;/h2&gt;

&lt;p&gt;Firstly Oracle only has 12c available via Docker Hub they had some legal grievances with each other a few years ago which means Oracle no longer updates the Docker Hub images but instead stores them here on GitHub. Another note is while the information on GitHub is great you still need to download the Oracle Database install .zip files from Oracle’s website yourself further if you plan on patching the Oracle database with docker you will need to have a valid Oracle Support licence and login to MOS.&lt;/p&gt;

&lt;p&gt;Firstly clone the Oracle Docker images to your local machine with git.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git clone https://github.com/oracle/docker-images.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After you have cloned the repo you will see there is a lot more available than just Oracle Database images but for this article its all we are concerned with, move to the OracleDatabase folder, then the SingleInstance folder and finally the 19.3.0 directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ~/docker-images/OracleDatabase/SingleInstance/19.3.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With your downloaded Oracle Database install .zip copy in into your current 19.3.0 directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp $HOME/Downloads/LINUX.X64_193000_db_home.zip .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you plan on patching this Oracle Database with Docker in the future the default scripts remove some key directories within $ORACLE_HOME to reduce image size that will cause you to run into issues when trying to patch in the future, the fix is simple by default we choose to install the “SLIM” option we just need to update the Dockerfile within the 19.3.0 directory to read false.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ARG SLIMMING=false&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Move back to the parent directory and run buildDockerImage.sh with a -v to specify database version in this case 19.3.0 and -e to indicate we want to use enterprise edition.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ~/docker-images/OracleDatabase/SingleInstance&lt;br&gt;
./buildDockerImage.sh -v 19.3.0 -e&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Depending on the resources you have on your machine will depend on how quickly the next part goes, I would say on average it will take 20-30min so go have coffee, you should come back to a Build Complete message. We have not successfully created an Oracle database image.&lt;/p&gt;

&lt;p&gt;To run the image use the following;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker run --name "oracle19.3" -p 1521:1521 -p 5500:5500 -e ORACLE_PDB=orapdb1 -e ORACLE_PWD=topsecretpass -e ORACLE_MEM=3000 -v /opt/oracle/oradata -d oracle/database:19.3.0-ee&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Where –name is the name of the docker image, ORACLE_PDB is the PDB name, ORACLE_PWD is the database password and ORACLE_MEM is the memory allocated to the DB. This first run of the docker image will go away and create the database so expect it to take some time during its first run.&lt;/p&gt;

&lt;p&gt;You can use sqldeveloper to connect to your PDB or connect to sqlplus via docker by logging directly into the docker image as per below;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker exec -it oracle19.3 /bin/bash&lt;/code&gt;&lt;br&gt;
&lt;code&gt;ps -ef |grep pmon&lt;/code&gt;&lt;br&gt;
&lt;code&gt;. oraenv&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sqlplus / as sysdba&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Patching Oracle Database Docker Image
&lt;/h2&gt;

&lt;p&gt;Running an Oracle 19c database in docker you are not able to patch the database in a traditional sense, you cannot hop into the container and patch it with opatch you need to create a “patched” image, thankfully Oracle on their GitHub (here) provide some shell scripts to make this task easier.&lt;/p&gt;

&lt;p&gt;Clone the Oracle Docker images to your local machine with git (if you don’t already have them)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git clone https://github.com/oracle/docker-images.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In this example, we will be patching a single instance 19c database. Head down into the SingleInstance folder then samples and applypatch.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ~/docker-images/OracleDatabase/SingleInstance/19.3.0/samples/applypatch&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The scripts used in this example rely on the following directory structure:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;19.3.0.0&lt;br&gt;
   patches&lt;br&gt;
      001 (patch directory)&lt;br&gt;
         pNNNNNN_RRRRRR.zip  (patch zip file)&lt;br&gt;
      002 (optional)&lt;br&gt;
      00N (optional, Nth patch directory)&lt;br&gt;
      p6880880*.zip (optional, OPatch zip file)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;patches: The working directory for patch installation.&lt;br&gt;
001: The directory containing the patch zip file.&lt;br&gt;
00N: The second, third, … directory containing the second, third, … patch zip file. This is useful if you want to install multiple patches at once. The script will go into each of these directories in the numbered order and apply the patches.&lt;br&gt;
Important: It is up to the user to guarantee the patch order if any.&lt;/p&gt;

&lt;p&gt;Below is a working example where p31771877 is the latest 19c Critical Patch Update at the time of writing (Oct 2020) and p6880880 is the latest version of OPatch.&lt;/p&gt;

&lt;p&gt;With the patches in place, we can now run buildPatchedDockerImage.sh to create the “new” patched docker image&lt;/p&gt;

&lt;p&gt;&lt;code&gt;./buildPatchedDockerImage.sh -e -v 19.3.0 -p Oct2020&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It will take some time to patch the Oracle database with the patches as rebuild the docker image so go make yourself a coffee and come back in 25-30min. Once you return all going well you should be able to start your new patched docker image with the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker run --name "oracle19.9" -p 1521:1521 -p 5500:5500 -e ORACLE_PDB=orapdb1 -e ORACLE_PWD=topsecretpass -e ORACLE_MEM=3000 -v /opt/oracle/oradata -d oracle/database:19.3.0-ee-Oct2020&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can now login to your patched Oracle Database docker image using the below commands;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker exec -it oracle19.9 /bin/bash&lt;br&gt;
ps -ef | grep pmon&lt;br&gt;
. oraenv&lt;br&gt;
sqlplus / as sysdba&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusions
&lt;/h2&gt;

&lt;p&gt;I’ve been using Oracle Database Docker Images for a little while now, they are very convenient for quick development or if you need to check out a certain database parameter.&lt;/p&gt;

&lt;p&gt;If you have any questions about running Oracle Database in Docker or the Oracle Database Docker Image, the process of creating or patching an image and having problems please get in touch and I can help.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>devops</category>
      <category>database</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Best frontend/landing page?</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Thu, 14 Jan 2021 08:20:12 +0000</pubDate>
      <link>https://dev.to/pazyp/best-frontend-landing-page-49a9</link>
      <guid>https://dev.to/pazyp/best-frontend-landing-page-49a9</guid>
      <description>&lt;p&gt;I have an idea for a website, most of the logic will be on the backend server &amp;amp; DB. I am a database engineer myself so the backend comes naturatly to me, I am quite at home on a linux server writing scripts in $shell or python. But when it comes to front end I really have no idea.&lt;/p&gt;

&lt;p&gt;Is there any recomendation for a simple frontend landing page type website, I don't need anything spectacular just needs to have the ability to capture email address signups and forward those emails to my back end or an intermediary between front and backend and also proccess payment should a user wish to request the paid service.&lt;/p&gt;

&lt;p&gt;I have seen Kajabi it seems to tick most of the boxes but its overly expensive ($150 p/m), Podia is another I have found which has far better pricing.&lt;/p&gt;

&lt;p&gt;Does anyone have and good sugestions of such a offering? &lt;/p&gt;

</description>
      <category>discuss</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>Oracle 19c with Docker</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Sat, 09 Jan 2021 21:08:27 +0000</pubDate>
      <link>https://dev.to/pazyp/oracle-19c-with-docker-36m5</link>
      <guid>https://dev.to/pazyp/oracle-19c-with-docker-36m5</guid>
      <description>&lt;p&gt;Article Originally published on my Blog &lt;a href="https://pazikas.com/2020/12/28/oracle-database-with-docker/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Running an Oracle 19c database Docker container is a fairly simple task but I thought it would be useful to document the steps required for reference and to help others starting out on this path.&lt;/p&gt;

&lt;p&gt;Firstly Oracle only has 12c available via Docker Hub they had some legal grievances with each other a few years ago which means Oracle no longer updates the Docker Hub images but instead stores them &lt;a href="https://github.com/oracle/docker-images" rel="noreferrer noopener"&gt;here&lt;/a&gt; on GitHub. Another note is while the information on GitHub is great you still need to download the Oracle Database install .zip files from Oracle's website yourself further if you plan on patching the Oracle database you will need to have a valid Oracle Support licence and login to MOS.&lt;/p&gt;

&lt;p&gt;Firstly clone the Oracle Docker images to your local machine with git&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git clone https://github.com/oracle/docker-images.git&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After you have cloned the repo you will see there is a lot more avaliable than just Oracle Database images but for this article its all we are concerned with, move to the OracleDatabase folder, then the SingleInstance folder and finially the 19.3.0 directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ~/docker-images/OracleDatabase/SingleInstance/19.3.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;With your downloaded Oracle Database install .zip copy in into your current 19.3.0 directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cp $HOME/Downloads/LINUX.X64_193000_db_home.zip .&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you plan on patching this container in the future the defualt scripts remove some key directories within $ORACLE_HOME to reduce image size that will cause you to run into issues when trying to patch in the future, the fix is simple by defult we choose to install the "SLIM" option we just need to update the Dockerfile within the 19.3.0 directory to read false.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ARG SLIMMING=false&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Move back to the parent directory and run buildDockerImage.sh with a -v to specify database version in this case 19.3.0 and -e to indicate we want to use enterprise edition.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ~/docker-images/OracleDatabase/SingleInstance&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;./buildDockerImage.sh -v 19.3.0 -e&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Depending on the resources you have on your machine will depend how quickly the next part goes, I would say on average it will take 20-30min so go have coffee, you should come back to a Build Complete message. We have not successfully created an Oracle Database Enterprise Edition 19.3.0 Docker Image.&lt;/p&gt;

&lt;p&gt;To run the image use the following;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker run --name "oracle19.3" -p 1521:1521 -p 5500:5500 -e ORACLE_PDB=orapdb1 -e ORACLE_PWD=topsecretpass -e ORACLE_MEM=3000 -v /opt/oracle/oradata -d oracle/database:19.3.0-ee&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Where --name is the name of the docker image, ORACLE_PDB is the PDB name, ORACLE_PWD is the database password and ORACLE_MEM is the memory allocated to the DB. This first run of the docker image will go away and create the database so expect it to take some time during its first run.&lt;/p&gt;

&lt;p&gt;You can use sqldeveloper to connect to your PDB or connect to sqlplus via docker by logging directly into the docker image as per below&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker exec -it oracle19.3 /bin/bash&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ps -ef |grep pmon&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;. oraenv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sqlplus / as sysdba&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Useful Docker commands&lt;/p&gt;

&lt;p&gt;Stop Docker Image&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker container stop oracle19.3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Start docker container&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker container start oracle19.3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Show running Docker containers&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker ps&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;List All Docker Images&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker images&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Delete Docker Image&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker image rm "image_id_here"&lt;/code&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>docker</category>
    </item>
    <item>
      <title>How to Sleep</title>
      <dc:creator>Andrew Pazikas</dc:creator>
      <pubDate>Wed, 16 Sep 2020 08:33:58 +0000</pubDate>
      <link>https://dev.to/pazyp/how-to-sleep-3l8g</link>
      <guid>https://dev.to/pazyp/how-to-sleep-3l8g</guid>
      <description>&lt;p&gt;If you are reading this many of you like myself work in the Technology industry, even if you don't the tips here apply to all. &lt;/p&gt;

&lt;p&gt;To many of you sleep will be difficult this is understandable as most of us stare at a screen for 11+ hours per day be it at work, on phone/tablet or even during downtime periods I am playing computer games or diving into some of my programming side projects always infront of a screen. About 2 years ago I purchased an Oura ring [&lt;a href="https://ouraring.com/"&gt;https://ouraring.com/&lt;/a&gt;] and have been tracking my sleep ever since, I have gone from having a lot of sleep problems to getting more or less a good nights sleep. My sleep journey isn't over yet but the progression I've made so far has been like a dream come true :). This article aims to outline some of the best changes you can make to your life to get better sleep.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Sleep Hygiene
&lt;/h1&gt;

&lt;p&gt;Sleep Hygiene is your nightly pre-bedtime routine you should develop one and stick to it, it doesn't need to be anything complex for me 1 hour before bed a notification pings on my phone to start my "Sleep Hygiene" routine, I take 10 minutes to finish up what I was doing and begin my routine. &lt;/p&gt;

&lt;h2&gt;
  
  
  1.1 Digital Download
&lt;/h2&gt;

&lt;p&gt;Use a note taking/journaling app (I use Evernote [&lt;a href="https://evernote.com/%5D"&gt;https://evernote.com/]&lt;/a&gt;) to download all the ideas from your mind onto "paper" anything that's in your head swimming around get it jotted down, I have notes for "To-dos", "ideas", "strange questions", "look it up later", "must read" and "when you are bored". Just consciously make an effort to write down everything that is in your head to "download" those thoughts onto paper so they are stored for later reference, this helps clear you brain so your when it comes to bed time you aren't worrying about remembering X or Y things as its all written down, you can rest peacefully in the comfort of knowing that when I look at the notes taken the night before I will remember what I was thinking to action as approprite.&lt;/p&gt;

&lt;h2&gt;
  
  
  1.1 Put You Phone Down!
&lt;/h2&gt;

&lt;p&gt;Phones specifically phone screens are bad, put your phone down at least 1 hour before bed (after your digital download), if you cant stop looking go put your phone in another room (on silent) and you will soon forget about it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1.2 Read a book
&lt;/h2&gt;

&lt;p&gt;Studies show fiction is best for helping you mind relax and unwind, I am not so rigid I am normally reading a couple of books at anyone time and I pickup whatever is taking my fancy there and then whether its fiction or non.&lt;/p&gt;

&lt;h2&gt;
  
  
  1.3 Brush your teeth
&lt;/h2&gt;

&lt;p&gt;Its just good hygiene and your dentist will appreciate it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1.4 Meditate
&lt;/h2&gt;

&lt;p&gt;This is a new addition to my sleep routine there are a number of meditation apps that have specific sections for helping you drift off. At the moment I am trying Calm [&lt;a href="http://www.calm.com"&gt;www.calm.com&lt;/a&gt;], it seems to be adding benefit but its to early to say categorically that it has improved my sleep, but I am enjoying it so I will likely keep it up.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Caffeine
&lt;/h1&gt;

&lt;p&gt;Avoid it! I know you love it but its pretty much the enemy of sleep, try and have your last caffeinated drink around 2-3PM in the afternoon and stick strictly to non-caffeinated drinks from then on. If you enjoy a warm drink before bed try something like peppermint of camomile tea to help you drift off.&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Bed Time
&lt;/h1&gt;

&lt;p&gt;A set bedtime is important our bodies run off an internal clock knowing when to eat, sleep, rave :?, repeat. Sticking to a set bedtime gets your body into the habit of knowing when its sleepy time. I head to bed around 10:45PM-ish with the aim of be on my way to dream land (after some meditation) by 11:15PM-ish. Your wake up time should dictate your bed time, the number of sleep cycles you complete per-night dictates how rested you feel the next day, its a large topic and worth reading about but for the finding a bedtime use [&lt;a href="https://sleepyti.me/"&gt;https://sleepyti.me/&lt;/a&gt;] to find the right time for you.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Journal
&lt;/h1&gt;

&lt;p&gt;Relates back to the digital download but I keep a sleep journal, every morning after breakfast I write down a couple of lines on how I slept and how quickly I felt I fell asleep. Having a sleep journal is great it allows you to look back and work out what is working for you and what isn't.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Give it Time
&lt;/h1&gt;

&lt;p&gt;Moving from having mostly bad sleep to getting good sleep its not an overnight quick fix, but something to be worked one, tweaked and nourished, hey I am not even there yet after almost 2 years of actively trying to improve my sleep.&lt;/p&gt;

&lt;p&gt;To wrap it this up over the last 2 years I have gone from having a pretty terrible relationship with sleep to generally getting a good sleep, I still want more but I am defiantly and an acceptable level. If I were to rate my sleep before I started this journey I would say 35/100 I had great difficulty getting to sleep often tossing and turning for what felt like hours, once I was asleep I would regularly wake up multiple times though the night then struggle to fall asleep again, all of this left me feeling pretty terrible and under slept. After deciding to do something about it today I would rate my sleep around 80/100 I do on occasion still find it difficult to fall asleep sometimes when I have changed my "Sleep Hygiene" routine slightly. But once asleep I am down for the whole night until I wake in the morning.&lt;/p&gt;

&lt;p&gt;Let me know in the comments below your sleep stories and tips/ideas for getting to sleep.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>discuss</category>
      <category>watercooler</category>
    </item>
  </channel>
</rss>
