[Oracle] Cli-IDE для oracle-субд. Ну. Почти IDE
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Добрый день. Первый вопрос: зачем, есть же Toad/SQL-developer/PLSQL-developer и т.п. графические ide-среды.Ну. Да. Есть. Однако не всем именно они нужны, как средство работы с объектами oracle-субд. Т.е. я тут, в этой статье - не именно для oracle-разработчиков буду рассказывать что то. Скорее для dba, т.е. людей у которых работа с объектами субд - значительно более специфичная, им не нужен такой ide-комбайн как Toad/SQL-developer/PLSQL-developer;Второй момент: сейчас: удалёнка, везде и всюду. В этой связи доступ на работу - организовывается удалённый.Либо: через что то типа VDI/RDP. Либо: выдаётся рабочий ноутбук и от на нём, с него - работай.В первом случае - ну, часто подразумевается графический интерфейс удалённого рабочего стола и: виндовый и с ограничением по ресурсам.Во втором случае: ну, организации часто пытаются и тут сэкономить - выдадут что нибудь с 8Гб оперативы и - как хочешь, так на этом и работай. Т.е.: файрфокс/хром, с N>>10 кол-вом вкладок, какой нибудь Toad/SQL-developer/PLSQL-developer, скайп/зум, ещё что то.В обоих случаях: возникает вопрос - а как то бы тут сэкономить, на ресурсах, например - на IDE для oracle-субд.Ну и, как мне кажется, находится, под этот запрос, интересный проект: VoraXПроект, на настоящее время, абандонед, увы.Вот хочу, по ряду причин, обратить внимание сообщества на этот проект. С одной стороны - чтобы больше народу посмотрело, с разных сторон и что то, какие то за/против увидели/оценили.С другой стороны - уже появились, у меня, к этому проекту хотелки, но, не понятно как к ним подступится - нет ни времени, ни ресурса этим заниматься. Может быть тоже - кто то подскажет. А то и: свой форк запилит: штука то - весьма интересная.В русскояз-м сегменте интернета практически нет упоминаний об этом проекте, есть упоминание воракса, в хабр-комменте, одного из контрбьютеров воракс-проекта.В функционально-пользовательском смысле про возможности/свойства воракс-а отлично рассказывает автор проекта, здесь.В инженерно-техническом смысле это - vim-плагин. Часть кода плагина: собственно дополнительные vim-функции, обеспечивающие работу в пользовательском инт-се. Часть - это руби-скрипты, которым выполняется, например, запуск-взаимодействие с sqlplus, работа с репозиторем подключений. Т.е. воракс - это честная скл-сессия в субд, со всеми отсюда вытекающими последствиями: возможность выполнять транзакции из нескольких команд, например. Во всяких dbext, vim-dadbod, Emacs в скл-моде: такого не получится - они, при выполнении каждой конкретной скл-команды: запускают скл-плюс, подключаются в бд, выполняют команду, получают результат, закрывают соединение в бд. Ещё часть, релевантного к воракс-у, руби-кода распространяется в виде gem-пакета с именем "vorax", который надо доставлять в руби отдельно. В этом гем-е проверяются и, если надо, предварительно ставятся зависимости, в частности racc gem. Ему, этому gem-пакету, нужен ruby-dev ОС-пакет, его надо ставить в систему.Соответственно: требуется, установленными на машине: ruby, vim с поддержкой ruby, oracle-клиент (можно инстант-клиент).На LinuxMint - всё это ставится без проблем, я делал так:
apt install gawk bison libffi-dev libgdbm-dev libncurses-dev libsqlite3-dev libyaml-dev zlib1g-dev -y
apt install sqlite3 libgmp-dev libreadline-dev checkinstall libxml2-dev libxslt-dev -y
apt install build-essential ruby-dev pkg-config -y
ruby -v
gem install vorax
gem list | sort
Потом сборка vim-а, с поддрежкой ruby:
mkdir ~/Vim4VoraX; cd ~/Vim4VoraX
git clone https://github.com/vim/vim.git
cd ./vim/src/
#make distclean
./configure --enable-rubyinterp --with-features=huge
make
./vim --version | grep ruby; pwd
sudo apt remove vim
sudo checkinstall --pkgname vim4vorax4 --pkgversion 8.2.0 --install
#dpkg -r vim4vorax4
#in vim:
#:ruby puts RUBY_VERSION
Затем патоген-ом доставил собственно vorax-плагин в vim, использовал более современный форк, уважаемого kish4ever:
cd ~/.vim/bundle && git clone https://github.com/kakash1hatake/vorax4.git
При установке кода вим-плагина руками, так как это описывает автор, плагин полностью работоспособным не становился. Не знаю может тут что то с кривизной моих рук. Патоген-менеджер vim-плагинов - мне помог.Ну. Пара-тройка скринов, мы все - любим скрины:
Дока есть вот тут и в файле /vorax4/doc/vorax.txt - здесь и далее: путь относительный, от директории куда ставился vim-плагин.Из некоторых вкусностей, которые успел заметить за те два дня что разглядываю этот плагин:
- Профили подключения: шифруются, хранятся в виде xml-файла profiles.xml, в, по умолчанию, домашнем каталоге. Профиль-менеджер, технически, это скрипт: /vorax4/vorax/ruby/lib/vorax/profiles_manager.rb
- Есть некий функционал, задающий режим отображения выхлопа селект-команд, в окне (точнее: буфере, если в vim-терминах) вывода. Бегло: поддерживается аппенд-мода вывода, поддерживается лимитирование строк в выборке (дописывается WHERE ROWNUM <= :limit), подерживается задание режима в котором не усекаются имена полей, если они длинее ширины столбца, есть Топ-режим отображения. Есть ещё несколько функций. Конечно можно выполнять set-команды и прочие команды склплюс-а и задавая какое то своё форматирование. Однако, в остальном - это всё тот же склплюс, со своими плюсами и минусами, касательно вывода. Об этом - несколько ещё поговорю, ниже. В правом нижнем углу окна вывода - подсказывается текущая мода отображения.
- Вот про выполнение команд и всякое форматирование: есть режим <Leader>E: т.н.: sanbdox-мода. В ней можно выполнить какой то скл-скрипт, который может выполнять свои склплюс-команды настройки скл-сессии. При этом, настройки скл-сессии самого воракс-а, из которого был, в такой моде выполнения, вызван некий скл-скрипт - будут запомнены, а после выполнения скрипта - восстановлены. Also: поддерживается обработка sigint сигналов 2,9 при выполнении команд - они посылаются склплюс-у. Also: поддерживается выполнение конкретной команды, на которой стоит курcор (или то что выделено, в visual-моде ), в верхнем vim-окне.
- plsql-подпрограммы, их определение, можно получить из объектного вьювера, в отдельный буфер (в терминах vim-а), просто встав на элемент в тривью и жмакнув "Enter". Что тут интересно - конкретно вот этот буфер, его содержимое, при попытке изменить-скомпилировать ддл-код процедурного объекта, воракс будет отправлять в субд as is, цитирую:
The default key mapping for compiling is c. "C" stands, obviously, for
"C"ompile. For convenience, you may also use @. Two things happen when
a PLSQL object is compiled:
* the buffer content is sent as it is to the server.
* as soon as the buffer content is executed, Vorax will check the ALL_ERRORS
view to see if any relevant errors exist. If such errors are found, they are
loaded into a Vim quickfix window, along with the error line, error column
and the message itself.
Note: Pay attention that during the compilation of an PLSQL object, the
substitution variables feature is disabled.
Проблемки (ну. с моей т.з.):Спулинг выборок из воракс-а в файл. Формально - работает. Однако выясняется что воракс, обменивается с склплюс-ом (читает/пишет на/с стдоут/стдин) данными особенным образом - он обрамляет пользовательский текст в свои текстовые брекеты. Взаимодействие с склплюс - делается скриптом: /vorax4/vorax/ruby/lib/vorax/sqlplus.rb, там это выглядит, например, таким образом (пара скринов):
В итоге, в спул-файл, выписывается, кроме самой выборки - ещё куча служебных строк, от обмена данными между воракс-ом и склплюс-ом. Всё это - обходится конечно, но надо сделать дополнительные усилия, для обхода.Второй момент. Разглядывая склплюсовое форматирование выборок, в окне вывода, в воракс-е, вспомнил про SQLcl: какой он весь из себя модный-молодёжный, как там всё здорово с форматированием выборок. Ну и: тут же пришла в голову мысль о костыле рационализаторско-конструкторском усовершенствовании - а пуркуа бы и не па вписать в /vorax4/vorax/ruby/lib/vorax/sqlplus.rb вместо вызова бинаря sqlplus, вызов sql;Да, виновен/мне стыдно: на тот момент ещё не знал что SQLcl - вызывается шельником <SQLcl-хоум>/sqlcl/bin/sql, который запускает ява-процесс, к которым и взаимодействует пользователь.Поэтому, конечно, тут ничего не получилось: воракс - честно запускал шельник /sqlcl/bin/sql и потом выдавал ошибку - ой что то оно не отвечает.Плюс, не известно - как бы ещё SQLcl реагировал, на эти текстовые брекеты воракс-а, типа #set blockterm, которыми он окружает текст пользовательских команд, получаемых от пользователя.Пробовалось вписать, в вызов явы, в функции run в шелнике <SQLcl-хоум>/sqlcl/bin/sql ехес-команду баш-а, т.е., вот так:
function run {
if [ "m$SQLCL_DEBUG" != "m" ]; then
echo "JAVA=$JAVA"
echo "JAVA_OPTS=${APP_VM_OPTS[@]}"
echo "DEBUG=$DEBUG"
echo "CPLIST=$CPLIST"
echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
echo "exec $JAVA $CUSTOM_JDBC $CYGWIN "${APP_VM_OPTS[@]}" -client $SQLCL_DEBUG -cp "$CPLIST" oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli "
fi
exec $JAVA $CUSTOM_JDBC $CYGWIN "${APP_VM_OPTS[@]}" -client $SQLCL_DEBUG -cp "$CPLIST" oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli "$@"
}
Не выгорело, так же - сбоит.Отдельно оговорюсь: в руби/яве - не понимаю ничего.Собственно, зачем обращаю внимание собщества на этот проектик.Интересны отзывы о этой штуке, может быть кто пользовался/пользуется, может рассказать плюсы/минусы которые с опытом работы становятся видны.Ещё любопытно, как бы скрестить воракс-а с SQLcl, может быть есть, какие то, у кого то идеи об этом?Так же, вопрос, какие ещё есть/знаете варианты работы с oracle-субд через cli-приложения, сопоставимые, или более продвинутые чем воракс, т.е.: коннекшен-менеджмент, обжект-браузер, и вот это вот всё.Спасибо за внимание, ваше время.
===========
Источник:
habr.com
===========
Похожие новости:
- [Программирование, Java] Java 16 — новые синтаксические возможности языка
- [Ruby, Ruby on Rails] Как я принёс Ruby в ДомКлик
- [Разработка веб-сайтов, Ruby on Rails, Agile] Установка discourse в Ubuntu 16.04
- [Законодательство в IT, IT-компании] Microsoft, Salesforce и Oracle разрабатывают цифровые паспорта вакцинации от коронавируса
- [Ruby] Скрипт на ruby, который с помощью яндекс-сервиса Yandex SpeechKit распознает текст в видео-файле (длинные аудио)
- [Настройка Linux, PHP, Oracle] Как настроить мониторинг любых бизнес-процессов, в БД Oracle + построение графиков, используя бесплатную версию Grafana
- [Ruby, Программирование, Алгоритмы, Математика] Практическое применение алгоритма для представления Цекендорфа
- [Разработка под iOS, Разработка мобильных приложений, Разработка под Android, Тестирование мобильных приложений] 3 видео для мобильного разработчика
- Выпуск языка программирования Ruby 3.0
- [Ruby, Oracle, Python, JavaScript, Java] Опыт сопряжения Java, JavaScript, Ruby и Python в одном проекте посредством GraalVM
Теги для поиска: #_oracle, #_vorax, #_sqlplus, #_ruby, #_oracle
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:11
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Добрый день. Первый вопрос: зачем, есть же Toad/SQL-developer/PLSQL-developer и т.п. графические ide-среды.Ну. Да. Есть. Однако не всем именно они нужны, как средство работы с объектами oracle-субд. Т.е. я тут, в этой статье - не именно для oracle-разработчиков буду рассказывать что то. Скорее для dba, т.е. людей у которых работа с объектами субд - значительно более специфичная, им не нужен такой ide-комбайн как Toad/SQL-developer/PLSQL-developer;Второй момент: сейчас: удалёнка, везде и всюду. В этой связи доступ на работу - организовывается удалённый.Либо: через что то типа VDI/RDP. Либо: выдаётся рабочий ноутбук и от на нём, с него - работай.В первом случае - ну, часто подразумевается графический интерфейс удалённого рабочего стола и: виндовый и с ограничением по ресурсам.Во втором случае: ну, организации часто пытаются и тут сэкономить - выдадут что нибудь с 8Гб оперативы и - как хочешь, так на этом и работай. Т.е.: файрфокс/хром, с N>>10 кол-вом вкладок, какой нибудь Toad/SQL-developer/PLSQL-developer, скайп/зум, ещё что то.В обоих случаях: возникает вопрос - а как то бы тут сэкономить, на ресурсах, например - на IDE для oracle-субд.Ну и, как мне кажется, находится, под этот запрос, интересный проект: VoraXПроект, на настоящее время, абандонед, увы.Вот хочу, по ряду причин, обратить внимание сообщества на этот проект. С одной стороны - чтобы больше народу посмотрело, с разных сторон и что то, какие то за/против увидели/оценили.С другой стороны - уже появились, у меня, к этому проекту хотелки, но, не понятно как к ним подступится - нет ни времени, ни ресурса этим заниматься. Может быть тоже - кто то подскажет. А то и: свой форк запилит: штука то - весьма интересная.В русскояз-м сегменте интернета практически нет упоминаний об этом проекте, есть упоминание воракса, в хабр-комменте, одного из контрбьютеров воракс-проекта.В функционально-пользовательском смысле про возможности/свойства воракс-а отлично рассказывает автор проекта, здесь.В инженерно-техническом смысле это - vim-плагин. Часть кода плагина: собственно дополнительные vim-функции, обеспечивающие работу в пользовательском инт-се. Часть - это руби-скрипты, которым выполняется, например, запуск-взаимодействие с sqlplus, работа с репозиторем подключений. Т.е. воракс - это честная скл-сессия в субд, со всеми отсюда вытекающими последствиями: возможность выполнять транзакции из нескольких команд, например. Во всяких dbext, vim-dadbod, Emacs в скл-моде: такого не получится - они, при выполнении каждой конкретной скл-команды: запускают скл-плюс, подключаются в бд, выполняют команду, получают результат, закрывают соединение в бд. Ещё часть, релевантного к воракс-у, руби-кода распространяется в виде gem-пакета с именем "vorax", который надо доставлять в руби отдельно. В этом гем-е проверяются и, если надо, предварительно ставятся зависимости, в частности racc gem. Ему, этому gem-пакету, нужен ruby-dev ОС-пакет, его надо ставить в систему.Соответственно: требуется, установленными на машине: ruby, vim с поддержкой ruby, oracle-клиент (можно инстант-клиент).На LinuxMint - всё это ставится без проблем, я делал так: apt install gawk bison libffi-dev libgdbm-dev libncurses-dev libsqlite3-dev libyaml-dev zlib1g-dev -y
apt install sqlite3 libgmp-dev libreadline-dev checkinstall libxml2-dev libxslt-dev -y apt install build-essential ruby-dev pkg-config -y ruby -v gem install vorax gem list | sort mkdir ~/Vim4VoraX; cd ~/Vim4VoraX
git clone https://github.com/vim/vim.git cd ./vim/src/ #make distclean ./configure --enable-rubyinterp --with-features=huge make ./vim --version | grep ruby; pwd sudo apt remove vim sudo checkinstall --pkgname vim4vorax4 --pkgversion 8.2.0 --install #dpkg -r vim4vorax4 #in vim: #:ruby puts RUBY_VERSION cd ~/.vim/bundle && git clone https://github.com/kakash1hatake/vorax4.git
Дока есть вот тут и в файле /vorax4/doc/vorax.txt - здесь и далее: путь относительный, от директории куда ставился vim-плагин.Из некоторых вкусностей, которые успел заметить за те два дня что разглядываю этот плагин:
The default key mapping for compiling is c. "C" stands, obviously, for
"C"ompile. For convenience, you may also use @. Two things happen when a PLSQL object is compiled: * the buffer content is sent as it is to the server. * as soon as the buffer content is executed, Vorax will check the ALL_ERRORS view to see if any relevant errors exist. If such errors are found, they are loaded into a Vim quickfix window, along with the error line, error column and the message itself. Note: Pay attention that during the compilation of an PLSQL object, the substitution variables feature is disabled. В итоге, в спул-файл, выписывается, кроме самой выборки - ещё куча служебных строк, от обмена данными между воракс-ом и склплюс-ом. Всё это - обходится конечно, но надо сделать дополнительные усилия, для обхода.Второй момент. Разглядывая склплюсовое форматирование выборок, в окне вывода, в воракс-е, вспомнил про SQLcl: какой он весь из себя модный-молодёжный, как там всё здорово с форматированием выборок. Ну и: тут же пришла в голову мысль о костыле рационализаторско-конструкторском усовершенствовании - а пуркуа бы и не па вписать в /vorax4/vorax/ruby/lib/vorax/sqlplus.rb вместо вызова бинаря sqlplus, вызов sql;Да, виновен/мне стыдно: на тот момент ещё не знал что SQLcl - вызывается шельником <SQLcl-хоум>/sqlcl/bin/sql, который запускает ява-процесс, к которым и взаимодействует пользователь.Поэтому, конечно, тут ничего не получилось: воракс - честно запускал шельник /sqlcl/bin/sql и потом выдавал ошибку - ой что то оно не отвечает.Плюс, не известно - как бы ещё SQLcl реагировал, на эти текстовые брекеты воракс-а, типа #set blockterm, которыми он окружает текст пользовательских команд, получаемых от пользователя.Пробовалось вписать, в вызов явы, в функции run в шелнике <SQLcl-хоум>/sqlcl/bin/sql ехес-команду баш-а, т.е., вот так: function run {
if [ "m$SQLCL_DEBUG" != "m" ]; then echo "JAVA=$JAVA" echo "JAVA_OPTS=${APP_VM_OPTS[@]}" echo "DEBUG=$DEBUG" echo "CPLIST=$CPLIST" echo "LD_LIBRARY_PATH=$LD_LIBRARY_PATH" echo "exec $JAVA $CUSTOM_JDBC $CYGWIN "${APP_VM_OPTS[@]}" -client $SQLCL_DEBUG -cp "$CPLIST" oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli " fi exec $JAVA $CUSTOM_JDBC $CYGWIN "${APP_VM_OPTS[@]}" -client $SQLCL_DEBUG -cp "$CPLIST" oracle.dbtools.raptor.scriptrunner.cmdline.SqlCli "$@" } =========== Источник: habr.com =========== Похожие новости:
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 20:11
Часовой пояс: UTC + 5