Oracle
 sql >> база данни >  >> RDS >> Oracle

Забавление със съобщения

Наскоро видях някой да посочи, че има технология на Oracle на място преди няколко години. Тази технология промени SQL*Plus, така че обратната връзка казваше нещо като „избрани около XX реда“, вместо само „избрани XX реда“. Той се чудеше как техниката го направи. Просто трябваше да се заровя в това и да се забавлявам с него. Успях да променя текста за обратна връзка и ето как изглежда сега в SQL*Plus за мен:

SQL> задайте обратна връзка 1
SQL> изберете * от всички_потребители, където rownum <3;ПОЛЗ. ИМЕ ПОТРЕБИТЕЛСКИ_ИД СЪЗДАДЕНО --------------------------- --- ---------- --------- SYS 0 30-JAN-09 SYSTEM 5 30-JAN-09 избрани приблизително 2 реда. Дайте или вземете.

SQL> изберете системна дата от двойна;

SYSDATE
———
22-АВГ-12

Избран е 1 ред. Само едно.

И така, как накарах SQL*Plus да промени текста за обратна връзка? Просто.

1. Отидете на $ORACLE_HOME/sqlplus/mesg
2. Направете архивни файлове на sp1us.msg и sp1us.msb (забележете, аз съм в САЩ, така че моята инсталация е „нас“, може да имате различен двузначен код на държавата).
3. Отворете sp1us.msg в текстов редактор. Накарах файла да има следните записи:
00005,0, "1 row selected. Just one."
// *Cause:
// *Action:
00006,0, "approximately %ld rows selected. Give or take."
// *Cause:
// *Action:

4. Запазете промените си и излезте от редактора.
5. Компилирайте msg файла в двоичния msb файл.
lmsgen sp1us.msg sqlplus sp1 american

Това е всичко!

Реших да се забавлявам малко повече с него. Този път исках да променя съобщението, доставено със съобщението ORA-00942. Така че промених $ORACLE_HOME/rdbms/mesg/oraus.msg, след като направих резервно копие на него и неговия двоичен msb файл. След това използвах LMSGEN, за да компилирам msg файла:
lmsgen oraus.msg rdbms ora american
Сега, когато правя заявка за несъществуваща таблица, получавам следното:
SQL> select * from no_table;
select * from no_table
*
ERROR at line 1:
ORA-00942: this is not the table you are looking for

Разбира се, това е само за забавление. Никога не бих направил това в производствена среда. И никога не знаете кога корекцията ще промени тези файлове, така че поддържането на персонализирани съобщения може да отнеме време в дългосрочен план. Но е забавно да играеш с това и да объркаш някого следващия път, когато ударът ORA грешка.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пример за демонстриране на уязвимостта на SQL инжекцията и нейното предотвратяване в Oracle

  2. Показване на имена на всички ограничения за таблица в Oracle SQL

  3. Предварително изградена база данни на Oracle за обучение и тестване с помощта на Oracle Developer VM

  4. Как мога да експортирам съдържанието на таблица на Oracle във файл?

  5. 11gR2 Compression Advisor =Evil