sql >> Database >  >> RDS >> Oracle

Plezier met berichten

Onlangs zag ik iemand aangeven dat ze enkele jaren geleden een Oracle-techneut ter plaatse hadden. Deze techneut had SQL*Plus zo gewijzigd dat de feedback iets zei als "ongeveer XX rijen geselecteerd" in plaats van alleen "XX rijen geselecteerd". Hij vroeg zich af hoe de techneut dat deed. Ik moest me er gewoon in verdiepen en er wat plezier mee hebben. Ik heb de feedbacktekst kunnen wijzigen en zo ziet het er nu voor mij uit in SQL*Plus:

SQL> feedback instellen 1
SQL> select * from all_users waarbij rownum <3;USERNAME USER_ID CREATED --------------------------- --- ---------- --------- SYS 0 30-JAN-09 SYSTEEM 5 30-JAN-09 ongeveer 2 rijen geselecteerd. Geven of nemen.

SQL> selecteer sysdate van dual;

SYSDATE
———
22-AUG-12

1 rij geselecteerd. Slechts één.

Dus hoe heb ik SQL*Plus zover gekregen om de feedbacktekst te wijzigen? Eenvoudig.

1. Ga naar $ORACLE_HOME/sqlplus/mesg
2. Maak back-upbestanden van sp1us.msg en sp1us.msb (let op, ik ben in de VS, dus mijn installatie is "ons", je hebt mogelijk een andere landcode van twee tekens).
3. Open sp1us.msg in een teksteditor. Ik heb het bestand de volgende items gemaakt:
00005,0, "1 row selected. Just one."
// *Cause:
// *Action:
00006,0, "approximately %ld rows selected. Give or take."
// *Cause:
// *Action:

4. Sla uw wijzigingen op en verlaat de editor.
5. Compileer het msg-bestand in het binaire msb-bestand.
lmsgen sp1us.msg sqlplus sp1 american

Dat is alles!

Ik besloot er wat meer plezier mee te hebben. Deze keer wilde ik het bericht wijzigen dat werd geleverd met het ORA-00942-bericht. Dus ik heb $ORACLE_HOME/rdbms/mesg/oraus.msg gewijzigd nadat ik er een back-up van had gemaakt en het binaire msb-bestand. Daarna heb ik LMSGEN gebruikt om het msg-bestand te compileren:
lmsgen oraus.msg rdbms ora american
Als ik nu naar een niet-bestaande tabel vraag, krijg ik het volgende:
SQL> select * from no_table;
select * from no_table
*
ERROR at line 1:
ORA-00942: this is not the table you are looking for

Dit is natuurlijk gewoon voor de lol. Ik zou dit nooit doen in een productieomgeving. En je weet nooit wanneer een patch deze bestanden gaat wijzigen, dus het onderhouden van aangepaste berichten kan op de lange termijn tijdrovend zijn. Maar het is leuk om hiermee te spelen en iemand enige verwarring te bezorgen de volgende keer dat hij een ORA-fout raakt.


  1. Installeer Mtop (MySQL Database Server Monitoring) in RHEL/CentOS 6/5/4, Fedora 17-12

  2. Databasebeveiliging in Oracle

  3. Hoe u het valutasymbool van uw sessie in Oracle kunt wijzigen

  4. MySQL-dump downloaden vanaf de opdrachtregel