<?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 &#187; SQL</title>
	<atom:link href="http://www.oraklet.no/category/sql/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>Fri, 30 Sep 2011 08:43:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<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 Jansson Haverstad</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 &#8230; <a href="http://www.oraklet.no/2006/11/hello-world/">Les videre <span class="meta-nav">&#8594;</span></a>]]></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>

