Ich habe gerade wieder einmal ein nützliches PL/SQL-Package entdeckt: ctx_report
Mit ihm bekommt man ein paar Informationen über Context-Indexes. Ist zwar schlecht formatiert, steht aber viel drin.
Artikel in der Kategorie 'Oracle'
Hier ein kleines Beispiel wie man mittel JRuby über JDBC sich zu Oracle verbinden kann:
require ‘java’
module J
include_package "java.lang"
include_package ‘java.sql’
end
db_user=’jruby’
db_password=db_user
db_host=’localhost’
db_port=1521
db_sid=’XE’
url="jdbc:oracle:thin:#{db_user}/#{db_password}@#{db_host}:#{db_port}:#{db_sid}"
J::Class.forName("oracle.jdbc.OracleDriver")
conn = J::DriverManager.getConnection(url);
stmt = conn.createStatement
rs = stmt.executeQuery("select object_type, object_name from user_objects")
while (rs.next) do
puts rs.getString(1)+’ ‘+rs.getString(2)
end
rs.close
stmt.close
conn.close()
Falls jemand schon einmal eine ORA-00904 bekommen hat, als er versucht hat einen XMLType in ein CLOB umzuverwandeln, …
SQL> select attributes.getCLOBVal() from product_xv;
select attributes.getCLOBVal() from product_xv
*
ERROR at line 1:
ORA-00904: “ATTRIBUTES”.”GETCLOBVAL”: invalid identifier
Elapsed: 00:00:00.00
… der sollte einmal ein Tabellen-Alias verwenden. Ohne diesem geht es nämlich nicht:
SQL> select p.attributes.getCLOBVal() from [...]
Leider gibt es keine RENAME $oldname$ TO $newname$ für Stored-Procedures in Oracle. Dafür kann man folgendes kleines SQL-Skript benutzen:
DECLARE
txt VARCHAR2(4000);
BEGIN
SELECT dbms_metadata.get_ddl(’&&type’, UPPER(’&&old’))
INTO txt FROM dual;
txt := REPLACE(txt, ‘&&old’, ‘&&new’);
txt := REPLACE(txt, UPPER(’&&old’), ‘&&new’);
[...]
Oracle kann DML-Operationen parallelisieren. Das funktioniert bei UPDATE und DELETE-Anweisungen nur, wenn die entsprechende Tabelle partitioniert ist. Einfache INSERT-Anweisungen können nicht parallelisiert werden. Nur “INSERT INTO tab SELECT * FROM tab2“-Anweisungen können auch ohne Partitionierung parallelisiert werden. Folgendes Beispiel zeigt das empfohlene Vorgehen:
ALTER SESSION ENABLE PARALLEL DML;
INSERT /*+ PARALLEL (emp_big,4,1) */ INTO emp_big SELECT * [...]
Im Zuge meiner Verantwortlichkeit bezüglich Locking in unserer Firma habe ich mir das Package DBMS_LOCK genauer angeschaut. Mein Resumee: einfach und genial. Mit diesem Package ist es ganz einfach, die Read- bzw. Write-Locks zu implementieren.
Man benötigt drei Methoden:
DBMS_LOCK.ALLOCATE_UNIQUE: Mit dieser Prozedur wird ein eindeutiges Lock-Handle generiert. Dieses hängt vom übergebenen Namen ab (symbolisiert eine benannte [...]
Als nächstes Projekt haben wir uns das/der/die Oracle Application Express (Früher: Oracle Express Edition mit HTMLDB) installiert. Diesmal auf Windows. Dauer: 10min. Das spricht für sich. Eine wirklich einfache Installation mit der man in kürzester Zeit viel Datenbank bekommt.
Als oracle mit Target-Host verbinden
Das Download-Skript vom Grid-Control-Host herunterladen: http://:4889/agent_download/ (mit Slash)
Das Download-Skript (agentDownload.linux) als Oracle-User ausführen.
Den Anweisungen folgen. -> Man muß noch ein root.sh ausführen.
Danach muss sich sich der neue Agent beim Grid-Control anmelden. Dazu folgendes ausführen: $AGENT_HOME/bin/emctl secure agent.
Im Grid-Control auf die Target-Database gehen und das entsprechende Sys-Passwort eingeben (Nutzung der Konfiguration).
Nach einigen Startschwierigkeiten mit der Konfiguration der Netzwerkkarte, haben wir es endlich geschafft. Die SLES9 ist zwar leicht zu bedienen, man weiß aber nicht, was genau passiert, wenn man das yast2 benutzt. Effekt war, das sich die Reihenfolge der Netzwerkkarten auf dem einen Rechner geändert hatte. Dadurch schlug die CRS-Installation fehl, die sich über SSH [...]
…begeben sich unruhige und wissensbegierige Oracle-DBAs, -Entwickler als auch -Anwender sich zu einem Wochenende der Extraklasse, dem Oracle Hackers-Weekend:
Dort bekommt man Gelegenheit, die neuen Oracle-Feature nicht auf einer Powerpoint-Präsentation, sondern wirklich live zu erleben und zu testen. Auch wir sind dabei. Der Bericht folgt….