sql >> Databasteknik >  >> RDS >> Oracle

Kul med meddelanden

Nyligen såg jag någon antyda att de hade en Oracle-tekniker på plats för några år sedan. Den här tekniken hade ändrat SQL*Plus så att dess feedback sa ungefär "om XX rader valda" istället för bara "XX valda rader". Han undrade hur tekniken gjorde det. Jag var bara tvungen att gräva i det här och ha lite kul med det. Jag kunde ändra feedbacktexten och så här ser den ut nu i SQL*Plus för mig:

SQL> ställ in feedback 1
SQL> välj * från alla_användare där radnummer <3;ANVÄNDARNAMN ANVÄNDAR-ID SKAPADE -------------------------- --- ---------- ---------- SYS 0 30-JAN-09 SYSTEM 5 30-JAN-09 ungefär 2 rader valda. Ge eller ta.

SQL> välj sysdate från dual;

SYSDATE
———
22-AUG-12

1 rad har valts. Bara en.

Så hur fick jag SQL*Plus att ändra feedbacktexten? Enkelt.

1. Gå till $ORACLE_HOME/sqlplus/mesg
2. Gör säkerhetskopior av sp1us.msg och sp1us.msb (observera att jag är i USA så min installation är "oss", du kan ha en annan landskod med två tecken).
3. Öppna sp1us.msg i en textredigerare. Jag fick filen att ha dessa poster:
00005,0, "1 row selected. Just one."
// *Cause:
// *Action:
00006,0, "approximately %ld rows selected. Give or take."
// *Cause:
// *Action:

4. Spara dina ändringar och avsluta redigeraren.
5. Kompilera msg-filen till den binära msb-filen.
lmsgen sp1us.msg sqlplus sp1 american

Det är allt som finns!

Jag bestämde mig för att ha lite roligare med det. Den här gången ville jag ändra meddelandet som levererades med ORA-00942-meddelandet. Så jag modifierade $ORACLE_HOME/rdbms/mesg/oraus.msg efter att ha gjort en säkerhetskopia av den och dess binära msb-fil. Sedan använde jag LMSGEN för att kompilera msg-filen:
lmsgen oraus.msg rdbms ora american
När jag nu frågar efter en icke-existerande tabell får jag följande:
SQL> select * from no_table;
select * from no_table
*
ERROR at line 1:
ORA-00942: this is not the table you are looking for

Naturligtvis är detta bara för skojs skull. Jag skulle aldrig göra det här i en produktionsmiljö. Och du vet aldrig när en patch kommer att ändra dessa filer så att underhålla anpassade meddelanden kan vara tidskrävande i det långa loppet. Men det är roligt att leka med detta och ge någon lite förvirring nästa gång han träffar ett ORA-fel.


  1. JDBC batch insert prestanda

  2. Hur man ställer in teckenuppsättningen och sorteringen av en databas i MySQL

  3. PostgreSQL-kontrollbegränsning för främmande nyckelvillkor

  4. Lägga till fler avancerade funktioner som att hantera kategorier och rösta på trådar och inlägg