<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <link rel="self" href="https://asc.web-republic.de/ords/r/sc/blog/pgm?request=application_process%3Datom.xml" type="application/atom+xml"/>
  <title>SC&apos;s Tech-Blog</title>
  <subtitle>Alles über Oracle, APEX und noch vieles mehr ...</subtitle>
  <id>https://asc.web-republic.de/ords/r/sc/blog/pgm?request=application_process%3Datom.xml</id>
  <updated>2024-10-28T21:27:09Z</updated>
  <entry>
    <title>SSH Fehlermeldung: REMOTE HOST IDENTIFICATION HAS CHANGED</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Microsoft Windows (WSL &amp; Co)" term="Microsoft Windows (WSL &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20241028212709947225"/>
    <summary>SSH Fehlermeldung</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Beim Login via SSH erscheint folgendes Warning:</p><pre><code class="language-plaintext">@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:YoCFMivODAbDQ025xhvKb8z0LORrij3kTeS5Q8mX1Fg.
Please contact your system administrator.
Add correct host key in /home/MY_USER/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in /home/MY_USER/.ssh/known_hosts:8
Host key for MY_IP has changed and you have requested strict checking.
Host key verification failed.</code></pre><p>Lösung:</p><pre><code class="language-plaintext">bash&gt; cd .ssh/
bash&gt; ssh-keygen -R MY_IP

&#35; Host MY_IP found: line 8
/home/MY_USER/.ssh/known_hosts updated.
Original contents retained as /home/MY_USER/.ssh/known_hosts.old</code></pre><p>&nbsp;</p></div>]]></content>
    <updated>2024-10-28T21:27:09Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20241028212709947225</id>
  </entry>
  <entry>
    <title>How to extract property from JSON Array</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20240731151241355546"/>
    <summary>Extract single property from JSON</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>I have to extract single property from JSON Array - there are many ways.</p><p>A small sample function with two variants:</p><pre><code class="language-sql">create or replace function get_property_from_array(
    p_json      in json_object_t default null, 
    p_property  in varchar2,
    p_occurance in number default 0
) return varchar2
is
    l_json_array    json_array_t := json_array_t();
    l_json          json_object_t := json_object_t();
    l_clob          clob;
    l_result        varchar2(200 char);
begin

    l_json := coalesce(p_json, new json_object_t('{
                            "d": {
                                "results": [
                                    {
                                        "myProperty": "TEST-1"
                                    },{
                                        "myProperty": "TEST-2"
                                    }
                                ]
                            }
                        }')
                        );

    l_clob := l_json.to_clob();

    --Variante 1
    l_json_array    := l_json.get_object('d').get_array('results');
    l_json          := treat(l_json_array.get(p_occurance) as json_object_t);
    l_result        := l_json.get_string(p_property); 

    return l_result;

    --Variante 2 *OUTDATED*
    --Stop Writing JSON_TABLE SQL Manually -&gt; https://haniel.hashnode.dev/stop-writing-jsontable-sql-manually-joelkallmanday
    for r_row in (
        select
            my_property
        from json_table (
            l_clob format json,
            '$.d.results[*]' columns (
                my_property varchar2 (4000) path '$."myProperty"'
            )
        )
        where rownum - 1  = p_occurance
    )
    loop
        l_result    := r_row.my_property;
    end loop;

end get_property_from_array;</code></pre><p>&nbsp;</p></div>]]></content>
    <updated>2024-07-31T15:12:41Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20240731151241355546</id>
  </entry>
  <entry>
    <title>Maps Region based on GeoJSON</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20240418084732496551"/>
    <summary>Maps Region based on GeoJSON</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Aufgabe ist, eine Map Region based on GeoJSON zu erstellen.</p><p>Ein einheitliches Format (RFC 7946), siehe <a href="https://geojson.org/">https://geojson.org/</a></p><p>“<span style="color:&#35;34495e;"><i>GeoJSON supports the following geometry types:&nbsp;</i></span><code class="highlighter-rouge"><i>Point</i></code><span style="color:&#35;34495e;"><i>,&nbsp;</i></span><code class="highlighter-rouge"><i>LineString</i></code><span style="color:&#35;34495e;"><i>,&nbsp;</i></span><code class="highlighter-rouge"><i>Polygon</i></code><span style="color:&#35;34495e;"><i>,&nbsp;</i></span><code class="highlighter-rouge"><i>MultiPoint</i></code><span style="color:&#35;34495e;"><i>,&nbsp;</i></span><code class="highlighter-rouge"><i>MultiLineString</i></code><span style="color:&#35;34495e;"><i>, and&nbsp;</i></span><code class="highlighter-rouge"><i>MultiPolygon</i></code><span style="color:&#35;34495e;"><i>. Geometric objects with additional properties are&nbsp;</i></span><code class="highlighter-rouge"><i>Feature</i></code><span style="color:&#35;34495e;"><i>&nbsp;objects. Sets of features are contained by&nbsp;</i></span><code class="highlighter-rouge"><i>FeatureCollection</i></code><span style="color:&#35;34495e;"><i>&nbsp;objects.</i>”</span></p><pre><code class="language-js">{
  "type": "Feature",
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  },
  "properties": {
    "name": "Dinagat Islands"
  }
}</code></pre><p>APEX suggeriert, dass man beim "<i>Column Mapping</i>" eine Spalte angeben kann, welche ein GeoJSON enthält und VARCHAR2 oder CLOB ist. Natürlich muss dann im “<i>Layer</i>” beim sog. "<i>Layer Type</i>" der passenden "&gt;<i>geometry type" </i>ausgewählt werden.&nbsp;</p><p><span style="color:hsl(30, 75%, 60%);"><strong>ABER </strong></span>-&nbsp;APEX erwartet hier <strong>nicht </strong>das ganze GeoJSON, sondern nur folgendes Subset "<i>geometry":</i></p><pre><code class="language-js">{
  "geometry": {
    "type": "Point",
    "coordinates": [125.6, 10.1]
  }
}</code></pre><p>In der "<a href="https://apex.oracle.com/pls/apex/r/apex_pm/sample-maps/home" target="_blank">Sample Maps</a> - App finden sich keine Beispiele hierzu - den entscheidenden Hinweis habe ich dann im <a href="https://apexapplab.dev/2022/10/21/understanding-better-the-apex-map-region/" target="_blank">APEX App Lab</a> gefunden.</p><p>Dort sind auch eine Menge Links zum Thema hinterlegt, z.B. wie GeoJSON nach SDO_GEOMETRY konvertiert und andersrum.</p><p>Sehr hilfreich ist u.a. <a href="http://geojson.io/"><u>GeoJSON.io – a tool that helps generate, validates and visualise your GeoJSON on an interactive map</u></a></p></div>]]></content>
    <updated>2024-04-18T08:47:32Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20240418084732496551</id>
  </entry>
  <entry>
    <title>Remove the user&apos;s column heading sorting preferences - global</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20240121140409453177"/>
    <summary>Remove the user&apos;s column heading sorting preferences - global</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>How can the sort order for all kind of reports in the application be reset or refreshed?</p><pre><code class="language-sql">begin
   apex_util.remove_sort_preferences(:APP_USER);
end;</code></pre><p>"<a href="https://docs.oracle.com/en/database/oracle/apex/23.1/aeadm/managing-user-preferences.html&#35;GUID-E1E4C6E0-1AB9-4FD7-8ED1-1B7B2B160511" target="_blank">Managing User Preferences</a>" in <a href="https://docs.oracle.com/pls/topic/lookup?ctx=en/database/oracle/apex/23.1/aeapi&amp;id=AEADM-GUID-853F40E1-F360-4CE9-8DC1-FC111A825D14" target="_blank">Oracle APEX Administration Guide</a> 23.1</p><p>You want to remove user preferences programmatically?</p><pre><code class="language-sql">begin
   apex_util.remove_preference(p_preference =&gt; 'NAME_OF_THE_PREFERENCE', p_user =&gt; :APP_USER);    
end;</code></pre><p>Or via <a href="https://docs.oracle.com/en/database/oracle/apex/23.1/aeadm/managing-user-preferences.html&#35;GUID-09DEBB14-979E-48A7-8470-2710457DB48F" target="_blank">Page Process</a>?</p></div>]]></content>
    <updated>2024-01-21T14:05:56Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20240121140409453177</id>
  </entry>
  <entry>
    <title>Invisible Columns (requires Oracle Database &gt;12c)</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230803125938047072"/>
    <summary>Invisible Columns</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Kann man die Spalten einer Tabelle umsortieren, ohne diese zu droppen und neu zu erstellen?</p><p>JA - in Oracle 12c kam das Feature “<a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/managing-tables.html&#35;GUID-38DBFC2E-FC6C-46E2-A7A1-6FA703F9DC01" target="_blank">INVISIBLE COLUMN</a>” dazu, um Spalten auf “unsichtbar” zu setzen - mit dem Nebeneffekt, dass eine Spalte, die “INVISIBLE” gesetzt wird, mit dieser Aktion immer ans Tabellenende rückt. Dieser Umstand ermöglicht es, Tabellenspalten quasi beliebig umzusortieren.</p><p>Ein einfaches Anwendungsbeispiel - die “Audit Colums” sollen immer ganz am Ende stehen - lade folgendes <a href="https://github.com/rimblas/ocd-table-reorderer/blob/master/scripts/apos.xml" target="_blank">Skript </a>aus dem Github von <a href="https://github.com/rimblas" target="_blank">Jorge Rimblas</a>, platziere es deinem SQLcl - Skripte Ordner, editiere das Skript und ergänze die Spaltennamen, mache einen Alias und rufe es auf:</p><pre><code class="language-plaintext">Aliasname &lt;TABELLENNAME&gt;
z.B. apos TESTTABELLLE</code></pre><p>Alle angegebenen Spalten werden ans Tabellenende verschoben.</p><p>Hierzu gibt es auch eine <a href="https://github.com/rimblas/ocd-table-reorderer" target="_blank">APEX-App</a>, in welcher man per drag'n'drop agieren kann.</p><p>&nbsp;</p><p>Mehr Infos zum Feature "Invisible Column" gibt es u.a. <a href="https://oracle-base.com/articles/12c/invisible-columns-12cr1" target="_blank">hier</a>, einen Exkurs zu SQLcl Aliasen <a href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230803134955316444" target="_blank">hier</a>.</p></div>]]></content>
    <updated>2023-08-03T13:50:22Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230803125938047072</id>
  </entry>
  <entry>
    <title>SQLcl - Login.sql</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230803134955316444"/>
    <summary>SQLcl - Login.sql</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Auch mit SQLcl kann man eine sog. “<i>login.sql</i>” erstellen und nutzen.</p><p>Dadurch kann man z.B. Befehle oder Formatierungseinstellungen beim Start von SQLcl ausführen.&nbsp;</p><p>Dazu einfach eine Datei mit dem Namen “<i>login.sql</i>” anlegen und mit SQLcl kompatiblen Einstellungen befüllen.</p><pre><code class="language-plaintext">set sqlformat ansiconsole

set highlighting on
set highlighting keyword foreground blue
set highlighting identifier foreground magenta
set highlighting string foreground green
set highlighting number foreground cyan
set highlighting comment foreground yellow</code></pre><p>Damit die Datei beim Starten von SQLcl ausgeführt wird, benötigt man eine Umgebungsvariable namens SQLPATH</p><pre><code class="language-plaintext">export SQLPATH=~/sqlcl/</code></pre><p>Sehr interessant auch folgender Blog-Beitrag von <a href="https://www.thatjeffsmith.com/" target="_blank">JeffSmith</a>:</p><p><a href="https://www.thatjeffsmith.com/archive/2023/08/your-ideal-oracle-database-command-line-experience/" target="_blank">How to maximize your command line experience with Oracle</a></p></div>]]></content>
    <updated>2023-08-03T13:49:55Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230803134955316444</id>
  </entry>
  <entry>
    <title>SQLcl - The alias command</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230803132222443017"/>
    <summary>SQLcl - The alias command</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Was kann man in SQLcl mit Aliassen machen?&nbsp;</p><p><i>Alias is a command which allows you to save a sql, plsql or sqlplus script and assign it a shortcut command. The alias command is persistent. This means when you start a new SQLcl session, it will load all your previously declared aliases.</i></p><pre><code class="language-plaintext">Befehlsübersicht
sqlcl&gt; help alias

Alias erstellen
sqlcl&gt; alias whoami = select sys_context('userenv', 'session_user') from dual;
sqlcl&gt; alias usersource = select * from user_source s where upper(s.text) like upper('%' || :1 || '%)';
sqlcl&gt; alias emp1 = select * from emp where ename = :ENAME order by empno;
sqlcl&gt; alias emp2 = select * from emp where job like '%'||upper(:JOB)||'%' and ename like '%'||upper(:ENAME)||'%' order by empno;

Aliasse auflisten
sqlcl&gt; alias

Inhalt des Alias anzeigen
sqlcl&gt; alias list usersource

Alias ausführen
sqlcl&gt; whoami 
sqlcl&gt; usersource &lt;MEIN_SUCHTEXT&gt;
sqlcl&gt; emp1 KING
sqlcl&gt; emp2 CLERK A

Alias exportieren
sqlcl&gt; alias save whoami.xml

Alias importieren
sqlcl&gt; alias load path/to_my/whoami.xml

Alias entfernen
sqlcl&gt; alias drop whoami</code></pre><p>Sehr hilfreiche Blogposts findet man unter:</p><p><a href="https://krisrice.io/2014-12-12-aliases-with-sdsql-and-simpler-ctas/" target="_blank">Aliases with sdsql and simpler CTAS</a></p><p><a href="https://ruepprich.com/sqlcl-aliases-with-variables/" target="_blank">SQLcl Aliases With Variables</a></p><p><a href="https://mikesmithers.wordpress.com/2019/06/25/sqlcl-alias-because-you-cant-remember-everything/" target="_blank">SQLcl ALIAS – because you can’t remember everything.</a></p></div>]]></content>
    <updated>2023-08-03T13:38:05Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230803132222443017</id>
  </entry>
  <entry>
    <title>Finding Unindexed Foreign Keys in Oracle</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230802064544237889"/>
    <summary>Finding Unindexed Foreign Keys in Oracle</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p><span style="background-color:rgb(255,255,255);color:rgb(0,0,0);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Open Sans&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Fira Sans&quot;, &quot;Droid Sans&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Ich bin über folgenden Blog-Post gestolpert: </span></span><a href="https://carsandcode.com/2023/07/27/finding-unindexed-foreign-keys-in-oracle/" target="_blank">Finding Unindexed Foreign Keys in Oracle</a><span style="background-color:rgb(255,255,255);color:rgb(0,0,0);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Open Sans&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Fira Sans&quot;, &quot;Droid Sans&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">&nbsp;</span></span></p><pre><code class="language-sql">with owner_exclusion_list as (
    select
        username
    from dba_users
    where oracle_maintained = 'y'
    union all select 'ORDS_METADATA' from dual
    union all select 'ORDS_PUBLIC_USER' from dual
), constraint_columns as (
    select
        owner,
        table_name,
        constraint_name,
        listagg (column_name, ', ') within group (order by position) as constraint_column_list
    from dba_cons_columns
    join dba_constraints using (owner, table_name, constraint_name)
    where constraint_type = 'R' -- R = Referential Foreign Key Constraint
    and owner not in (
        select * from owner_exclusion_list
    )
    group by owner, table_name, constraint_name
), index_columns as (
    select
        index_owner as owner,
        table_name,
        index_name,
        listagg (column_name, ', ') within group (order by column_position) as index_column_list
    from dba_ind_columns
    where index_owner not in (
        select * from owner_exclusion_list
    )
    group by index_owner, table_name, index_name
)
select
    decode (ic.table_name, null, 'Could be missing', 'Exists')      as foreign_key_index,
    to_char (dbat.num_rows, '999,999,999,999,999,999')              as last_analyzed_row_count,
    dbat.last_analyzed,
    cc.owner,
    cc.table_name,
    constraint_name                                                 as foreign_key_constraint_name,
    constraint_column_list                                          as foreign_key_column_list,
    coalesce (index_name,'*** Possible Missing Index ***')          as index_name,
    coalesce (index_column_list,'*** Possible Missing Index ***' )  as index_column_list
from constraint_columns cc
join dba_tables dbat on (dbat.owner = cc.owner and dbat.table_name = cc.table_name)
left join index_columns ic on (cc.owner = ic.owner and cc.table_name = ic.table_name and ic.index_column_list like cc.constraint_column_list || '%')
where cc.owner = :MY_OWNER
order by dbat.num_rows desc nulls last, cc.owner, cc.table_name,  constraint_column_list;</code></pre><p>&nbsp;</p><p>In dem Zusammenhang gelernt:</p><p><span style="background-color:rgb(255,255,255);color:rgb(0,0,0);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Open Sans&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Fira Sans&quot;, &quot;Droid Sans&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">SQL-Developer → Reports → All Reports → Database Administration → All Tables → Quality Assurance&nbsp;</span></span></p><ul><li><span style="background-color:rgb(255,255,255);color:rgb(0,0,0);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Open Sans&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Fira Sans&quot;, &quot;Droid Sans&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Tables with Unindexed Foreign Keys</span></span></li><li><span style="background-color:rgb(255,255,255);color:rgb(0,0,0);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Open Sans&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Fira Sans&quot;, &quot;Droid Sans&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Tables without Primary Keys</span></span></li><li><span style="background-color:rgb(255,255,255);color:rgb(0,0,0);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Open Sans&quot;, system-ui, -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen, Ubuntu, Cantarell, &quot;Fira Sans&quot;, &quot;Droid Sans&quot;, &quot;Helvetica Neue&quot;, Arial, sans-serif;font-size:15px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Tables without Indexes</span></span></li></ul><p>&nbsp;</p></div>]]></content>
    <updated>2023-08-02T06:45:43Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230802064544237889</id>
  </entry>
  <entry>
    <title>Export / Import / Delete WSL2 (Windows Subsystem Linux) within Windows 10 / 11</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Microsoft Windows (WSL &amp; Co)" term="Microsoft Windows (WSL &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230708120328164498"/>
    <summary>Export / Import / Delete WSL2 (Windows Subsystem Linux) within Windows 10 / 11</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Eine WSL-Distribution (z.B. Oracle Linux 9.1) lässt sich über eine Funktion exportieren und importieren.&nbsp;</p><p>Beim Export wird aus der angegebenen Linux-Distribution eine Datei im TAR-Format (Tarball) erzeugt. Diese kann dann gesichert oder auch weitergegeben werden. Die TAR-Datei enthält das Root-Dateisystem der Linux-Distribution.</p><p>Zum Export via CMD oder Powershell folgendes eingeben:</p><pre><code class="language-plaintext">wsl --export OracleLinux_9_1 &lt;MEIN_PFAD_ZUR_TAR_DATEI	</code></pre><p>Zum Import via CMD oder Powershell folgendes eingeben:</p><pre><code class="language-plaintext">wsl --import OracleLinux_9_1 &lt;MEIN_PFAD_ZUR_TAR_DATEI&gt;</code></pre><p>Zum Löschen via CMD oder Powershell folgendes eingeben:</p><pre><code class="language-plaintext">wsl --unregister &lt;Distributionsname&gt;</code></pre></div>]]></content>
    <updated>2023-07-08T12:03:27Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230708120328164498</id>
  </entry>
  <entry>
    <title>How to show current git branch with colors in Bash prompt</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Sonstiges" term="Sonstiges"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230708114940060027"/>
    <summary>How to show current git branch with colors in Bash prompt</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>A quick hack, for more information (for example colors) go to the <a href="https://thucnc.medium.com/how-to-show-current-git-branch-with-colors-in-bash-prompt-380d05a24745" target="_blank">source</a> .</p><p>Adding this to ~/.bashrc:</p><pre><code class="language-plaintext">parse_git_branch() {
     git branch 2&gt; /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}

export PS1="\u@\h \[\e[32m\]\w \[\e[91m\]\$(parse_git_branch)\[\e[00m\]$ "</code></pre></div>]]></content>
    <updated>2023-07-08T11:49:39Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230708114940060027</id>
  </entry>
  <entry>
    <title>dbFlow innerhalb VSCode mit WSL (Oracle Linux 9.1) nutzen</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="VSCode" term="VSCode"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230615115039979520"/>
    <summary>dbFlow innerhalb VSCode mit WSL (Oracle Linux 9.1) nutzen</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Wie konfiguriert man die VSCode für die Nutzung von WSL als Bash für die Verwendung mit <a href="https://github.com/MaikMichel/dbFlow" target="_blank">dbFlow</a>?</p><p>Es wird hier davon ausgegangen, dass folgende Grundvoraussetzungen gegeben sind - im WSL:</p><ol><li><a href="https://www.oracle.com/de/database/technologies/instant-client/downloads.html" target="_blank">Oracle InstantClient</a> (21.10)&nbsp;+ SQL*Plus installiert <strong>und/oder</strong> <a href="https://www.oracle.com/java/technologies/downloads/" target="_blank">Oracle Java JDK</a> + <a href="https://www.oracle.com/database/sqldeveloper/technologies/sqlcl/download/" target="_blank">Oracle SQLcl</a></li><li>Git 2.10+</li></ol><p>Die Nutzung von VSCode mit WSL ist insgesamt sehr detailliert beschrieben z.B. unter "<a href="https://code.visualstudio.com/docs/remote/wsl" target="_blank">Developing in WSL</a>" oder auch unter "<a href="https://learn.microsoft.com/de-de/windows/wsl/" target="_blank">Windows-Subsystem für Linux: Dokumentation</a>". Zuerst sollte man sich die "<a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl" target="_blank">WSL Extension</a>" installieren. Damit wird u.a. die Bash verfügbar für VSCode. Dann natürlich ggf. das Standardterminal in VSCode umstellen auf das WSL.</p><p>Anschließend empfiehlt es sind, einen Alias zu setzen innerhalb des WSL, damit man wie gewohnt auch "<i>code .</i>" in der Bash verwenden kann. Im Terminal "<i>nano ~/.bashrc</i>" absetzen und folgendes ergänzen: alias code='"<i>/mnt/c/Program Files/Microsoft VS Code/bin/code</i>"' (Hinweis: Pfad prüfen / wird erst beim nächsten Öffnen des Terminals aktiv!)</p><p>Startet man jetzt VSCode in einem dbFLow - Verzeichnis, so kann man mit der Bash im WSL arbeiten. Einen Performance-Boost gibt es, wenn man den Hinweis beachtet, den VSCode selber gibt: Die Arbeitsverzeichnisse nicht über die Windows-Verzeichnisse aufrufen, sondern direkt ins "<i>WSL - Home - Verzeichnis</i>" integrieren.</p><h4>Known issues - samt Lösungswegen:</h4><ul><li>Git erkennt <strong>quasi alle </strong>Dateien im dbFLow Arbeitsverzeichnis als "<strong>geändert</strong>" - klar, Zeilenende in Windows ist CRLF, in Linux LF. Um dies zu unterbinden, legt man eine<i> .gitattributes</i> an mit folgendem Inhalt (ab Git 2.10+):</li></ul><pre><code class="language-plaintext">* text=auto eol=lf
*.{cmd,[cC][mM][dD]} text eol=crlf
*.{bat,[bB][aA][tT]} text eol=crlf</code></pre><ul style="list-style-type:disc;"><li style="list-style-type:disc;">Gibt es Windows -Binärdateien (z.B. docx) im dbFlow - Arbeitsverzeichnis (z.B. wg. AOP) beim Umkopieren von Windows nach Linux - dann legt Windows hier sog. &nbsp;"<a href="https://datei.wiki/extension/zone.identifier" target="_blank">Alternate Data Stream" (ADS) -Dateien</a>" an. Diese haben denselben Dateinamen wie die Originaldatei, gefolgt von einem Doppelpunkt und dem Text "<i>Zone.Identifier</i>", also z.B. <i>my_aop_template.docx:Zone.Identifier.</i>&nbsp;Ich habe keinen Weg gefunden, dass Erstellen dieser Dateien zu unterbinden. Aber <a href="https://stackoverflow.com/questions/4496697/what-are-zone-identifier-files-and-how-do-i-prevent-them-from-being-created" target="_blank">Lösungsvarianten </a>- entweder<i> .gitignore</i> erweitern um <i>**/*Zone.Identifier</i>, oder in der Bash löschen mittels<i> find . -name "*Zone.Identifier" -type f -delete&nbsp;</i></li></ul><p>&nbsp;</p></div>]]></content>
    <updated>2023-06-15T12:04:54Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230615115039979520</id>
  </entry>
  <entry>
    <title>Oracle Linux 9: Install Java JDK 20 + SQLcl</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Microsoft Windows (WSL &amp; Co)" term="Microsoft Windows (WSL &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230615100524063520"/>
    <summary>Oracle Linux 9: Install Java JDK 20 + SQLcl</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Wie installiert man das Java JDK 20 + SQLcl unter Oracle Linux ?</p><pre><code class="language-plaintext">root&gt; cd /tmp/
root&gt; wget https://download.oracle.com/java/20/latest/jdk-20_linux-x64_bin.tar.gz
root&gt; tar xvf jdk-20_linux-x64_bin.tar.gz
root&gt; rm jdk-20_linux-x64_bin.tar.gz
root&gt; mv jdk-20.0.1 /opt

root&gt; sudo tee /etc/profile.d/jdk.sh &lt;&lt;EOF

&#35; Bis einschließlich EOF so eintippen

export JAVA_HOME=/opt/jdk-20.0.1
export PATH=\$PATH:\$JAVA_HOME/bin
EOF

root&gt; nano /etc/profile.d/jdk.sh
root&gt; source /etc/profile.d/jdk.sh
root&gt; export PATH=$PATH:/opt/jdk-20.0.1/bin

root&gt; java -version
&gt; java version "20.0.1" 2023-04-18
&gt; Java(TM) SE Runtime Environment (build 20.0.1+9-29)
&gt; Java HotSpot(TM) 64-Bit Server VM (build 20.0.1+9-29, mixed mode, sharing)</code></pre><p>SQLCL:</p><pre><code class="language-plaintext">root&gt; cd /tmp/
root&gt; wget https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip

root&gt; mkdir /opt/oracle/sqlcl
root&gt; unzip /tmp/sqlcl-latest.zip -d /opt/oracle/
root&gt; rm sqlcl-latest.zip

root&gt; nano ~/.bashrc

&#35;&#35;FOLGENDES ERGÄNZEN
alias sqlcl='/opt/oracle/sqlcl/bin/./sql'</code></pre><p>Dies sollte auch unter Oracle Linux 8 funktionieren.</p></div>]]></content>
    <updated>2023-06-15T12:04:50Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230615100524063520</id>
  </entry>
  <entry>
    <title>Oracle Linux 9: Install InstantClient  (+SQL*Plus &amp; Tools)</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Microsoft Windows (WSL &amp; Co)" term="Microsoft Windows (WSL &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230615094759545818"/>
    <summary>Oracle Linux 9: Install InstantClient (+SQL*Plus &amp; Tools)</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Wie installiert man den InstantClient 21 (+SQL*Plus &amp; Tools) &nbsp;unter Oracle Linux 8 / 9?</p><pre><code class="language-plaintext">root&gt; cd /tmp/
root&gt; wget https://download.oracle.com/otn_software/linux/instantclient/2110000/instantclient-basic-linux.x64-21.10.0.0.0dbru.zip
root&gt; wget https://download.oracle.com/otn_software/linux/instantclient/2110000/instantclient-sqlplus-linux.x64-21.10.0.0.0dbru.zip
root&gt; wget https://download.oracle.com/otn_software/linux/instantclient/2110000/instantclient-tools-linux.x64-21.10.0.0.0dbru.zip

root&gt; mkdir -p /opt/oracle
root&gt; unzip -d /opt/oracle instantclient-basic-linux.x64-21.10.0.0.0dbru.zip
root&gt; unzip -d /opt/oracle instantclient-sqlplus-linux.x64-21.10.0.0.0dbru.zip
root&gt; unzip -d /opt/oracle instantclient-tools-linux.x64-21.10.0.0.0dbru.zip
root&gt; cd /opt/oracle/instantclient_21_10 &amp;&amp; find . -type f | sort

nano ~/.bashrc

&#35; FOLGENDES EINTRAGEN
export CLIENT_HOME=/opt/oracle/instantclient_21_10
export LD_LIBRARY_PATH=$CLIENT_HOME:$LD_LIBRARY_PATH
export PATH=$LD_LIBRARY_PATH:$PATH
export TNS_ADMIN=$CLIENT_HOME/network/admin

sqlplus -V	

&#35; Kommt ein Fehler "..libaio missing ...", dann installieren:
root&gt; dnf install libaio -y</code></pre></div><p>Dies sollte auch unter Oracle Linux 8 funktionieren.</p>]]></content>
    <updated>2023-06-15T12:04:46Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230615094759545818</id>
  </entry>
  <entry>
    <title>Oracle Linux 9: Install Git</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230615114928345496"/>
    <summary>Oracle Linux 9: Install Git</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Wie installiert man Git unter Oracle Linux 9?</p><pre><code class="language-plaintext">dnf install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel
dnf install -y gcc perl-ExtUtils-MakeMaker -y
 
cd /usr/src
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.41.0.tar.gz
tar xzf git-2.41.0.tar.gz
cd git-2.41.0
make prefix=/usr/local/git all
make prefix=/usr/local/git install
echo "export PATH=$PATH:/usr/local/git/bin" &gt;&gt; /etc/bashrc
source /etc/bashrc
 
git --version
 
&#35; Git Configs setzen
git config --global user.name "MY_USER"
git config --global user.email "MY_EMAIL"
 
nano .gitconfig</code></pre><p>Nutzt man Oracle Linux 9 mit Git im WSL, und möchte nicht jedes Mal beim Zugriff auf's Git seine Credentials eingeben, gibt es den sog. GCM (<a href="https://github.com/git-ecosystem/git-credential-manager">Git Credential Manager</a>), den GitBash mitbringt. Damit dieser in WSL genutzt werden kann, gibt es diverse Möglichkeiten - siehe z.B. <a href="https://github.com/git-ecosystem/git-credential-manager/blob/release/docs/wsl.md">hier</a>. WSL mit Git für Windows, ohne Git für Windows, direkt im WSL.</p><p>Für die empfohlene Variante "<i>WSL mit Git für Windows</i>" ist folgender Befehl nötig:</p><pre><code class="language-plaintext">git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"</code></pre></div>]]></content>
    <updated>2023-06-15T12:04:39Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230615114928345496</id>
  </entry>
  <entry>
    <title>Install WSL2 (Windows Subsystem Linux) within Windows 10 / 11</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Microsoft Windows (WSL &amp; Co)" term="Microsoft Windows (WSL &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230615101905226104"/>
    <summary>Install WSL2 (Windows Subsystem Linux) within Windows 10 / 11</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Wie installiert man das WSL 2 &nbsp;(Windows Subsystem Linux) unter Windows 10 / 11?</p><p><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Führt man im PowerShell den Befehl “<strong>wsl --version</strong>” aus, wird die installierte WSL-Version angezeigt. Wird sie nicht angezeigt, so hat man&nbsp;</span></span></p><ul style="list-style-type:disc;"><li style="list-style-type:disc;"><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">entweder WSL gar nicht installiert - dann zuerst folgenden Befehl in PowerShell (Admin) absetzen und anschließend den PC neu starten.</span></span></li></ul><pre><code class="language-plaintext language-html">dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all</code></pre><ul><li><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">nicht die Version aus dem Microsoft Store installiert → zur Installation “</span></span><a href="https://aka.ms/wslstorepage" target="_blank"><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">hier" klicken.</span></span></a></li></ul><p><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Konfiguration erweiterter Einstellungen in WSL → siehe folgender </span></span><a href="https://learn.microsoft.com/de-de/windows/wsl/wsl-config" target="_blank"><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Link</span></span></a><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">. Dazu unter “C:\Users\MEIN_WINDOWS_USER\” eine Datei namens “.wslconfig” anlegen und für RAM-Einstellungen folgendes setzen:</span></span></p><pre><code class="language-js language-plaintext">[wsl2]
memory=3GB</code></pre><p><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Danach z.B. “</span></span><a href="https://apps.microsoft.com/store/detail/oracle-linux-91/9N6CN5STZRX6" target="_blank"><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Oracle Linux 9.1</span></span></a><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">” als WSL installieren und starten. Entweder über den Menüpunkt oder durch Eingabe von “<strong>oraclellinux91</strong>” im PowerShell. Benutzer und Passwort eingeben.</span></span></p><p><span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Folgende Befehle sind auszuführen - der Einfachheit halber direkt als “root” mittels einmaligem “</span><i><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;"><strong>sudo su -</strong></span></i><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">” je Login.</span></span></p><pre><code class="language-plaintext">root&gt; dnf update -y
root&gt; dnf install -y yum-utils nano

&#35; SYSTEMD
root&gt; nano /etc/wsl.conf

&#35; FOLGENDES EINTRAGEN
[boot]
systemd=true</code></pre><p>Danach das WSL einmal komplett neu starten durch Eingabe von “<strong>wsl.exe --shutdown</strong>” im PowerShell und <span style="background-color:rgb(255,255,255);color:rgb(51,51,51);"><span style="-webkit-text-stroke-width:0px;display:inline !important;float:none;font-family:&quot;Segoe UI&quot;, &quot;Segoe UI Web Regular&quot;, &quot;Segoe UI Regular WestEuropean&quot;, &quot;Segoe UI&quot;, Tahoma, Arial, Roboto, &quot;Helvetica Neue&quot;, sans-serif, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;;font-size:17px;font-style:normal;font-variant-caps:normal;font-variant-ligatures:normal;font-weight:400;letter-spacing:normal;orphans:2;text-align:left;text-decoration-color:initial;text-decoration-style:initial;text-decoration-thickness:initial;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;">Eingabe von “<strong>OracleLinux_9_1</strong>”&nbsp;zum Starten.</span></span></p></div>]]></content>
    <updated>2023-06-15T10:19:05Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230615101905226104</id>
  </entry>
  <entry>
    <title>Bilder im Report (CR/IR/IG) als Spalte anzeigen</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230613065233645814"/>
    <summary>HowTo: Bilder im Report (CR/IR/IG) als Spalte anzeigen</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Wie zeigt man Bilder im Report in einer Spalte an?</p><p>Der SQL muss das BLOB per DBMS_LOB.GETLENGTH(MY_BLOB) als Alias enthalten, damit man dann die Spalte in den Attributen mit dem Column-Type "Display Image" entsprechend konfigurieren kann.</p><pre><code class="language-sql">select
	t.my_pk,
  dbms_lob.getlength(t.my_blob) as my_image
  ...
from my_table t</code></pre><p>Folgende Column-Attributes sind mindestens erforderlich:</p><figure class="table" style="float:left;height:120px;width:350px;"><table style="border-style:dotted;"><tbody><tr><th style="border-style:dotted;">Table Owner</th><td style="border-style:dotted;">Parsing Schema</td></tr><tr><th style="border-style:dotted;">Table Name</th><td style="border-style:dotted;">MY_TABLE</td></tr><tr><th style="border-style:dotted;">BLOB Column</th><td style="border-style:dotted;">MY_BLOB</td></tr><tr><th style="border-style:dotted;">Primary Key Column 1</th><td style="border-style:dotted;">MY_PK</td></tr></tbody></table></figure><div class="page-break" style="page-break-after:always;"><span style="display:none;">&nbsp;</span></div><p>Per CSS kann man die Bilder optional formatieren:</p><pre><code class="language-css">td[headers=MY_IMAGE] img {
	width: 100px !important;
  height: 100px !important;
}</code></pre><p>Für das IG gibt es keinen Column-Type "Display Image", aber viele nützliche URLs, z.B.&nbsp;</p><p><a href="https://doyensys.com/blogs/display-image-pdf-from-blob-in-interactive-grid-using-oracle-apex-url-type-region/" target="_blank">https://doyensys.com/blogs/display-image-pdf-from-blob-in-interactive-grid-using-oracle-apex-url-type-region/</a></p></div>]]></content>
    <updated>2023-06-13T06:55:03Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230613065233645814</id>
  </entry>
  <entry>
    <title>Docker: Install Oracle 23cFREE and APEX 23.1</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230602114334846101"/>
    <summary>Docker: Install Oracle 23cFREE and APEX 23.1</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Wie installiert man Oracle 23cFREE and APEX 23.1 mit Docker?</p><p>Konfigurationsmöglichkeiten für Podman (Docker) siehe <a href="https://container-registry.oracle.com/ords/f?p=113:4:101590143960459:::4:P4_REPOSITORY,AI_REPOSITORY,AI_REPOSITORY_NAME,P4_REPOSITORY_NAME,P4_EULA_ID,P4_BUSINESS_AREA_ID:1863,1863,Oracle%20Database%20Free,Oracle%20Database%20Free,1,0&amp;cs=34QvZ5mMxyL_N1fS0yvNnREItnMh5G8Sfq_0CajhH-AdNZCEsFIE1GLWX-So4F89hyCZaH8CqiR1abYit9dQyFw" target="_blank">hier</a>.</p><p>Oracle 23cFREE&nbsp;</p><pre class="language-plaintext code-line" data-line="1" dir="auto"><code class="language-plaintext">docker pull container-registry.oracle.com/database/free:latest
docker volume create --opt type=none --opt o=bind --opt device=&lt;my_local_path&gt; OracleDBData

&#35; docker run -d -it --name 23cfree 
		-p &lt;host port&gt;:1521 -p &lt;host port&gt;:5500 -p &lt;host port&gt;:8080 -p &lt;host port&gt;:8443 
		-e ORACLE_PWD=&lt;MY_PW&gt; 
		-v OracleDBData:/opt/oracle/oradata
		container-registry.oracle.com/database/free:latest
		
docker run -d -it --name 23cfree -p 8521:1521 -p 8500:5500 -p 8023:8080 -p 9043:8443 -e ORACLE_PWD=E -v OracleDBData:/opt/oracle/oradata container-registry.oracle.com/database/free:latest</code></pre><p>APEX 23.1</p><p>1. Enter bash</p><pre class="language-plaintext code-line" data-line="8" dir="auto"><code class="language-plaintext">docker exec -it 23cfree /bin/bash</code></pre><p>2. Get APEX</p><pre class="language-plaintext code-line code-active-line" data-line="13" dir="auto"><code class="language-plaintext">curl -o apex-latest.zip https://download.oracle.com/otn_software/apex/apex-latest.zip</code></pre><p>3. Unpack and enter APEX</p><pre class="language-plaintext code-line" data-line="18" dir="auto"><code class="language-plaintext">unzip apex-latest.zip
rm apex-latest.zip
cd apex        </code></pre><p>4. Let your database settle for at least a few minutes</p><p>5. Open SQL*Plus with sqlplus / as sysdba</p><pre class="language-plaintext code-line" data-line="27" dir="auto"><code class="language-plaintext">sqlplus / as sysdba </code></pre><p>6. Run the APEX installer</p><pre class="language-plaintext code-line" data-line="32" dir="auto"><code class="language-plaintext">alter session set container = freepdb1;
@apexins.sql sysaux sysaux temp /i/        </code></pre><p><i>If you get the PLS-00201: identifier ‘SYS.DBMS_DB_VERSION’ must be declared an error, just keep re-trying this step until it works.</i></p><p class="code-line" data-line="39" dir="auto" id="7-unlock-the-public-user-account">7. Unlock the public user account</p><pre class="language-plaintext code-line" data-line="40" dir="auto"><code class="language-plaintext">alter user apex_public_user account unlock;
alter user apex_public_user identified by E;</code></pre><p>8. Change the password</p><pre class="language-plaintext code-line" data-line="46" dir="auto"><code class="language-plaintext">@apxchpwd.sql
exit     </code></pre><p>9. Create the following folders</p><pre class="language-plaintext code-line" data-line="52" dir="auto"><code class="language-plaintext">mkdir /home/oracle/software
mkdir /home/oracle/software/apex
mkdir /home/oracle/software/ords
mkdir /home/oracle/scripts    </code></pre><p>10. Copy the APEX images &amp; change the folder</p><pre class="language-plaintext code-line" data-line="60" dir="auto"><code class="language-plaintext">cp -r /home/oracle/apex/images /home/oracle/software/apex
cd /home/oracle/       </code></pre><p>11. Install sudo &amp; nano</p><pre class="language-plaintext code-line" data-line="66" dir="auto"><code class="language-plaintext">su
dnf update
dnf install sudo -y
dnf install nano -y        </code></pre><p>12. Edit the sudo list</p><pre class="language-plaintext code-line" data-line="74" dir="auto">nano /etc/sudoers
</pre><p class="code-line" style="margin-bottom:0.7em;margin-top:0px;position:relative;" data-line="77" dir="auto">In the Defaults section, add:&nbsp;</p><p class="code-line" style="margin-bottom:0.7em;margin-top:0px;position:relative;" data-line="77" dir="auto"><code>Defaults !lecture</code></p><p class="code-line" style="margin-bottom:0.7em;margin-top:0px;position:relative;" data-line="77" dir="auto">At the very end of the file add:&nbsp;</p><p class="code-line" style="margin-bottom:0.7em;margin-top:0px;position:relative;" data-line="77" dir="auto"><code>oracle ALL=(ALL) NOPASSWD: ALL</code></p><p class="code-line" style="margin-bottom:0.7em;margin-top:0px;position:relative;" data-line="77" dir="auto">&nbsp;</p><p>13. Install Java</p><pre class="language-plaintext code-line" data-line="82" dir="auto"><code class="language-plaintext">dnf install java-17-openjdk -y      </code></pre><p>14. Setup ORDS folders &amp; check JAVA</p><pre class="language-plaintext code-line" data-line="87" dir="auto"><code class="language-plaintext">mkdir /etc/ords
mkdir /etc/ords/config
mkdir /home/oracle/logs
chmod -R 777 /etc/ords
java -version        </code></pre><p><i>openjdk version "17.0.7" 2023-04-18 LTS</i></p><p>15. Whilst still as su, install ORDS</p><pre class="language-plaintext code-line" data-line="97" dir="auto"><code class="language-plaintext">yum-config-manager --add-repo=http://yum.oracle.com/repo/OracleLinux/OL8/oracle/software/x86_64
dnf install ords -y        </code></pre><p>16. Configure ORDS</p><pre class="language-plaintext code-line" data-line="102" dir="auto"><code class="language-plaintext">export _JAVA_OPTIONS="-Xms512M -Xmx512M"
ords --config /etc/ords/config install        </code></pre><p>&nbsp;The configuration you should use looks like this:</p><pre class="language-plaintext code-line" data-line="108" dir="auto"><code class="language-plaintext">Installation Type &gt; Choose option [2] Enter
Connection Type &gt; Choose option [1] Enter
host name &gt; Enter
listen port &gt; Enter
service name &gt; Enter
administrator username &gt; SYS
password &gt; E
default tablespace &gt; Enter
temp tablespace &gt; Enter
features &gt; Enter
Start ORDS &gt; [1] Enter &lt;-- Standalone Mode
protocol &gt; [1] &lt; http
port &gt; [1] &lt;-- 8080
Static Resources &gt; /home/oracle/software/apex/images   </code></pre><p><i>Oracle REST Data Services version : 23.1.3.r1371032</i> <i>Oracle REST Data Services server info: jetty/10.0.12</i> <i>Oracle REST Data Services java info: OpenJDK 64-Bit Server VM 17.0.7+7-LTS</i></p><p>17. Do a quick test and close ORDS</p><p><a style="color:var(--vscode-textLink-foreground);text-decoration:none;" href="http://localhost:8023/ords/" data-href="http://localhost:8023/ords/" title="http://localhost:8023/ords/">http://localhost:8023/ords/</a></p><p>18. Create a start_ords.sh file</p><pre class="language-plaintext code-line" data-line="133" dir="auto"><code class="language-plaintext">nano /home/oracle/scripts/start_ords.sh</code></pre><pre class="language-plaintext code-line" data-line="137" dir="auto"><code class="language-plaintext">export ORDS_HOME=/usr/local/bin/ords
export _JAVA_OPTIONS="-Xms512M -Xmx512M"
LOGFILE=/home/oracle/logs/ords-`date +"%Y""%m""%d"`.log
nohup ${ORDS_HOME} --config /etc/ords/config serve &gt;&gt; $LOGFILE 2&gt;&amp;1 &amp; echo "View log file with : tail -f $LOGFILE"</code></pre><p>19. Create a stop_ords.sh file</p><pre class="language-plaintext code-line" data-line="145" dir="auto"><code class="language-plaintext">nano /home/oracle/scripts/stop_ords.sh</code></pre><pre class="language-plaintext code-line" data-line="148" dir="auto"><code class="language-plaintext">kill `ps -ef | grep [o]rds.war | awk '{print $2}'`  </code></pre><p><i>manual run via</i></p><pre class="language-plaintext code-line" data-line="152" dir="auto"><code class="language-plaintext">sh /home/oracle/scripts/start_ords.sh
sh /home/oracle/scripts/stop_ords.sh</code></pre><p>20. Create an ORDS startup script</p><pre class="language-plaintext code-line" data-line="158" dir="auto"><code class="language-plaintext">nano /opt/oracle/scripts/startup/01_auto_ords.sh    </code></pre><pre class="language-plaintext code-line" data-line="162" dir="auto"><code class="language-plaintext">sudo sh /home/oracle/scripts/start_ords.sh     </code></pre><p>21. Exit from root and docker bash</p><pre class="language-plaintext code-line" data-line="167" dir="auto"><code class="language-plaintext">exit
exit   </code></pre><p>23. If you are using Docker on Unix, enable linger</p><p><i>Prevent user processes from being killed once the session is completed</i>&nbsp;</p><pre class="language-plaintext code-line" data-line="176" dir="auto"><code class="language-plaintext">sudo loginctl enable-linger $UID</code></pre><p>24. Stop your Docker container, and then start it again</p><pre class="language-plaintext code-line" data-line="181" dir="auto"><code class="language-plaintext">docker restart 23cfree        </code></pre><p>25. Wait a moment, and try logging in</p><p>http://localhost:8023/ords/</p><pre class="language-plaintext code-line" data-line="188" dir="auto"><code class="language-plaintext">Workspace &gt; INTERNAL
Username &gt; ADMIN
Password &gt; Your Complex Password     </code></pre><p>&nbsp;</p><p>Quelle: <a href="https://pretius.com/blog/oracle-apex-docker-ords" target="_blank">https://pretius.com/blog/oracle-apex-docker-ords</a></p></div>]]></content>
    <updated>2023-06-02T13:53:05Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230602114334846101</id>
  </entry>
  <entry>
    <title>Unlock/Reset a APEX-Builder Password on Oracle Autonomous Database</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Oracle (Database &amp; Co)" term="Oracle (Database &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230513123556815375"/>
    <summary>HowTo: Unlock/Reset a APEX-Builder Password on Oracle Autonomous Database</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Wie setzt man ein vergessenes APEX-Builder Passwort in der Oracle ATP zurück?</p><p>Wichtig: In der ATP ist die Anmeldung im APEX-Builder auf <span style="color:hsl(30,75%,60%);">Datenbankbenutzer</span> beschränkt. Daher müssen Datenbankaccount und APEX-Builder-Account <span style="color:hsl(30,75%,60%);">zwingend dieselbe Bezeichnung und auch dasselbe Passwort</span> haben !!&nbsp;</p><p>Im Folgenden nutze ich als Beispiel-Account “TEST” im Workspace “TEST”.</p><p>&nbsp;</p><p>Man verbindet sich (z.B. per SQL Developer Web oder auch SQL Developer") in seinen <strong>ADMIN-Account</strong> der ATP.</p><p><u>Accounts entsperren</u></p><p>Schritt 1: Prüfe den Accountstatus in der Datenbank:</p><pre><code class="language-sql">SELECT USERNAME, ACCOUNT_STATUS FROM DBA_USERS WHERE USERNAME = 'TEST';

&#35; Wenn der Benutzer in der Datenbank gesperrt ist, dann entsperren mittels
ALTER USER TEST ACCOUNT UNLOCK;</code></pre><p>Schritt 2: Prüfe den Accountstatus in APEX:</p><pre><code class="language-sql">SELECT WORKSPACE_NAME, USER_NAME, IS_ADMIN, IS_APPLICATION_DEVELOPER, ACCOUNT_LOCKED, FAILED_ACCESS_ATTEMPTS FROM APEX_WORKSPACE_DEVELOPERS WHERE USER_NAME = 'TEST' ORDER BY 1;

&#35; Ist der Benutzer in APEX gesperrt, so muss man sich mit dem gleichnamigen Datenbankaccont einloggen und dann entsperren mittels
BEGIN
	APEX_UTIL.SET_WORKSPACE('TEST');
	APEX_UTIL.UNLOCK_ACCOUNT('TEST');
	COMMIT;
END;
/</code></pre><p>&nbsp;</p><p><u>Passwort zurücksetzen</u></p><ol><li>In die APEX Administration einloggen (Workspace INTERNAL)</li><li>Manage Workspaces → Manage Developers and Users&nbsp;</li><li>Entsprechenden Benutzer auswählen und Passwort setzen. <span style="color:hsl(30,75%,60%);">Siehe oben, es muss zwingend dem Passwort des gleichnamigen DB-Schemas entsprechen!</span><span style="color:hsl(0,0%,0%);"> Wird ein neues Password vergeben, so kann dies danach auch dem DB-Schema gesetzt werden:</span></li></ol><pre><code class="language-sql">ALTER USER TEST IDENTFIED BY "&lt;Password&gt;"</code></pre><p>Wurde das Passwort des ADMIN-Accounts für den Workspace INTERNAL vergessen, so muss man einen SR (Service Request) über den Oracle Support erstellen.</p><p>Zur Überprüfung, ob für die APEX-Accounts die “Database Account (DB) Authentication” aktiv ist, kann man folgende Befehle nutzen:</p><pre><code class="language-sql">ALTER SESSION SET CURRENT_SCHEMA = APEX_XXXXXX;
SELECT NAME, VALUE, LAST_UPDATED_ON FROM APEX_INSTANCE_PARAMETERS WHERE NAME = 'APEX_BUILDER_AUTHENTICATION';

&#35; Wenn die Query nicht "DB" zurückgibt, so kann man die Einstellung zurücksetzen:
BEGIN
	APEX_INSTANCE_ADMIN.SET_PARAMETER('APEX_BUILDER_AUTHENTICATION', 'DB');
	COMMIT;
END;
/

</code></pre></div>]]></content>
    <updated>2023-05-13T12:50:00Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230513123556815375</id>
  </entry>
  <entry>
    <title>Docker: Befehlssammlung</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Sonstiges" term="Sonstiges"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230513120233449107"/>
    <summary>Docker - Befehlssammlung</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Eine Liste an nützlichen Befehlen von Docker - wird stetig ergänzt - letzter Stand: 15.06.2023</p><pre><code class="language-plaintext">docker ps                               &#35; Lists containers running
docker ps -a                            &#35; Lists containers (and tells you which images they are spun from)
                       
docker rm &lt;container_id&gt;                &#35; Removes a stopped container
    -f &lt;container_id&gt;                   &#35; Forces the removal of a running container (uses SIGKILL)
docker rmi &lt;image_id&gt;                   &#35; Removes an image 
                                        &#35; Will fail if there is a running instance of that image i.e. container
    -f &lt;image_id&gt;                       &#35; Forces removal of image even if it is referenced in multiple repositories, i.e. same image id given multiple names/tags 
                                        &#35; Will still fail if there is a docker container referencing image

docker build .                          &#35; Builds Docker images from a Dockerfile and a “context”, in current path
docker build $PATH                      &#35; Builds Docker images from a Dockerfile and a “context”, in $PATH 
    -t, --tag stringArray               &#35; Name and optionally a tag (format: "name:tag") 

docker run                              &#35; Create and run a NEW container from an image
    -i                                  &#35; Run interactive
    -t                                  &#35; Run with terminal
    -it                                 &#35; Run with interactive terminal
    -p LOCAL_PORT:EXPOSE_PORT           &#35; Run with port LOCAL_PORT EXPOSE_PORT (CONTAINER_PORT)
    -d                                  &#35; Deattached mode
    --rm                                &#35; Automatically remove the container when it exits
    --name string                       &#35; Assign a name to the container     
    -v                                  &#35; Bind mount a volume            
        /app/data                       &#35; Anonymous Volume
        data:/app/data                  &#35; Named Volume
        /path/to/code:/app/code         &#35; Bind Mount

docker stop                             &#35; Stop one or more running containers
docker start                            &#35; Start one or more running containers
    -a, --attach                        &#35; Attach STDOUT/STDERR and forward signals
    -i, --interactive                   &#35; Attach container's STDIN

docker tag                              &#35; Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE -&gt; SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker tag OLD_NAME NEW_NAME            &#35; Rename 

docker images                           &#35; Lists images
docker image inspect                    &#35; Display detailed information on one or more images              
docker image rm                         &#35; Remove one or more images
docker image prune                      &#35; Remove unused images

docker logs                             &#35; Fetch the logs of a container
    -f                                  &#35; Follow log output

docker cp                               &#35; Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
                                                  docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

docker login                            &#35;Log in to a registry at https://hub.docker.com                   
docker logout      

docker volume                           &#35; Manage volumes
    ls                                  &#35; List volumes
    rm                                  &#35; Remove one or more volume
    prune                               &#35; Remove all unused local volumes
    create                              &#35; Create a volume
    
docker history &lt;IMAGE&gt;                  &#35; Show the history of an image</code></pre></div><p>Siehe dazu auch:<br><a href="https://docs.docker.com/go/guides/" target="_blank">https://docs.docker.com/go/guides/</a> und <a href="https://docs.docker.com/engine/reference/builder/" target="_blank">https://docs.docker.com/engine/reference/builder/</a> und <a href="https://docs.docker.com/engine/reference/run/" target="_blank">https://docs.docker.com/engine/reference/run/</a></p>]]></content>
    <updated>2023-05-13T12:15:00Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230513120233449107</id>
  </entry>
  <entry>
    <title>Oracle Linux 9: Install Docker</title>
    <author>
      <name>Steffen Clauß</name>
    </author>
    <category label="Microsoft Windows (WSL &amp; Co)" term="Microsoft Windows (WSL &amp; Co)"/>
    <link href="https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230513110613209631"/>
    <summary>Oracle Linux 9: Install Docker</summary>
    <content type="html"><![CDATA[<div class="ck-content"><p>Wie installiert man Docker unter Oracle Linux 9?</p><pre><code class="language-plaintext">&#35; DOCKER
root&gt; yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
root&gt; dnf repolist
root&gt; dnf install docker-ce docker-ce-cli containerd.io
root&gt; dnf install docker-compose-plugin

root&gt; systemctl start docker
root&gt; systemctl enable docker
root&gt; systemctl status docker
root&gt; systemctl list-unit-files --type=service
root&gt; exit

&#35;DOCKER für Benutzer erlauben
MEIN_BENUTZER&gt; sudo usermod -aG docker MEIN_BENUTZER
MEIN_BENUTZER&gt; newgrp docker
MEIN_BENUTZER&gt; docker version
&gt; Client: Docker Engine - Community
&gt; Version:           23.0.6

MEIN_BENUTZER&gt; docker compose version
&gt; Docker Compose version v2.17.3

MEIN_BENUTZER&gt; docker run hello-world
&gt; Hello from Docker! ....</code></pre><p>Optional kann noch folgendes installiert werden:</p><pre><code class="language-plaintext">root&gt; nano /etc/yum.repos.d/oracle-linux-ol9.repo

&#35;FOLGENDES auf "enabled=1" SETZEN: [ol9_addons] und [ol9_codeready_builder]

root&gt; dnf install oracle-epel-release-el9.x86_64 -y
root&gt; dnf install oraclelinux-developer-release-el9.x86_64 -y
root&gt; yum-config-manager --enable ol9_developer_EPEL
root&gt; dnf install lynx htop mc unzip wget curl -y</code></pre></div>]]></content>
    <updated>2023-05-12T20:00:00Z</updated>
    <id>https://asc.web-republic.de/ords/r/sc/blog/post?p2_post_id=20230513110613209631</id>
  </entry>
</feed>
