<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>got sysdba?</title><link>https://gotsysdba.com/</link><description>Recent content on got sysdba?</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 01 Jun 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://gotsysdba.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Example: Use Liquibase with Spring Boot in Kubernetes</title><link>https://gotsysdba.com/k8s-spring-lb/</link><pubDate>Thu, 01 Jun 2023 00:00:00 +0000</pubDate><guid>https://gotsysdba.com/k8s-spring-lb/</guid><description>&lt;p&gt;As a follow-up to using &lt;a href="https://gotsysdba.com/k8s-sqlcl-lb-init" &gt;Using SQLcl + Liquibase in Kubernetes initContainers&lt;/a&gt; for Schema Change Management&amp;hellip; You can also use &lt;a href="https://www.liquibase.org/" class="external-link" target="_blank" rel="noopener"&gt;Liquibase&lt;/a&gt; if your Microservice is a &lt;a href="https://spring.io/projects/spring-boot" class="external-link" target="_blank" rel="noopener"&gt;Spring Boot&lt;/a&gt; project with the Oracle Database as its data store.&lt;/p&gt;
&lt;h2 id="spring-boot-project---maven"&gt;
 Spring Boot Project - Maven
 &lt;a class="heading-link" href="#spring-boot-project---maven"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Here&amp;rsquo;s how it&amp;rsquo;s done when using &lt;a href="https://maven.apache.org/" class="external-link" target="_blank" rel="noopener"&gt;Apache Maven&lt;/a&gt; to build the image:&lt;/p&gt;
&lt;h3 id="pomxml"&gt;
 POM.XML
 &lt;a class="heading-link" href="#pomxml"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Include in your &lt;code&gt;pom.xml&lt;/code&gt; the following dependency:&lt;/p&gt;</description></item><item><title>Example: Use SQLcl + Liquibase in Kubernetes initContainers</title><link>https://gotsysdba.com/k8s-sqlcl-lb-init/</link><pubDate>Fri, 26 May 2023 00:00:00 +0000</pubDate><guid>https://gotsysdba.com/k8s-sqlcl-lb-init/</guid><description>&lt;p&gt;If your Microservice application running on Kubernetes relies on the Oracle Database, you can take advantage of &lt;a href="https://docs.oracle.com/en/database/oracle/sql-developer-command-line/23.1/sqcug/using-liquibase.html" class="external-link" target="_blank" rel="noopener"&gt;&lt;em&gt;SQLcl + Liquibase&lt;/em&gt;&lt;/a&gt; with initContainers for effective Schema Change Management during your deployments.&lt;/p&gt;
&lt;p&gt;Lets take a quick look at how this is done:&lt;/p&gt;
&lt;h2 id="secrets"&gt;
 Secrets
 &lt;a class="heading-link" href="#secrets"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;First you&amp;rsquo;ll need two Secrets for connecting to your database, one for Database (Names) Resolution and another for Authentication. I&amp;rsquo;m using a Secret for a tnsnames.ora file to perform the resolution, but other resolution options are available such as creating an ldap.ora or a ConfigMap of the unencoded connect string.&lt;/p&gt;</description></item><item><title>Experience: Cloud Databases and On-Premises Proxies</title><link>https://gotsysdba.com/exp-dcd_proxy/</link><pubDate>Thu, 20 Oct 2022 00:00:00 +0000</pubDate><guid>https://gotsysdba.com/exp-dcd_proxy/</guid><description>&lt;p&gt;As a follow-up on &lt;a href="https://gotsysdba.com/code-ci_pdbs" &gt;Using Oracle PDBs in Continuous Integration pipelines&lt;/a&gt;, I have been struggling with one of those &amp;ldquo;works on my machine&amp;rdquo; nightmares. The ask was simple, centralise the ad-hoc testing from the developer machines to an automated CI pipeline using the Oracle Cloud Infrastructure (OCI) &lt;a href="https://docs.oracle.com/en/cloud/paas/bm-and-vm-dbs-cloud/index.html" class="external-link" target="_blank" rel="noopener"&gt;Oracle Base Database Service&lt;/a&gt; (OBDS) as the backend.&lt;/p&gt;
&lt;p&gt;I proceeded:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Replicate the local Database&amp;rsquo;s version, initialisation, profiles, users, tablespaces, etc. into OBDS&lt;/li&gt;
&lt;li&gt;Create an image of the local client setup&lt;/li&gt;
&lt;li&gt;Create the &lt;a href="https://gotsysdba.com/code-ci_pdbs" &gt;PDB based pipeline&lt;/a&gt; to automate the tests on a code push&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After completing the above, a manual CI run was performed using a subset of the tests focused on the database. The tests results were identical between the local tests and the cloud infrastructure tests&amp;hellip; Job Done!&lt;/p&gt;</description></item><item><title>Code: Using Oracle PDBs in Continuous Integration pipelines</title><link>https://gotsysdba.com/code-ci_pdbs/</link><pubDate>Wed, 28 Sep 2022 00:00:00 +0000</pubDate><guid>https://gotsysdba.com/code-ci_pdbs/</guid><description>&lt;p&gt;When developing against an Oracle Database, developers will often use a local installation or a &lt;a href="https://container-registry.oracle.com" class="external-link" target="_blank" rel="noopener"&gt;container image&lt;/a&gt; to run their database CI tests against. This widely used practice gives the developer an isolated database testing environment, which they can control, with minimal fuss. However, it is highly unlikely that this Development environment will be equivalent to the Testing (UAT) or Production environment come deployment time.&lt;/p&gt;
&lt;p&gt;Differences in the database initialisation parameters, versions and patches (not to mention the data itself) between a local or containerised Development database and UAT/Production databases could lead to unforeseen issues during the software delivery lifecycle. This is not only a headache for the developer, but for the DBA who has to help identify the discrepancies when things don&amp;rsquo;t work as expected (the ole &amp;ldquo;but it works on my machine&amp;hellip;&amp;rdquo; dilemma).&lt;/p&gt;</description></item><item><title>about me</title><link>https://gotsysdba.com/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://gotsysdba.com/about/</guid><description>&lt;p&gt;I started my career as an Oracle Database Administrator 27 years ago at a small University in the U.S. Midwest. After moving to London, England in 2006 and working as an Oracle DBA in Financial Services, I eventually bypassed the proxies and started working for Oracle directly.&lt;/p&gt;
&lt;p&gt;I am a Developer Evangelist at Oracle working with &lt;a href="https://developer.oracle.com/microservices/" class="external-link" target="_blank" rel="noopener"&gt;Microservices&lt;/a&gt; Architecture and &lt;a href="https://github.com/oracle/ai-optimizer" class="external-link" target="_blank" rel="noopener"&gt;AI&lt;/a&gt; utilising the Oracle Database.&lt;/p&gt;
&lt;p&gt;Learning via example and hands-on experience has always been my preferred method of study. This blog, accompanied with &lt;a href="https://github.com/gotsysdba" class="external-link" target="_blank" rel="noopener"&gt;code&lt;/a&gt;, is here to share that experience.&lt;/p&gt;</description></item></channel></rss>