Showing posts with label SQL Developer. Show all posts
Showing posts with label SQL Developer. Show all posts

Jul 17, 2016

Προσοχή στις ρυθμίσεις NLS του SQL Developer


Στις ρυθμίσεις του SQL Developer υπάρχει ένα ειδικό tab για τις ρυθμίσεις του NLS που αφορά την αρχικοποίηση του session του χρήστη (πρακτικά το view NLS_SESSION_PARAMETERS)
Το default setting έχει μάλλον την τιμή "BYTE" ως length semantics πράγμα που σημαίνει πως εάν δώσουμε την εντολή 'CREATE TABLE' ή εάν κάνουμε 'Import data' (πχ από ένα excel spreadsheet) κατασκευάζοντας κατά συνέπεια έναν καινούργιο πίνακα, τότε θα διατηρηθούν τα byte (και όχι τα character) semantics ως προς το μέγεθος των δεδομένων που μπορεί να κρατήσουν οι varchar2 κολόνες.
Αν θέλουμε να αλλάξουμε αυτή την συμπεριφορά τότε είτε αλλάζουμε τις ρυθμίσεις NLS του SQL Developer είτε σε Length --> CHAR είτε επιλέγουμε το checkbox "Skip NLS settings" που θα χρησιμοποιήσει τις ρυθμίσεις της database που προσπαθούμε να συνδεθούμε.

Aug 17, 2011

Τρέχοντας scripts στον SQL Developer χωρίς προβλήματα με ampersand (&)

Αν δοκιμάσουμε να τρέξουμε ένα script ή μια SQL εντολή στον SQL Developer που όμως περιέχει τον χαρακτήρα ampersand ('&'), θα βρεθούμε αντιμέτωποι με το ακόλουθο μήνυμα :

Αυτό προκύπτει από το γεγονός πως η εντολή ερμηνεύτηκε πως περιέχει μια μεταβλητή προς αντικατάσταση, οπότε ο SQL Developer μας ζητά την τιμή της. Προκειμένου να αποφύγουμε αυτή τη συμπεριφορά, μπορούμε να χρησιμοποιήσουμε μια από τις set εντολές της SQL*Plus (http://ss64.com/ora/syntax-sqlplus-set.html), που επίσης είναι εφαρμόσιμες στον SQL Developer:

set scan off

ώστε ο χαρακτήρας να ερμηνευτεί σωστά ως έχει και να μην αντικατασταθεί.

Jan 7, 2011

Ανάκτηση αποθηκευμένων (saved) passwords από συνδέσεις σε SQL Developer και JDeveloper

Χρησιμοποιώ τον Oracle SQL Developer για να συνδέομαι σε διάφορες βάσεις πελατών μου. Χθες βρέθηκα στην εξής κατάσταση: χρειάστηκε να τρέξω ένα SQL script σε μια βάση από command-line, για την οποία δεν είχα σημειώσει το password του SYSTEM. Για καλή μου τύχη, είχα βέβαια δημιουργήσει παλαιότερα μια σύνδεση στον SQL Developer, αλλά ως γνωστόν το password δεν εμφανίζεται σε αναγνώσιμη μορφή.

Οι συνδέσεις αποθηκεύονται σε ένα ειδικό αρχείο ονόματι connections.xml και ορίζονται στο HOME του χρήστη. Στην έκδοση 2.1 του SQL Developer βρίσκονται στην διαδρομή $ΗΟΜΕ/.sqldeveloper/system2.1.0.63.73/o.jdeveloper.db.connection.11.1.1.2.36.55.30/connections.xml Ανοίγοντας αυτό το αρχείο, βρίσκουμε σε κρυπτογραφημένη μορφή (encrypted) τα passwords των συνδέσεων μας.

Προκειμένου να αποκωδικοποιήσουμε (decrypt) αυτό το password, υπάρχει μια θαυμάσια απάντηση στο stackoverflow.com (http://stackoverflow.com/questions/1032721/does-anybody-know-what-encrypting-technique-is-jdeveloper-sql-developer-using-to) που συνοψίζεται στην κατασκευή ενός προγράμματος, το οποίο περιμένει ως είσοδο ένα κρυπτογραφημένο password, και τυπώνει την αποκρυπτογραφημένη μορφή του. Ακολουθεί μια τροποποίηση του, ώστε να γίνει πιο γενικό.

import oracle.jdevimpl.db.adapter.DatabaseProviderHelper;
import java.io.*;

class Decode {
String pass = "";

public Decode() {
System.out.print("Please type encrypted password:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         try {
String encyptedPass = br.readLine();
pass = DatabaseProviderHelper.comingIn(encryptedPass);
System.out.println(pass);
} catch (IOException ioe) {
System.out.println("IO error trying to read encrypted password!");
System.exit(1);
}
}

public static void main(String[] args){
new Decode();
}
}


To πρόγραμμα που μόλις δημιουργήσαμε θα το κάνουμε compile:
javac -cp $SQL_DEVELOPER_HOME/modules/oracle.adf.model_11.1.1/db-ca.jar:$SQL_DEVELOPER_HOME/modules/oracle.ldap_11.1.1/ojmisc.jar Decode.java

και τελικά θα το τρέξουμε:
java -cp $SQL_DEVELOPER_HOME/modules/oracle.adf.model_11.1.1/db-ca.jar:$SQL_DEVELOPER_HOME/modules/oracle.ldap_11.1.1/ojmisc.jar:. Decode

Επειδή και ο JDeveloper χρησιμοποιεί τον ίδιο αλγόριθμο για να αποθηκεύει τα passwords των συνδέσεων, μπορούμε πάλι να χρησιμοποιήσουμε το ίδιο πρόγραμμα για να βρούμε την τιμή ενός password.

Aug 27, 2010

Υποστήριξη τύπου BLOB στον SQL Developer 2.1

O SQL Developer υποστηρίζει τη δυνατότητα ανεβάσματος (upload) ενός αρχείου όταν έχουμε να κάνουμε με καταχώρηση σε κολόνες BLOB. Απλά επιλέγουμε το πεδίο και μετά κάνουμε click στο μολύβι ώστε να εμφανιστεί το παράθυρο για την επιλογή του αρχείου.

Αντίστοιχα, όταν ήδη υπάρχουν δεδομένα σε κολόνα BLOB, τότε μπορούμε είτε να τα αποθηκεύσουμε σε αρχείο, είτε αν πρόκειται για εικόνα, να την δούμε να εμφανίζεται απευθείας.

Jan 17, 2010

Εμφανίζοντας με ειδικό χρώμα τις null τιμές στον SQL Developer

Στις επόμενες ημέρες πρόκειται να αναφερθούμε με λεπτομέρειες στην τελευταία έκδοση του SQL Developer (2.1) που κυκλοφόρησε μόλις τον Δεκέμβριο του 2009. Προς το παρόν, μια χρήσιμη δυνατότητα που προσφέρεται από τις επαυξημένες επιλογές του προϊόντος, είναι αυτή της εμφάνισης με ειδικό χρώμα των null τιμών σε ένα select statement ή στον ορισμό ενός πίνακα. Αυτό μας βοηθά πολύ οπτικά προκειμένου να εντοπίσουμε πιθανά προβλήματα.

Ο ορισμός αυτής της ιδιότητας ορίζεται στο μενού Tools->Preferences->Database->Advanced, επιλογή Display null using background color.

Στην περίπτωσή μου, όρισα το γκρί χρώμα, επομένως το αποτέλεσμα σε ένα query είναι κάπως έτσι:

May 19, 2008

Καλώς όρισες SQL Developer 1.5 !

Πέρασε πολύς καιρός από το τελευταίο άρθρο μου για τον SQL Developer (http://www.oracle.com/technology/products/database/sql_developer/index.html) και νομίζω πως η τελευταία του έκδοση (διαθέσιμη από τον Απρίλιο) αξίζει ειδικής αναφοράς καθώς ενσωματώνει μερικές νέες δυνατότητες και βελτιώσεις (ειδικά σχετικά με το code completion και τη διαχείριση άλλων βάσεων όπως MySQL και SQL Server)

Μερικά χαρακτηριστικά που μου κίνησαν το ενδιαφέρον στις καθημερινές μου εργασίες περιλαμβάνουν:
  • τη δυνατότητα διασύνδεσης με versioning συστήματα όπως CVS και Subversion για την ανάκτηση πηγαίου κώδικα. Πολύ συχνά τα SQL scripts αποτελώντας τμήματα ενός project, αποθηκεύονται σε ένα versioning σύστημα και από εκεί μπορούμε πια να τα εκτελούμε
  • την προχωρημένη αναζήτηση (extended search) σε αντικείμενα της βάσης, που μας επιτρέπει γρήγορα να βρίσκουμε την πληροφορία που χρειαζόμαστε

  • Τη δυνατότητα παραγωγής τεκμηρίωσης (Generate db doc) πάνω σε ένα σχήμα. Απλά επιλέγουμε την αντίστοιχη δυνατότητα και παράγεται μια τεκμηρίωση σε μορφή HTML για τα αντικείμενα της βάσης

  • Οργάνωση των συνδέσεων σε φακέλους. Ένα αφάνταστα χρήσιμο γνώρισμα ιδίως για αυτούς που δουλεύουν σε πολλαπλά projects, σε πολλαπλές εγκαταστάσεις.

Jul 11, 2007

Εισαγωγή (import) και εξαγωγή (export) δεδομένων Excel στον SQL Developer

Μια από τις πιο σημαντικές προσθήκες στην έκδοση 1.2 του SQL Developer (http://www.oracle.com/technology/products/database/sql_developer/index.html), είναι οι προηγμένες δυνατότητες ανταλλαγής δεδομένων με το Microsoft Excel. Συνοπτικά, παρέχεται αφενός η δυνατότητα απευθείας εξαγωγής των αποτελεσμάτων ενός query σε μορφή .xls (επομένως ξεχνούμε τα ενδιάμεσα βήματα εξαγωγής σε αρχείο.csv και της μετέπειτα μορφοποίησης του στο Excel) και αφετέρου η εισαγωγή δεδομένων που προέρχονται από ένα αρχείο excel σε έναν πίνακα της βάσης, απλοποιείται, απαιτώντας λιγοστά clicks από τον χρήστη.

Ως προς την εξαγωγή δεδομένων, η δυνατότητα για το excel βρίσκεται στο μενού μαζί με τις υπόλοιπες επιλογές εξαγωγής (όπως INSERT statements, text, csv, xml, html, κ.α.) έπειτα την εκτέλεση ενός query:

Ακολουθώντας τον wizard, απομένει να ορίσουμε το όνομα του αρχείου εξόδου, και κάποια πιθανά φίλτρα ως προς τις στήλες ή τις γραμμές που θα εξαχθούν.

και κάπως έτσι θα κατασκευαστεί το excel αρχείο (όπως τουλάχιστον το εμφάνισε το OpenOffice)

Αυτό που έχει εξίσου ενδιαφέρον, είναι η ευκολία εισαγωγής δεδομένων στη βάση μας, που προέρχονται από ένα Microsoft Excel αρχείο. Μέχρι πρότινος, κάτι τέτοιο μπορούσε να συμβεί είτε μέσω του TOAD (που απαιτούσε license) είτε διαμέσου κοπιώδους προσπάθειας με τον SQL Loader. Τώρα, επιλέγουμε τον πίνακα όπου θα αποθηκευτούν τα δεδομένα και κάνουμε δεξί click στο μενού Import Data-->Excel.

Αφότου επιλέξουμε το αρχείο εισόδου, γίνεται μια προεπισκόπιση των δεδομένων που θα εισαχθούν. Μεταφέρουμε όλες τις επικεφαλίδες του αρχείου στα αριστερά ώστε να κάνουμε την αντιστοίχισή τους με πεδία του πίνακα.

Μεταφερόμαστε λοιπόν στο tab Data Types και ορίζουμε τον μετασχηματισμό, το πιθανό scale και format (ειδικά για ημερομηνίες) με δυνατότητα μάλιστα προεπισκόπισης της διαδικασίας σε DML.


Πατώντας το κουμπί insert, τα δεδομένα μας εισάγονται στον πίνακα, ενώ για οποιαδήποτε προβλήματα θα ειδοποιηθούμε στο κατάλληλο log παράθυρο.

Jun 9, 2007

SQL Developer: O translation scratch editor για την μετάπτωση (migration) σε άλλες βάσεις δεδομένων

Ο SQL Developer έχει προοδεύσει εντυπωσιακά σε σχέση με ένα παλαιότερο άρθρο όπου είχα καταγράψει τις πρώτες μου εντυπώσεις. Αποτελεί πια ένα ολοκληρωμένο, ισχυρό εργαλείο προγραμματισμού σε βάσεις δεδομένων (όχι μόνο Oracle αλλά και MySQL και SQL Server), παραγωγής reports (ακόμα και σε μορφή γραφημάτων) και απλής διαχείρισης (έτοιμα βασικά reports DBA, import/export δεδομένων, σύγκρισης μεταξύ σχημάτων, κ.α. ) Εξαιτίας της επιτυχίας του, ενσωμάτωσε ένα ξεχωριστό έως πρότινος προϊόν, το Oracle Migration Workbench, που επιχειρεί με αυτοματοποιημένο τρόπο να μεταφέρει (migrate) τρίτες ως προς την Oracle βάσεις. Η εργασία της μεταφοράς αποτελείται από διάφορα βήματα και περιγράφεται αναλυτικά στο σύστημα βοήθειας του SQL Developer. Αυτό που όμως είναι ενδιαφέρον, είναι η δυνατότητα άμεσης μετάφρασης ενός τμήματος κώδικα (π.χ. μιας stored procedure του SQL Server) σε PL/SQL με τη βοήθεια του Translation Scratch Editor.

Στο παράδειγμά μας, θα χρησιμοποιήσω μια σύνδεση στον SQL Server για να αντλήσω τις stored procedures, αν και κάτι τέτοιο δεν είναι απαραίτητο, αφού στο περιβάλλον του Translation Scratch Editor, μπορούμε να πληκτρολογήσουμε άμεσα T-SQL για να μεταφραστεί σε PL/SQL! Για να συνδεθούμε λοιπόν σε μια βάση του SQL Server, θα χρειαστούμε τους jTDS JDBC drivers που διατίθενται στο: http://jtds.sourceforge.net/ Τοποθετούμε τη βιβλιοθήκη jar στον κατάλογο $SQL_DEVELOPER_HOME/jdbc/lib και έπειτα την ορίζουμε στο περιβάλλον από την επιλογή Tools-->Preferences-->Database-->Third Party JDBC Drivers.

Στο επόμενο βήμα, ορίζουμε τις πληροφορίες σύνδεσης στη βάση μας:

και τώρα πια έχουμε πρόσβαση σε αυτήν. Φυσικά και μπορούμε να δούμε τη δομή της (πίνακες, procedures, triggers) όπως και να κάνουμε ανάπτυξη κώδικα.

Διαλέγοντας τώρα μια stored procedure, μπορούμε να αντιγράψουμε τον κώδικα της στον Scratch Editor (μενού Migration-->Translation Scratch Editor) και αφότου επιλέξουμε τη γλώσσα εισόδου (π.χ. Τ-SQL για SQL Server, Access, MySQL) να πατήσουμε το κουμπί της μετάφρασης σε PL/SQL. Σίγουρα θα υπάρχουν πολύπλοκα statements που δεν θα μεταφραστούν όπως θα θέλαμε, αλλά ο scratch editor μας δίνει τη δυνατότητα να εξερευνήσουμε την παραγωγή του κώδικα σε PL/SQL, σε πραγματικό χρόνο, μεταβάλλοντας τη stored procedure εισόδου, χωρίς να ξεκινήσουμε μια μαζική διαδικασία migration. Μάλιστα, η μεταφρασμένη procedure μπορεί άμεσα να γίνει compile σε ένα Oracle σχήμα της επιλογής μας.

Mar 27, 2006

Πρώτες εντυπώσεις από τον SQL Developer

Την προηγούμενη εβδομάδα παρουσιάστηκε στο ΟΤΝ η production release του SQL Developer (SQLDev από εδώ κ στο εξής) Πρόκειται για το άρτι αφιχθέν πρόγραμμα που σκοπό έχει να διευκολύνει τον SQL προγραμματισμό στη Βάση Δεδομένων της Oracle, τοποθετώντας ανταγωνιστικά τον ευάτο του σε σχέση με άλλα δημοφιλή προγράμματα τρίτων κατασκευαστών, όπως TOAD (της Quest) PL/SQL Developer (της Allround Automations)
Ίσως κάποιος να θυμάται την εκκίνηση αυτής της προσπάθειας κάπου στον Σεπτέμβριο ή Οκτώβριο με το όνομα Raptor. H αλήθεια είναι πως εκείνη η έκδοση ήταν αρκετά πτωχή σε λειτουργίες, αποτελώντας στην ουσία εξαγωγή των Database δυνατοτήτων του JDeveloper, σε μια αυτόνομη εφαρμογή. Τα καλά νέα είναι πως φαίνεται πως έχει κυλίσει πολύ νερό στο αυλάκι και πιά o SQLDev έχει εμπλουτιστεί με πολλές ενδιαφέρουσες λειτουργίες, πολλές περισσότερες από το περιβάλλον του JDeveloper, γεγονός που πια τον διακρίνει.

Μια πρώτη γνωριμία
Το περιβάλλον εργασίας του SQL Developer είναι βασισμένο στο User Interface του JDeveloper. Αυτό σημαίνει πως είναι διαιρεμένο σε κάποιες βασικές περιοχές:
Στα αριστερά υπάρχει μια μπάρα πλοήγησης στα στοιχεία της βάσης δεδομένωνΤο κεντρικό παράθυρο μας επιτρέπει να βλέπουμε τα περιεχόμενα των στοιχείων της βάσης δεδομένων που έχουμε διαλέξει από την μπάρα πλοήγησηςΣτο κάτω μέρος υπάρχει το πλαίσιο εμφάνισης μηνυμάτωνΤέλος στα αριστερά είναι διαθέσιμη μια παλέτα εντολών για την επεξεργασία των στοιχείων του κεντρικού παραθύρου.


Η μόνη απαίτηση που έχει η εγκατάσταση είναι η ύπαρξη ενός JRE 1.5, καθότι ο SQLDev είναι μια Java εφαρμογή. Προκειμένου να ξεκινήσουμε να εργαζόμαστε, μπορούμε να δημιουργήσουμε μια καινούργια σύνδεση με μια βάση δεδομένων, χρησιμοποιώντας είτε ένα TNS name, είτε καταθέτωντας απευθείας τα στοιχεία του JDBC.

Μέσα από την κονσόλα μπορούμε να αντλήσουμε πληροφορία σχετικά με τα στοιχεία που περιλαμβάνει η σύνδεση που έχουμε δημιουργήσει όπως tables, views, indexes, packages, synonyms κοκ. Παράλληλα κάνοντας δεξί click πάνω στη σύνδεσή μας και επιλέγοντας Open SQL Worksheet μπορούμε να καταθέσουμε τις SQL εντολές μας. Μερικά από τα πιο ενδιαφέροντα στοιχεία σε αυτό το σημείο είναι:

  • Υπάρχει η δυνατότητα auto-completion για τα αντικείμενα της Βάσης
  • Η δυνατότητα να έχουμε ανοικτά πολλαπλά παράθυρα (editors) για τις SQL εντολές μας. Αντίθετα, μέχρι και την έκδοση JDeveloper 10.1.3 μπορούμε να έχουμε μόνο ένα ανοικτό SQL Worksheet.

  • Στο αριστερό πλαίσιο έχουμε στη διάθεσή μας μια παλέτα με διαθέσιμες SQL functions που μπορούμε να ενσωματώσουμε στα προγράμματα μας

  • Τα αποτελέσματα ενός query είναι δυνατόν να εξαχθούν σε διάφορα formats (CSV, XML, INSERTS, LOADER, TEXT)

  • Είναι δυνατόν να κάνουμε ταυτόχρονα το browsing πολλαπλών χρηστών

  • Φυσικά και μπορούμε να κάνουμε compile και debug οποιοδήποτε κώδικα

Συμπεράσματα
O SQL Developer μου άφησε πολύ καλές εντυπώσεις, επεκτείνοντας τις δυνατότητες του JDeveloper. Σίγουρα προς το παρόν δεν είναι αρκετός για να αντικαταστήσει state-of-the-art εργαλεία όπως για παράδειγμα ο TOAD. Ωστόσο, είναι δηλωτικός της σημασίας που δίνει η Oracle για την κάλυψη του κενού στα εργαλεία ανάπτυξης για SQL. Αποτελεί πια για εμένα κομμάτι του περιβάλλοντος ανάπτυξης που έχω δημιουργήσει στο Linux.