Для более подробного использования обратитесь к файлу PowerPoint в директории docs
DBCLI — это переносимая утилита командной строки для администраторов баз данных или служб приложений, которая позволяет легко управлять и запускать часто используемые скрипты, аналогично встроенным утилитам командной строки баз данных, но с большей гибкостью.
Основная часть программы написана на языке Lua, а также используется JDBC для доступа к базам данных. Множество файлов являются SQL-скриптами, которые легко поддерживаются.
Программа предназначена для работы с несколькими типами баз данных и включает два типа модулей: один публичный модуль, функции которого видны во всех платформах баз данных, и другой — специфический для конкретной платформы.
Целью не является полное поддержание всех возможностей существующих утилит командной строки, встроенных в конкретные базы данных (Oracle SQL*Plus
, DB2 CLP
и т.д.), а предоставление дополнительных функций:
set
)alias
для уменьшения частых вводовsnap
и ora
как замена стандартным скриптам командной строки, что позволяет администраторам быстро определять и выполнять шаблоны SQL с минимальным вводомchart
DBCLI не требует компиляции или установки, но зависит от JRE версии OnClickListener 1.8+. Нажмите Download ZIP
, извлеките и используйте. Либо вы можете скачать из выпусков.
Ветка With-JRE
содержит сжатую сборку JRE, если у вас нет установленного JRE. Из-за региональных и символьных различий эта сборка JRE может работать некорректно.
Для ОС Windows рекомендуются следующие настройки в окне командной строки, чтобы избежать переноса слов, влияющего на макет печати:
Layout
: установите ширину буфера и высоту буфера как 500+
Шрифт
: измените размер шрифта на меньшее значение.Linux должен быть версией 64-bit
, и убедитесь, что glibc >= v2.4
установлены (используйте ldd --version
для проверки). Вы можете использовать команду <command> | more
для горизонтального или вертикального прокрутки выходных данных команд, либо more last
для прокрутки последних выходных данных команд.
Тестировано на MacOSX 10.12, более ранние версии должны быть совместимыми. Требуется Java 1.8+. Рекомендуется добавить запись <hostname>.local
в /etc/hosts
для ускорения производительности JVM.
Например:
127.0.0.1 localhost mac-pc.local
::1 localhost mac-pc.local
Иногда вы можете столкнуться с исключением ниже при попытке выполнить dbcli.sh
:
"luajit" cannot be opened because the developer cannot be verified
Решение проблемы заключается в отключении ограничений: sudo spctl --master-disable
Перед запуском dbcli убедитесь, что у вас установлена JRE версии 1.8+ на вашем локальном компьютере. Если вы используете версию ветки "With-JRE", этот шаг можно пропустить.
Создайте файл init.cfg
(или init.conf
для систем, отличных от Windows) в директории "data" со следующим содержанием (для систем, отличных от Windows, используйте export
):
SET JRE_HOME=<JRE HOME>
SET TNS_ADM=<локация tnsnames.ora>
Где TNS_ADM
является необязательным, если вам требуется подключение к Oracle через tnsnames.ora, или вы можете также обратиться к init_sample.cfg
для дополнительных настроек. Пример:
SET JRE_HOME=d:\soft\java
SET TNS_ADM=d:\Soft\InstanceClient\network\admin
По умолчанию используется кодировка UTF-8
. Чтобы использовать другую кодировку, просто измените глобально или в указанном конфигурационном файле переменную окружения DBCLI_ENCODING
. Например:
SET DBCLI_ENCODING=GBK
(для Windows)DBCLI_ENCODING=GBK ./dbcli.sh
После вышеупомянутой настройки вы можете запустить DBCLI, выполнив dbcli.bat
или bin\ConsoleZ\Console.exe
.
dbcli.bat
также поддерживает аргументы в формате "<command>=<args>"
, все доступные команды могут быть найдены, набрав help
или help -a
.
Пример: dbcli.bat "connect=tiger/scott@orcl"
DBCLI поддерживает несколько платформ баз данных (oracle, mysql, db2 и т.д.), по умолчанию используется Oracle
.
Чтобы навсегда изменить предпочитаемую платформу вместо Oracle
, выполните set -p platform <platform>
после запуска консоли.
Например, set -p platform db2
Без опции -p
изменения будут влиять только на текущее окно консоли.
Введите set platform
для просмотра всех доступных вариантов.
Публичные команды: видимы во всех платформах баз данных
Инструкция
помощь
: Отображает информацию о помощи, используйте "помощь <команда>"
чтобы показать подробную информацию о других командах, или "помощь помощь"
чтобы увидеть больше способов использования команды помощь
.
По умолчанию используется платформа баз данных Oracle
, чтобы переключиться на другую платформу, используйте команду "установить [-p] платформа"
.
ansi
: Отображает использование консольной цветовой схемы
горячие клавиши
: Отображает доступные горячие клавиши в консоли
Основные
установить
: Команда установки, отображает или изменяет все настройки окружения консоли или других команд. Измененные настройки могут быть как постоянными, так и временными.
алиас
: Команда установки, аналогична Unix команде alias
,主要用于定义其他命令行的快捷方式,定义会自动存储在文件夹aliases
中以供永久使用
история/история
: Проверка или выполнение исторических команд, исторические команды хранятся только в памяти и доступны в текущем окне
r
или /
: Выполнение предыдущей команды
спать
: Ожидание определенного количества секунд,主要用于脚本文件中
повторять/интервал
: Периодическое выполнение других команд
хост
или !
: Выполнение команд операционной системы
перезагрузить
: Закрытие всех соединений и перезагрузка окружения консоли, всё будет сброшено.
выход
: Закрытие всех соединений и закрытие консоли
Экран
очистить/cls
: Очистка экрана
спул/spo
: Сохранение вывода экрана в файл, имя команды может различаться в зависимости от платформы баз данных
колонка/col
: Управление форматом сетки полей запроса
grep
: Аналог Unix команды grep
, но поддерживает только передачу данных из других команд
больше
: Аналог Unix команды more
, но поддерживает только передачу данных из других команд
tee
: Аналог Unix команды tee
, но поддерживает только передачу данных из других команд, также позволяет экспортировать вывод экрана в формат csv
или html
в зависимости от расширения файла, имя команды может различаться в зависимости от платформы баз данных
промпт/pro/эхо
: Вывод текста, если текст содержит переменные, то они будут заменены значениями этих переменных, имя команды может различаться в зависимости от платформы баз данных
База данных
соединиться/conn
: Подключение к базе данных, Использование: "conn user/password@connection-string"
Строки подключения могут быть либо заранее определёнными именами в файле data\jdbc_url.cfg
, либо следовать формату JDBC thin URL, а для различных платформ баз данных формат URL может отличаться, обычно это формат host:port/database-or-else
. Но для баз данных Oracle
поддерживаются также TNS-NAME
и EZConnect
. Для получения более информации используйте команду помощь соединиться
войти/logon
: Команда установки, просмотр или вход в историю подключений, при успешном подключении информация входа автоматически сохраняется в файл data\password.dat
, поэтому пользователю не требуется каждый раз вводить учётные данные
отсоединиться/disc
: Отсоединение текущего подключения
Подтвердить
: Подтверждение изменений DML, доступно только когда режим автоподтверждения установлен на вкл
Откатить
: Откат изменений DML, доступно только когда режим автоподтверждения установлен на вкл
Скрипты
*
: Команда установки, выполнение пользовательского скрипта, который содержит набор команд, поддерживаемых DBCLI, поддерживает возможности переменных, опций и предварительно скомпилированных условий. Движок преобразует входные параметры в переменные V1 - V20
, за исключением параметров в формате -<опция>
. Это интерфейс для реализации или расширения некоторых других команд, таких как snap
/shell
/ora
/sys
/график
/sql
/и т.д., каждая команда имеет свой каталог для хранения скриптов, и эти названия файлов являются подкомандами.
snap
: Команда установки, используется в следующих сценариях: [захватить статистику до изменения] => [выполнить другие команды / спать на определённое время] => [захватить статистику после изменения] => [генерировать дельту статистики]
Графика
график/ch
: Команда установки, выполнение пользовательского скрипта для генерации графического чарта из SQL-запроса
график/gr
: Генерация графического чарта из входных параметров, которые представляют собой текст SQL или CSV-файл
Переменная
определить/def
: Определение переменной с начальным значением, можно использовать в связках SQL или текстовых подстановках в команде или скрипте
переменная/var
: Определение переменной и её типа данных без присвоения значения, можно использовать как выходной параметр SQL-запроса,主要用于自定义脚本文件
принять/acc
: Присваивание пользовательского ввода или файла новой переменной
сохранить
: Сохранение значения конкретной переменной в целевой файл
вывести/pri
: Вывод целевой переменной
Выгрузка
sql2file
: Генерация результата запроса или курсора в SQL-файл, поддерживает авто-сжатие в зависимости от расширения целевого файла
sql2csv
: Генерация результата запроса или курсора в CSV-файл и файл управления sqlldr
, поддерживает авто-сжатие в зависимости от расширения целевого файла
csv2sql
: Преобразование CSV-файла в SQL-файл и файл управления sqlldr
, поддерживает авто-сжатие в зависимости от расширения целевого файла
Командная оболочка
ssh
: Команда установки для взаимодействия между клиентом и сервером SSH
оболочка/shell
: Команда установки, выполнение локальных скриптов Python/Perl на удалённом сервере SSH (ещё не завершена), эта команда наследуется от модулей скриптов
Внутренние
событие
: Отображение привязок событий консольного кода
lua-jit
: Переключение в консоль LuaJIT
lua
: Вход в консоль Lua, доступ к объектам среды
поиск/search
: Поиск исходного кода
-p
: Тестирование команды и проверка её входных параметров
помощь -a
или установить -a
: просмотр места определения команд/настроек
База данных Oracle
SQL
*
: Поддерживает почти все SQL-запросы базы данных Oracle
Отчёт
awrdump
: Генерация отчёта AWR в соответствии с указанным временным диапазоном или snap_id
awrdiff
: Генерация сравнительного отчёта AWR в соответствии с указанным временным диапазоном или snap_id
addmdump
: Генерация отчёта ADDM в соответствии с указанным временным диапазоном или snap_id
addmdiff
: Генерация сравнительного отчёта ADDM в соответствии с указанным временным диапазоном или snap_id
ashdump
: Генерация отчёта ASH в соответствии с указанным временным диапазоном или snap_id
Извлечение
loadtrace/dumptrace
: Скачивание трассировки файлов self/alert/других с сервера базы данных, требуются права доступа create/drop any directory
, если невозможно получить доступ к пути OS цели с помощью существующих директорий Oracle
sqlprof
: Генерация скрипта профиля SQL из sqlarea/awr/spm/профиля/plan_table/и т.д.
unwrap
: Извлечение PL/SQL кода или представления из базы данных в локальный файл, если код зашифрован, он автоматически дешифруется
Скрипты
oracle
: Команда установки, реализующая движок скриптов, для выполнения предопределённых или пользовательских скриптов, предназначенных для администраторов баз данных или разработчиков, эта команда содержит множество полезных скриптов
sys
: Команда установки, наследованная от oracle
, кроме того, она предназначена только для использования SYSDBA
show
: Команда установки, наследованная от oracle
, кроме того, она не принимает входные параметры
exa
: Команда установки, наследованная от oracle
, используется для запроса конфигураций и статистики ячеек Exadata
SQL*Plus
sqlplus
: Запуск консоли sqlplus
с тем же входом в режиме native или embedded, а также другие входные параметры
@
или sp
: Выполнение скрипта sqlplus
в режиме embedded с тем же входом
Настройки
установить instance
: Автоматическое ограничение экземпляра в соответствии с любыми SQL-запросами, обращающимиси к представлениям gv$/x$/dba_hist
установить контейнер
: Автоматическое ограничение ID контейнера в соответствии с любыми SQL-запросами, обращающимиси к представлениям, содержащим поле con_id
установить начало времени
: Автоматическое ограничение начального времени по умолчанию для предопределённых SQL-запросов, указывающих диапазон времени
установить конец времени
: Автоматическое ограничение конечного времени по умолчанию для предопределённых SQL-запросов, указывающих диапазон времени
Другое
описание/desc
: Описание объекта Oracle, предоставляет больше возможностей, чем sqlplus
xplan
: Отображение плана выполнения для входящего текста SQL/ID
, а также скачивание файла трассировки 10053, если указано определение -10053
* База данных MySQL (ещё не завершена)
*
: Поддерживает почти все SQL-запросы базы данных MySQLmysql
: Переключение на mysql.exe
с тем же входом и другими входными параметрамиmysqluc
: Переключение на mysqluc.exe
с тем же входом и другими входными параметрамиисточник
или \.
или ms
: Переключение на mysql.exe
с тем же входом для выполнения целевого скриптаsql
: Наследуется от движка скриптов, для выполнения скрипта, содержащего несколько командps
: Аналогично sql
, но основан на performance_schema
ti
: Аналогично sql
, но предназначен только для TiDBсписок/list
: Аналогично sql
, но не принимает параметров?
или \?
: Частично отличается от оригинального \?
, предоставляет больше возможностейН/Д
: Некоторые команды аналогичны оригинальному mysql
консолиинфо/info
: Описание объекта более детальноБаза данных PostgreSQL (ещё не завершена)
*
: Поддерживает почти все SQL-запросы базы данных PostgreSQLpsql
: Переключение на psql.exe
с тем же входом и другими входными параметрамифайл
или -f
: Переключение на psql.exe
с тем же входом и выполнение целевого скриптаsql
: Наследуется от движка скриптов, для выполнения скрипта, содержащего несколько командН/Д
: Некоторые команды аналогичны оригинальному psql
консолиПравила команд аналогичны SQL*Plus:
создать триггер/пакет/функцию/процедуру/тип
), являются многострочными командами и должны завершаться символом /
на отдельной строке. создать таблицу/индекс/и т.д.
не относятся к этому типу, поскольку они связаны с структурой.;
, либо /
на новой строке.Установить MARKERS_КОНЕЦ
используется для настройки этих двух символов.помощь -a
и обратитесь к полю Многострочные
.Для строк вывода шире ширины буфера (в системах POSIX — ширины экрана), лишняя часть будет обрезана. Чтобы просмотреть полную информацию:
<команда> | less
для перехода в режим просмотра less
Linux, и нажмите стрелки для прокрутки экранаless последний
для просмотра последнего вывода в режиме less
вывод
для запуска стандартного редактора для просмотра исторического вывода. Если стандартный редактор — vi
, выполните :set nowrap
и используйте горячие клавиши e/b/zL/zH
для горизонтальной прокрутки экрана.
Чтобы изменить стандартный редактор, используйте установить [-p] редактор <имя исполняемого файла>
. Например, установить редактор code
dbcli
определяет некоторые цвета, используемые в разных ситуациях, эти цвета можно найти с помощью команды установить цвет
. установить [-p] <имя цвета> <новый код>
, где код можно найти с помощью команды ansi
, а -p
означает постоянное применение. установить promptcolor BLU;BWHT;UDL
изменяет цвет промпта на синий фон + белый текст + подчеркнутый
, а установить promptcolor default
меняет его на значение по умолчанию. установить ansicolor off
.РелизыНа странице releases
находится 5 архивов ZIP, используемых в различных сценариях. Все эти релизы не включают директорию src
:
dbcli_all.zip
: содержит всёdbcli_win.zip
: исключает директорию jre_linux
и включает JRE 1.8
для Windows
dbcli_linux.zip
: исключает директорию jre
и включает JRE 1.8
для Linux
dbcli_nojre.zip
: исключает директории jre/jre_linux
dbcli_oracle_lite.zip
: исключает директории jre/jre_linux/bin/docs
. Вы можете удалить больше поддиректорий в lib
в зависимости от вашей ОС.Утилита зависит от некоторых двоичных файлов открытых проектов, права на которые принадлежат авторам этих проектов. Двоичные файлы были включены в этот проект. Ниже представлен список:
JLine3 : (BSD) https://github.com/jline/jline3
JSch : (BSD) http://www.jcraft.com/jsch/
ConsoleZ : (GNU) https://github.com/cbucher/console
luajit v2.1 : (MIT) https://github.com/LuaJIT/LuaJIT
jnlua : (MIT) https://github.com/hyee/JNLuaJIT(переработка с jnlua.googlecode.com)
OpenCSV : (MIT) https://github.com/hyee/OpenCSV(переработка с opencsv.sourceforge.net)
MessagePack : (MIT) https://github.com/fperrad/lua-MessagePack (чистый Lua)
dygraphs : (MIT) https://github.com/danvk/dygraphs
JsonForLua : (MIT) https://github.com/craigmj/json4lua
PSCP : (MIT) http://www.putty.org/
LPeg : (MIT) http://www.inf.puc-rio.br/~roberto/lpeg
xml2lua : (MIT) https://github.com/manoelcampos/xml2lua
JNA : (LGPL) https://github.com/java-native-access/jna
NuProcess : (Apache) https://github.com/brettwooldridge/NuProcess
Luv(libuv) : (Apache) https://github.com/luvit/luv
ConEmu : (BSD) https://github.com/Maximus5/ConEmu
juniversalchardet : https://github.com/albfernandez/juniversalchardet
Кроме того, некоторые скрипты SQL взяты из интернета.
Вы можете использовать команду alias
для определения сокращённой формы простой команды, например:
alias sf select * from (select * from $*) where rownum<=50;
В этом случае вы сможете выполнить sf dba_objects where object_id<1000
для упрощения ввода.
Команда alias
поддерживает специальные символы $1-$9
и $*
, где $n
соответствует n-му параметру, а $*
означает конкатенацию $n+1
-$9
через пробел. Введите alias
для просмотра более подробной информации.
Аналогично скриптам SQL*Plus, подкоманда — это комбинация одного или нескольких существующих команд, поддерживающих пользовательские входные параметры. Например, для определения подкоманды xxx
для команды ora
, создайте файл oracle/ora/xxx.sql
и заполните его следующим содержанием:
select * from (select * from &V1) where rownum<=50;
После этого выполните ora -r
, чтобы применить изменения, затем вы сможете выполнить ora xxx dba_objects
для запроса представления.
Утилита создаёт несколько заранее определённых команд. Если вы хотите изменить эти команды без опасений, что новые версии могут перезаписать их, просто создайте поддиректорию под директорией ora
и поместите обновлённый файл в неё. Для скриптов с одинаковым названием тот, который находится в поддиректории, будет иметь приоритет. Также можно использовать ora -l <path>
, чтобы связать с другим рабочим каталогом.Команды ora/show/sys/snap/chart/sql/shell/etc
также следуют аналогичным правилам:
:V1-:V20
или &V1-&V20
как входные параметры, где :Vn
означает привязку параметров, а &Vn
— замену переменных./*[[...]]*/
является необязательным и используется для помощи или информации о использовании.--[[...]]--
внутри комментария помощи также являются необязательными и обычно используются для указания опций команды (например, ora actives -m
) и проверки доступности, обратитесь к другим подкомандам для примеров.В отличие от подкоманд, корневая команда должна быть скриптом Lua. Чтобы подключить пользовательский скрипт Lua к утилите, просто добавьте путь к нему в data/plugin.cfg
, вы можете обратиться к data/plugin_sample.cfg
за примером.
Ниже представлены общие интерфейсы, которые могут быть использованы в скрипте:
env.set_command(...)
env.set_init_cfg(...)
env.snoop('<event_name>', <parameters>)
env.get_db()
Вы также можете:
help -a
или set -a
или event
для просмотра использования этих интерфейсов в других скриптахhelp -e env[.module] 2
для просмотра доступных интерфейсов, например: help -e env.oracle 2
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )