<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Oraklet</title>
	<atom:link href="http://www.oraklet.no/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.oraklet.no</link>
	<description>Systemutvikling, drift, opplæring og rådgivning innen Oracle, Linux og Unix</description>
	<lastBuildDate>Tue, 16 Mar 2010 07:23:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Recovery Manager tips</title>
		<link>http://www.oraklet.no/2010/03/recovery-manager-tips/</link>
		<comments>http://www.oraklet.no/2010/03/recovery-manager-tips/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 07:22:57 +0000</pubDate>
		<dc:creator>ingemar</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.oraklet.no/?p=92</guid>
		<description><![CDATA[De fleste benytter Recovery Manager (rman) til å ta sikkerhetskopi av datafiler. Men rman kan også brukes til å flytte datafiler. Fordelen med det er at du har et godt sikkerhetsnett som beskytter deg og omgivelsen mot de store feilene. Å flytte en datafile fra A til B er ikke noe problem, men hva hvis [...]]]></description>
			<content:encoded><![CDATA[<p>De fleste benytter <em>Recovery Manager</em> (rman) til å ta sikkerhetskopi av datafiler. Men <em>rman</em> kan også brukes til å flytte datafiler. Fordelen med det er at du har et godt sikkerhetsnett som beskytter deg og omgivelsen mot de store feilene.</p>
<p>Å flytte en datafile fra A til B er ikke noe problem, men hva hvis filnavnet inneholder ny linje eller noen andre sære tegn som kom dit av mistak?<br />
<span id="more-92"></span></p>
<p>Her vises et eksempel med en datafil i tablespace <em>USERS</em> som må flyttes.</p>
<p>Begynn med å sjekke hvilket filnummer tablespacen har og ta den offline.</p>
<pre> <code>
z00u074:DR1R> <b>sqlplus / as sysdba</b>

SQL*Plus: Release 11.1.0.7.0 - Production on Ti Mar 16 07:59:16 2010

Connected to:
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production

11g SYS@DR1R SQL> <b>SELECT file_id, file_name
                                FROM dba_data_files
                                WHERE tablespace_name = 'USERS';</b>

   FILE_ID FILE_NAME
---------- ------------------------------------------------------------
         8 /u04/oradata/DR1R/DR1R_users_
            01.dbf

11g SYS@DR1R SQL> <b>ALTER TABLESPACE users OFFLINE;</b>

Tablespace altered.
</pre>
<p> </code></p>
<p>Datafil 8 skal flyttes, det gjør vi i <em>rman</em>.</p>
<pre> <code>
z00u074:DR1R> <b>rman target /</b>

Recovery Manager: Release 11.1.0.7.0 - Production on Ti Mar 16 07:41:25 2010

connected to target database: DR1R (DBID=1942219211)

RMAN> <b>COPY DATAFILE 8 to '/u04/oradata/DR1R/DR1R_users_01.dbf';</b>

Starting backup at 16/03/2010 07:55:29

using channel ORA_DISK_1

channel ORA_DISK_1: starting datafile copy

input datafile file number=00008 name=/u04/oradata/DR1R/DR1R_users_
01.dbf

output file name=/u04/oradata/DR1R/DR1R_users_01.dbf tag=TAG20100316T075530 RECID=1 STAMP=713778931

channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01

Finished backup at 16/03/2010 07:55:31

RMAN> <b>LIST COPY LIKE '%users%';</b>

specification does not match any archived log in the recovery catalog

List of Datafile Copies

=======================
Key     File S Completion Time     Ckp SCN    Ckp Time
------- ---- - ------------------- ---------- -------------------
1       8    A 16/03/2010 07:55:31 72709346997 16/03/2010 07:42:09

        Name: /u04/oradata/DR1R/DR1R_users_01.dbf

        Tag: TAG20100316T075530

RMAN> <b>SWITCH DATAFILE 8 TO COPY;</b>

datafile 8 switched to datafile copy "/u04/oradata/DR1R/DR1R_users_01.dbf"

RMAN> <b>LIST COPY LIKE '%users%';</b>

specification does not match any archived log in the recovery catalog

List of Datafile Copies

=======================

Key     File S Completion Time     Ckp SCN    Ckp Time
------- ---- - ------------------- ---------- -------------------
2       8    A 16/03/2010 07:56:01 72709346997 16/03/2010 07:42:09

        Name: /u04/oradata/DR1R/DR1R_users_
01.dbf

        Tag: TAG20091126T103852
</pre>
<p> </code></p>
<p>Dermed er datafilen flyttet på en trygg og hurtig måte! Da gjenstår det å rydde opp, sjekk først at filen er på riktig sted i <em>SQL*PLus</em>.</p>
<pre> <code>
11g SYS@DR1R SQL> <b>SELECT file_id, file_name
                                FROM dba_data_files
                                WHERE tablespace_name = 'USERS';</b>

   FILE_ID FILE_NAME
---------- ------------------------------------------------------------
         8 /u03/oradata/DR1R/DR1R_users_01.dbf

11g SYS@DR1R SQL> <b>ALTER TABLESPACE users ONLINE;</b>

Tablespace altered.
</pre>
<p> </code></p>
<p>Fjern filen fra disken ved hjelp av <em>rman</em>.</p>
<pre> <code>
RMAN> <b>DELETE COPY LIKE '%users%';</b>

released channel: ORA_DISK_1
allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=513 device type=DISK

specification does not match any archived log in the recovery catalog

List of Datafile Copies

=======================

Key     File S Completion Time     Ckp SCN    Ckp Time
------- ---- - ------------------- ---------- -------------------
2       8    A 16/03/2010 07:56:01 72709346997 16/03/2010 07:42:09

        Name: /u04/oradata/DR1R/DR1R_users_
01.dbf

        Tag: TAG20091126T103852

Do you really want to delete the above objects (enter YES or NO)? <b>YES</b>

deleted datafile copy
datafile copy file name=/u04/oradata/DR1R/DR1R_users_
01.dbf RECID=2 STAMP=713778961
Deleted 1 object
</pre>
<p> </code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oraklet.no/2010/03/recovery-manager-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Forenkle arbeidsdagen med rlwrap</title>
		<link>http://www.oraklet.no/2009/02/rlwrap/</link>
		<comments>http://www.oraklet.no/2009/02/rlwrap/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 19:53:29 +0000</pubDate>
		<dc:creator>ingemar</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.oraklet.no/?p=55</guid>
		<description><![CDATA[One of my favorite program is <em>rlwrap</em>. I usually wrap this program around all command based programs where I would like to use the arrows keys for easy editing.]]></description>
			<content:encoded><![CDATA[<p>Et av mine favorittprogram er <em>rlwrap</em>. Det programmet &#8220;pakker&#8221; jeg inn i andre programmer hvor jeg ønsker at pil-tastene skal anvendes for enkel redigering av teksten.</p>
<p>Hvis du arbeider på Ubuntu Linux finnes pakken ferdig kompilert, da er det bare å laste ned programmet:</p>
<pre> <code>
oracle@ubuntu: ~ $ <strong>sudo apt-get install rlwrap</strong>
...
</code></pre>
<p><span id="more-55"></span><br />
For de fleste andre Linux og Unix varianter må du først søke på Google etter <em>rlwrap</em> og laste ned kildekoden.</p>
<pre> <code>
[oracle@linux tmp]$ <strong>tar xvzf rlwrap-0.30.tar.gz</strong>
rlwrap-0.30/
rlwrap-0.30/completions/
rlwrap-0.30/completions/ftp
...

[oracle@linux tmp]$ <strong>cd rlwrap-0.30</strong>
/tmp/rlwrap-0.30

[oracle@linux rlwrap-0.30]$ <strong>./configure</strong>
checking build system type... i686-pc-linux-gnu
checking host system type... i686-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk

...

config.status: creating distribution/rlwrap.spec
config.status: creating config.h
config.status: executing depfiles commands

Now do:
make (or gmake)  to build rlwrap
make check       for instructions how to test it
make install     to install it

[oracle@linux rlwrap-0.30]$ <strong>make</strong>
make  all-recursive
make[1]: Entering directory `/tmp/rlwrap-0.30'
Making all in doc
/tmp/rlwrap-0.30/doc
make[2]: Entering directory `/tmp/rlwrap-0.30/doc'
sed -e 's#@DATADIR@#/usr/local/share#'  rlwrap.man &gt; rlwrap.1
make[2]: Leaving directory `/tmp/rlwrap-0.30/doc'
Making all in src

[oracle@linux rlwrap-0.30]$ <strong>sudo make install</strong>
Password: <strong>######</strong>
Making install in doc
/tmp/rlwrap-0.30/doc
make[1]: Entering directory `/tmp/rlwrap-0.30/doc'
make[2]: Entering directory `/tmp/rlwrap-0.30/doc'
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/local/share/man/man1" || /bin/mkdir -p "/usr/local/share/man/man1"
/usr/bin/install -c -m 644 './rlwrap.1' '/usr/local/share/man/man1/rlwrap.1'
make[2]: Leaving directory `/tmp/rlwrap-0.30/doc'
make[1]: Leaving directory `/tmp/rlwrap-0.30/doc'
Making install in src
/tmp/rlwrap-0.30/src
make[1]: Entering directory `/tmp/rlwrap-0.30/src'
make[2]: Entering directory `/tmp/rlwrap-0.30/src'
test -z "/usr/local/bin" || /bin/mkdir -p "/usr/local/bin"
/usr/bin/install -c 'rlwrap' '/usr/local/bin/rlwrap'
make[2]: Nothing to be done for `install-data-am'.
make[2]: Leaving directory `/tmp/rlwrap-0.30/src'
make[1]: Leaving directory `/tmp/rlwrap-0.30/src'
make[1]: Entering directory `/tmp/rlwrap-0.30'
make[2]: Entering directory `/tmp/rlwrap-0.30'
make[2]: Nothing to be done for `install-exec-am'.
test -z "/usr/local/share/rlwrap" || /bin/mkdir -p "/usr/local/share/rlwrap"
/usr/bin/install -c -m 644 'completions/ftp' '/usr/local/share/rlwrap/ftp'
/usr/bin/install -c -m 644 'completions/testclient' '/usr/local/share/rlwrap/testclient'
/usr/bin/install -c -m 644 'completions/coqtop' '/usr/local/share/rlwrap/coqtop'
make[2]: Leaving directory `/tmp/rlwrap-0.30'
make[1]: Leaving directory `/tmp/rlwrap-0.30'

[oracle@linux rlwrap-0.30]$ <strong>which rlwrap</strong>
/usr/local/bin/rlwrap
</code></pre>
<p>Muligens må du laste ned fler biblioteker for å få <em>rlwrap</em> til å kompilere.</p>
<pre> <code>
[oracle@linux tmp]$ <strong>tar xvzf readline-5.2.tar.gz</strong>
readline-5.2/
readline-5.2/doc/
readline-5.2/doc/Makefile.in

...

[oracle@linux readline-5.2]$ <strong>cd readline-5.2</strong>
/tmp/readline-5.2

[oracle@linux readline-5.2]$  <strong>./configure</strong>
[oracle@linux readline-5.2]$ <strong>make</strong>
[oracle@linux readline-5.2]$ <strong>sudo make install</strong>
[oracle@linux readline-5.2]$ <strong>sudo ldconfig</strong>
</code></pre>
<p>Legg inn noen alias i for eksempel <strong>.bashrc</strong> så er <em>rlwrap</em> inkludert i de programmene du bruker hver dag.</p>
<pre> <code>
ingemar@linux: ~ $ <strong>cd</strong>

ingemar@linux: ~ $ <strong>vi .bashrc</strong>

alias sql='sqlplus "/ as sysdba"'
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias dgmgrl='rlwrap dgmgrl'

alias boston='. ~/.boston'
alias chicago='. ~/.chicago'
alias emrep='. ~/.emrep'

alias test10g='. ~/.test10g'
alias test11g='. ~/.test11g'

alias ll='ls -ltr'
</code></pre>
<p>Da er det bare å teste hvordan dine program fungerer.</p>
<p>Lykke til!<em></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.oraklet.no/2009/02/rlwrap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash recovery area og ORA-19809</title>
		<link>http://www.oraklet.no/2008/10/flash-recovery-area-og-ora-19809/</link>
		<comments>http://www.oraklet.no/2008/10/flash-recovery-area-og-ora-19809/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 19:17:33 +0000</pubDate>
		<dc:creator>ingemar</dc:creator>
				<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.oraklet.no/?p=56</guid>
		<description><![CDATA[Har du støtt på Oracle feilmeldingen ORA-19804, ORA-19809 eller ORA-19815 mange ganger? Dette skyldes at du har nådd den logiske grensen på &#8220;flash_recovery_area&#8221; i Oracle-terminologien. Jeg mener dette er en feil i rutinen til programmet som oppretter databasen &#8211; database konfigurasjons assistenten dbca og skyldes som regel at du har beholdt standard oppsettet på DB_RECOVERY_FILE_DEST_SIZE [...]]]></description>
			<content:encoded><![CDATA[<p>Har du støtt på Oracle feilmeldingen <strong>ORA-19804</strong>, <strong>ORA-19809</strong> eller <strong>ORA-19815</strong> mange ganger?</p>
<p>Dette skyldes at du har nådd den logiske grensen på &#8220;flash_recovery_area&#8221; i Oracle-terminologien. Jeg mener dette er en feil i  rutinen til programmet som oppretter databasen &#8211; database konfigurasjons assistenten <em>dbca</em> og skyldes som regel at du har beholdt standard oppsettet på <strong>DB_RECOVERY_FILE_DEST_SIZE</strong> som er 2 GB.<span id="more-56"></span></p>
<h3>Hva er riktig størrelse?</h3>
<p>Som regel benytter man et stort område til å lagre arkivfiler og sikkerhetskopi av databasene. Og derfor burde database konfigurasjons assistenten vært mer nøyaktig om hvilke konsekvenser denne feilen får. Konsekvensen er at databasen stopper helt til du enten rydder plass eller endrer størrelsen til noe mer realistisk, for eksempel 90% av den plass du har avsatt for arkivering og sikkerhetskopier av databasen. Har du flere databaser på samme server konkurrerer de muligens også om den samme plassen.</p>
<h3>Begynn med å sjekke alert-loggen</h3>
<p>Alert loggen er et bra sted å søke i når denne logiske grense er nådd. Det kan da se slik ut:</p>
<pre><code>
ORA-19815: WARNING: db_recovery_file_dest_size of 53687091200 bytes is 100.00% used, and has 0 remaining bytes available.
************************************************************************
You have following choices to free up space from flash recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
   then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
   BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
   reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
   system command was used to delete files, then use RMAN CROSSCHECK and
   DELETE EXPIRED commands.
************************************************************************
Creating archive destination file : /oradata/flash_recovery_area/PROD/archivelog/2008_09_26/o1_mf_1_10164_0_.arc (189364 blocks)
Fri Sep 26 18:06:36 2008
Errors in file /oracle/admin/PROD/udump/prod_rfs_17303.trc:
ORA-00270: error creating archive log /oradata/flash_recovery_area/PROD/archivelog/2008_09_26/o1_mf_1_10164_%u_.arc
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 96954368 bytes disk space from 53687091200 limit
</pre>
<p>Du kan også bruke Oracle-kommandoen <em>oerr</em>  for å få en forklaring til disse ORA- feilmeldingene. Denne kommandoen finnes kun på Linux og Unix plattformen.</p>
<pre><code>
oracle@xps:~$ <strong>oerr ora 19809</strong>
19809, 00000, "limit exceeded for recovery files"
//*Cause: The limit for recovery files specified by the
//        DB_RECOVERY_FILE_DEST_SIZE was exceeded.
//*Action:The error is accompanied by 19804. See message 19804 for further
//        details.

oracle@xps:~$ <strong>oerr ora 19804</strong>
19804, 00000, "cannot reclaim %s bytes disk space from %s limit"
// *Cause: Oracle cannot reclaim disk space of specified bytes from the
//         DB_RECOVERY_FILE_DEST_SIZE limit.
// *Action: There are five possible solutions:
//          1) Take frequent backup of recovery area using RMAN.
//          2) Consider changing RMAN retention policy.
//          3) Consider changing RMAN archivelog deletion policy.
//          4) Add disk space and increase DB_RECOVERY_FILE_DEST_SIZE.
//          5) Delete files from recovery area using RMAN.
</code></pre>
<p><h3>Hvor mye ledig plass gjenstår?<br />
</h3>
<p>Ønsker du å sjekke hvor mye plass som er benyttet kan følgende SQL brukes:</p>
<pre><code>
SYS@PROD SQL&gt; <strong>SELECT (100 - sum(percent_space_used))
                              + sum(percent_space_reclaimable)
                              "Prosent ledig plass"
                              FROM v$flash_recovery_area_usage;</strong>

Prosent ledig plass
-------------------
	      84,09
</code></pre>
<p>Løsningen på problemet er indikert i såvel alert loggen som ORA-teksten og en enkel variant er å endre parameteren DB_RECOVERY_FILE_DEST_SIZE til å bedre indikere hvor stor plass som er avsatt til dette området. SQL-en ser da slik ut:</p>
<pre><code>
SYS@PROD SQL&gt; <strong>ALTER SYSTEM SET
                              db_recovery_file_dest_size = 100G;</strong>
</code></pre>
<p>Hvis du ønsker en tilbakemelding neste gang området er på vei å fylles opp kan du enten benytte deg av <em>Oracle Enterprise Manager</em> eller overvåkingsprogrammet <a class="aligncenter" title="dbWatch Software" href="http://www.dbwatchsoftware.com" target="_blank"><em>dbWatch</em></a>. <i>dbWatch</i> har etterhvert fått stor anerkjennelse og fikk en 5-stjerners vurdering i juli.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oraklet.no/2008/10/flash-recovery-area-og-ora-19809/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bør du oppgradere Oracle, eller vente?</title>
		<link>http://www.oraklet.no/2008/10/b%c3%b8r-du-oppgradere-oracle-eller-vente/</link>
		<comments>http://www.oraklet.no/2008/10/b%c3%b8r-du-oppgradere-oracle-eller-vente/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 20:50:28 +0000</pubDate>
		<dc:creator>ingemar</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Oppgradering Oracle10g Oracle11g]]></category>

		<guid isPermaLink="false">http://www.oraklet.no/?p=13</guid>
		<description><![CDATA[Ofte får jeg spørsmålet av mine kunder om de trenger å oppgradere Oracle databasene sine til den siste versjonen. Det man må vurdere er om det er lurt å vente med oppgraderingene for å ta et kjerring tak eller om det lureste er å oppgradere jevnt og trutt. Kunden sier ofte at alt fungerer og [...]]]></description>
			<content:encoded><![CDATA[<p>Ofte får jeg spørsmålet av mine kunder om de trenger å oppgradere Oracle databasene sine til den siste versjonen. Det man må vurdere er om det er lurt å vente med oppgraderingene for å ta et kjerring tak eller om det lureste er å oppgradere jevnt og trutt.<span id="more-13"></span></p>
<p>Kunden sier ofte at alt fungerer og at de er fornøyde med tingenes tilstand. Jeg begynner da med å stille noen kontrollspørsmål som for eksempel hvilken versjon av Oracle de benytter, hvor mange forskjellige versjoner de har og kanskje jeg også spør litt om bedriftens sikkerhets policy. Svaret kan da bli at de har <em>Oracle8i</em>, <em>Oracle9i</em> og muligens også noen <em>Oracle10g</em> databaser. Litt forskjellige versjoner som oftest. Hører jeg at de bruker <em>Oracle8i</em> eller <em>Oracle9i</em> spør jeg litt forsiktig om de vet hvilke versjoner som er supportert av Oracle. Om sikkerheten får jeg høre at den er høy fordi de har investert i en brannmur og da er det ikke noe problem.</p>
<p>Litt moro er det også å se litt forsiktig i hyllene til kundene. Ser jeg at de samler på dokumentasjon fra <em>Oracle7</em> eller <em>Oracle8i</em> skjønner jeg at tiden har stått stille lenge (men det kan jeg ikke si).</p>
<h3>Mulighetene venter på deg</h3>
<p>Nå kunne jeg ha hevdet at du bør oppgradere fordi da får du adgang til alle de nye, deilige funksjonene som ligger der og venter på deg, men sannheten er at de fleste kundene nesten ikke bruker noe av dette. Mange av databasene bruker så få muligheter at de fint kunne kjørt på <em>Oracle7</em> (det er derfor de har beholdt dokumentasjonen&#8230;), men jeg har flere begrunnelser for hvorfor du bør oppgradere.</p>
<h3>Support</h3>
<p>For det første kan du regne med bedre oppfølgning fra Oracle support hvis du en dag trenger hjelp. Det er et ufravikelig faktum at de kundene som benytter de siste versjonene av Oracle stiller i en særklasse her. Men når det er sagt er Oracle support blitt flinkere til å bistå også når du trenger assistanse vedrørende en noe eldre versjon av databasen.</p>
<h3><em>Oracle8i</em>, <em>Oracle9i</em>, <em>Oracle10g</em> og nå <em>Oracle11g</em></h3>
<p>For øyeblikket finnes det to versjoner det er aktuelt å oppgradere til: <em>Oracle10g R2</em> versjon 10.2.0.4 og <em>Oracle11g R1</em> versjon 11.1.0.7.  Det vil si versjon 2 av <em>Oracle10g</em> og versjon 1 av <em>Oracle11g</em>. Som en liten parentes kan vi se et øyeblikk tilbake til tidligere versjoner av Oracle. <em>Oracle8</em> versjon 0 (8.0.6) var det ikke mange som benyttet, de ventet til versjon 1 som fikk navnet <em>Oracle8i</em> kom, i&#8217;en markerte at det vare en database for <strong>Internet</strong>. Det samme gjaldt <em>Oracle9i</em> versjon 0 (9.0.1), de fleste ventet til <em>Oracle9i</em> versjon 2 kom. Nå gjentar seg det med <em>Oracle10g</em> hvor det er få kunder som har installert versjon 1. Nå når <em>Oracle10g</em> versjon 2 har vært ute en tid kan vi forvente oss at kunder begynner å tenke på å oppgradere.</p>
<h3>Kjente feil</h3>
<p>Sjekker vi hvor mange kjente feil som finnes i de forskjellige versjonene av <em>Oracle10g</em> R2 kan følgende figur gi en oversikt:</p>
<table style="text-align: left;" border="0">
<tbody>
<tr>
<th><em>Oracle10g Server</em></th>
<th> 10.2.0.1</th>
<th> 10.2.0.2</th>
<th> 10.2.0.3</th>
<th> 10.2.0.4</th>
</tr>
<tr>
<td>Totalt dokumenterte feil</td>
<td></td>
<td style="text-align: right;">346</td>
<td style="text-align: right;">793</td>
<td style="text-align: right;">1974</td>
</tr>
<tr>
<td>Ikke dokumenterte feil i Oracle Server</td>
<td></td>
<td style="text-align: right;">420</td>
<td style="text-align: right;">387</td>
<td style="text-align: right;">664</td>
</tr>
<tr>
<td>Ikke dokumenterte feil i Oracle OLAP</td>
<td></td>
<td style="text-align: right;">100</td>
<td style="text-align: right;">92</td>
<td style="text-align: right;">1</td>
</tr>
</tbody>
</table>
<p>Tabellen skal leses slik at om du oppdaterer fra versjon 10.2.0.3 til 10.2.0.4, er 1974 dokumenterte feil rettet i Oracle server-koden. Oppgraderer du fra versjon 10.2.0.1 til 10.2.0.4 er 3113 dokumenterte feil blitt rettet. Du ser også at antallet rettede feil er mye høyere i 10.2.0.4 i forhold til tidligere versjoner. Dette skyldes at fler kunder har tatt i bruk produktet og dermed blir flere feil oppdaget og rettet.</p>
<p>Hvis vi ser på antallet ikke dokumenterte feil som er blitt rettet er tendensen også at det er blitt rettet noen fler feil i den siste versjonen av <em>Oracle 10g</em> R2. Ser vi på de andre produktene er det vært å merke seg at antallet ikke dokumenterte feil i OLAP-modulen (online analytisk prosesseringløsning) har gått ned fra 100 til 1! Dette er et produkt som ikke mange kunder har tatt i bruk enda, men det er antageligvis viktig for de kundene som benytter det. Moralen her må være: Ikke bruk OLAP i noen lavere versjon enn 10.2.0.4.</p>
<p>Jeg vil med andre ord anbefale de fleste kundene å oppgradere til <em>Oracle10g</em> versjon 10.2.0.4. Dette leder oss til neste avsnitt: Hvordan?</p>
<h3>Hvordan oppgraderer vi?</h3>
<p>En mulighet i <em>Oracle10g</em> R2 er å klone installasjonen, dvs. du kopierer den versjonen du har til en ny katalog og oppgraderer derfra. Dermed kan du oppgradere i kontrollerte former, først lytteprosessen i SQL*Net, deretter ASM (om du benytter deg av dette), så kommer den minst viktige databasen eller en test database. Du tar alle databasene i tur og orden med den mest kritiske sist. Denne måten er spesielt gunstig på Windows hvor du ellers må regne med å starte maskinen på nytt for å få begynt oppgraderingen.</p>
<p>Kloningen kan du utføre slik. Her vises eksempel som kan brukes i Unix og Linux. Du erstatter &#8230;/10.2.0/db_1 med &#8230;/10.2.0.<strong>4</strong>/db. Min begrunnelse for dette er at <strong>db_1</strong> gir ikke noen informasjon, <strong>10.2.0.4</strong> forteller akkurat hva denne katalogen inneholder.</p>
<pre><code>oracle@ferrari:~ <strong>$echo $ORACLE_HOME</strong>
/oracle/product/10.2.0/db_1
oracle@ferrari:~ <strong>mkdir /oracle/product/10.2.0.4/db</strong>
oracle@ferrari:~ <strong>cp -rp $ORACLE_HOME /oracle/product/10.2.0.4/db</strong>
oracle@ferrari:~ <strong>cd /oracle/product/10.2.0.4/db/clone/bin</strong>
oracle@ferrari:bin <strong>perl ./clone.pl ORACLE_HOME='/oracle/product/10.2.0.4/db' ORACLE_HOME_NAME='Oracle_10204'&nbsp;&nbsp;&nbsp;&nbsp;</strong>
...
oracle@ferrari:bin <strong>sudo /oracle/product/10.2.0.4/db/root.sh</strong>
...
</pre>
<p></code><br />
Når du har klonet Oracle til en ny katalog, oppgraderer du denne, ikke den gamle versjonen. Det aller beste er at du kan utføre dette i et test miljø, pakke det sammen, kopiere over til ditt utviklings og produksjonsmiljø, kjøre klone programmet og du er 100% sikker på at alle installasjonene er like. Dette uten å ha startet <em>Oracle Universal Installer</em> - OUI. Nå har du en ny versjon ved siden av den gamle som du kan flytte over passord-fil og parameter- eller serverparameter-fil (spfile) til innen du oppgraderer databasene. Kan det utføres enklere?</p>
<p>Selvfølgelig bør du ha studert relevante <em>README</em> dokumenter. I denne forbindelse anbefales spesielt  <strong>10g Upgrade Companion</strong> beskrevet i Metalink notat <strong>466181.1</strong>. Jeg mener denne håndboken bør være obligatorisk lesning for alle som planlegger en oppgradering.</p>
<p>Noen overraskelser kan du få på veien når du oppgraderer databasen. For eksempel inneholder <strong>CONNECT</strong> rollen kun <strong>CREATE SESSION</strong> rettigheten i <em>Oracle10g</em> R2. Dette oppdager du når du tester og endrer i god før produksjonsystemet står for tur, ikke sant!</p>
<p>Som et siste tips hvis du velger å oppgradere til <em>Oracle11g</em> er det en ting du bør huske på, det skilles mellom store og små bokstaver i passord som er opprettet for å øke sikkerheten. Dette er selvfølgelig en fordel men kan gi litt trøbbel i for eksempel database linker hvor det står:</p>
<pre> <code>...IDENTIFIED BY passord...;</code></pre>
<p>Det burde ha stått:</p>
<pre> <code>...IDENTIFIED BY <strong>'</strong>passord<strong>'</strong>...;</code></pre>
<p>Dette for å være sikker på at linken fungerer i <em>Oracle11g</em>. Du så forskjellen? Apostrofer rundt passordet.</p>
<h3><em>Oracle10g </em>R2 eller <em>Oracle11g </em>R1</h3>
<p>Så er da spørsmålet: skal jeg oppgradere til 10g eller 11g? Svaret er som oftest hva er kritiske faktorer for deg i ditt prosjekt? Trenger du trygghet - velg <em>Oracle10g </em>R2, trenger du noe som kun 11g kan tilby som for eksempel bedre <strong>passordhåndtering</strong> eller bedre håndtering av <strong>partisjoner</strong>, vurder <em>Oracle11g </em>R1.</p>
<p>Lykke til med oppgraderingene og husk å dobbelsjekke sikkerhetskopien innen du begynner...</p>
]]></content:encoded>
			<wfw:commentRss>http://www.oraklet.no/2008/10/b%c3%b8r-du-oppgradere-oracle-eller-vente/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL-prompt i Oracle</title>
		<link>http://www.oraklet.no/2006/11/hello-world/</link>
		<comments>http://www.oraklet.no/2006/11/hello-world/#comments</comments>
		<pubDate>Sun, 26 Nov 2006 13:46:23 +0000</pubDate>
		<dc:creator>ingemar</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[sql-prompt sqlprompt glogin.sql login.sql]]></category>

		<guid isPermaLink="false">http://192.168.2.114/?p=1</guid>
		<description><![CDATA[Bruker du også SQL*Plus når du arbeider i Oracle? Da har jeg et tips til deg. Det første jeg gjør når jeg arbeider i en ny database er å redigere SQL-prompten. Da vises navnet du har logget inn med og instanse navnet i prompten. Variabelen sqlprompt defineres enten i filen glogin i katalogen $ORACLE_HOME/sqlplus/admin eller [...]]]></description>
			<content:encoded><![CDATA[<p>Bruker du også <em>SQL*Plus</em> når du arbeider i Oracle? Da har jeg et tips til deg.</p>
<p>Det første jeg gjør når jeg arbeider i en ny database er å redigere SQL-prompten. Da vises navnet du har logget inn med og instanse navnet i prompten.<span id="more-1"></span></p>
<p>Variabelen <strong>sqlprompt</strong> defineres enten i filen <em>glogin</em> i katalogen <em>$ORACLE_HOME/sqlplus/admin</em> eller i lokal fil <em>login.sql</em>. Arbeider du fra en klient utføres endringen der.</p>
<h3>SQL-prompt i Oracle10g og Oracle11g</h3>
<pre> <code>SET sqlprompt “_USER’@'_CONNECT_IDENTIFIER SQL&gt; “</code></pre>
<p>Og resultatet blir:</p>
<pre> <code>SYS@DW SQL&gt; </code></pre>
<p>Dette kan du lese mere om i Oracle dokumentasjonen, <a title="sqlprompt i 10g" href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14357/ch12040.htm#SQPUG108" target="_blank"><em>Oracle10g</em></a> og <a title="sqlprompt i 11g" href="http://download.oracle.com/docs/cd/B28359_01/server.111/b31189/ch12040.htm#SQPUG108" target="_blank"><em>Oracle11g</em></a>.</p>
<h3>SQL-prompt i Oracle9i</h3>
<p>I Oracle9i kan du ikke bruke denne metoden uten må jukse litt. Her ser du en mulig løsning:</p>
<pre><code>-- Definert av Ingemar J. Haverstad
SET TERMOUT OFF

DEFINE gname=idle

COLUMN global_name new_value gname

SELECT LOWER(user) || '@' ||
  SUBSTR(global_name, 1,
                decode(dot, 0, LENGTH(global_name), dot-1)) global_name
  FROM (SELECT global_name, INSTR(global_name, '.') dot
FROM global_name);

SET sqlprompt '&amp;gname SQL&gt; '

SET TERMOUT ON
</code></pre>
<p>Denne er litt mer tungvint men kanskje OK  allikevel.</p>
<h3>SQL-prompt i Data Guard</h3>
<p>Dette leder oss til en variant som jeg bruker i Data Guard. Utfordringen her er å vite om man er i primærbasen eller i Data Guard databasen. Følgende knep kan brukes:</p>
<pre> <code>-- Definert av Ingemar J. Haverstad
SET TERMOUT OFF

DEFINE g_name=idle

COLUMN global_name new_value g_name

SELECT '[' || database_role || '] ' ||
  LOWER(user) || '@' ||
  db_unique_name global_name
FROM v$database;

SET sqlprompt '&amp;g_name SQL&gt; '

SET TERMOUT ON
</code></pre>
<p>Resultatet blir følgende i primær databasen:</p>
<pre> <code>[PRIMARY] sys@CHICAGO SQL&gt;
</code></pre>
<p>Resultatet blir følgende i standby databasen:</p>
<pre> <code>[PHYSICAL STANDBY] sys@BOSTON SQL&gt;
</code></pre>
<p>Vakkert, ikke sant!</p>
<h3>SQL-prompt i Real Application Cluster</h3>
<p>Noe liknende kan også brukes i <em>Real Application Cluster</em> miljøer. Her er det en fordel å angi hvilken av flere instanser du er innlogget på. Dette vises best med et eksempel:</p>
<pre> <code>-- Definert av Ingemar J. Haverstad
SET TERMOUT OFF

DEFINE g_name=idle

COLUMN global_name new_value g_name

SELECT
  LOWER(user) || '@' ||
  instance_name global_name
FROM v$instance;

SET sqlprompt '&amp;g_name SQL&gt; '

SET TERMOUT ON
</code></pre>
<p>Resultatet blir følgende når system brukeren er pålogget første instansen:</p>
<pre> <code>system@PROD1 SQL&gt;
</code></pre>
<p>Og resultatet blir følgende når system brukeren er pålogget andre instansen:</p>
<pre> <code>system@PROD2 SQL&gt;</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.oraklet.no/2006/11/hello-world/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
