"Это второй день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 2021 г."
предисловие
- Друзья, часто использующие базу данных Oracle, должны быть знакомы с инструментом командной строки SQL*Plus. Он неотделим от повседневной работы, но у этого инструмента есть некоторые недостатки:
- Система LINUX SQL * Плюс не может быть контекстом для просмотра команды истории, команда ошибки должна удерживать нажатой Ctrl для удаления
- SQL-запрос, формат выходного результата неупорядочен, и каждый раз требуется ручная настройка SET
- Текущий сеанс не отображает имя экземпляра и пользователя для входа в систему, а подсказка неудобна для пользователя.
Примечание. Все вышеперечисленные проблемы связаны с конфигурацией SQLPlus по умолчанию.
Итак, вопрос в том, можно ли все это решить? Конечно, я написал эту статью, чтобы рассказать, как оптимизировать командную строку SQL*Plus!
Прежде всего, он в основном делится на две части:
- Переключение контекста: rlwrap + readline
- Оптимизированный формат вывода: glogin.sql
Оптимизация SQL*плюс
1 контекстный переключатель rlwrap
- Я считаю, что когда вы используете инструмент командной строки SQL*Plus на хосте Linux, вы часто сталкиваетесь с ситуацией, когда неправильную команду нелегко откатить, или только что введенная команда хочет выполниться снова, но не может быть переключена по странице вверх и вниз.
- Вышеупомянутая ситуация всегда озадачивала меня, и тогда я нашел решение, поэтому я поделюсь им с вами, надеясь помочь вам. пройти черезrlwrap + readlineПри совместном использовании эта проблема может быть решена отлично.Далее я продемонстрирую, как его настроить и использовать.
1. Источник yum конфигурации хоста Linux
##查看系统版本
cat /etc/system-release
##上传对应主机版本iso文件
scp rhel-server-7.9-x86_64-dvd.iso root@10.211.55.110:/soft
##挂载系统iso镜像源
mount -o loop /soft/rhel-server-7.9-x86_64-dvd.iso /mnt
##配置yum镜像源
mv /etc/yum.repos.d/* /tmp/
echo "[local]" >> /etc/yum.repos.d/local.repo
echo "name = local" >> /etc/yum.repos.d/local.repo
echo "baseurl = file:///mnt/" >> /etc/yum.repos.d/local.repo
echo "enabled = 1" >> /etc/yum.repos.d/local.repo
echo "gpgcheck = 0" >> /etc/yum.repos.d/local.repo
Выполнив описанные выше действия, мы успешно смонтировали образ системы, можно приступать к установке Redline.
2. Установите зависимости readline
yum install -y readline*
- Если нет исходного ISO-образа системы, вы также можете загрузить установочный пакет readline прямо на веб-сайте для установки.
Загрузите пакет readline:
wget -c ftp://ftp.gnu.org/gnu/readline/readline-6.2.tar.gz
Загрузите установочный пакет:
scp readline-6.2.tar.gz root@10.211.55.110:/soft
Разархивируйте установку:
tar -zxvf readline-6.2.tar.gz
cd readline-6.2
./configure && make && make install
3, установка rlwrap
tar -xvf rlwrap-0.42.tar.gz
cd rlwrap-0.42
./configure && make && make install
ссылка для скачивания:GitHub.com/Hanshalube42/День…
Примечание: Поскольку мое подключение к терминалу macOS можно переключить обратно, я не могу продемонстрировать это.В следующем примере для демонстрации используется XShell.
- Когда rlwrap не используется, нет возможности отступить и переключить контексты:
- При использовании rlwrap вы можете переключаться туда и обратно по желанию:
Благодаря приведенной выше демонстрации было легко ввести неправильные команды, не удерживая клавишу Ctrl, чтобы вернуться назад и переключить команды истории контекста, что может значительно повысить эффективность работы.
4. Настройте переменные среды
- Чтобы избежать необходимости каждый раз вводить rlwrap для вызова команды, мы настраиваем переменные среды через псевдонимы псевдонимов.
##配置oracle用户环境变量
cat <<EOF>>/home/oracle/.bash_profile
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias lsnrctl='rlwrap lsnrctl'
alias asmcmd='rlwrap asmcmd'
alias adrci='rlwrap adrci'
alias ggsci='rlwrap ggsci'
alias dgmgrl='rlwrap dgmgrl'
EOF
##环境变量生效
exit
su - oracle
На данный момент инструмент rlwrap настроен!
2 Оптимизируйте формат вывода glogin.sql
SQL*Plus автоматически запускает сценарий при запуске:glogin.sql.
- glogin.sqlХранится в каталоге $ORACLE_HOME/sqlplus/admin/.
- Каждый раз, когда пользователь начинает SQLПлюс сеанс и успешное подключение к базе данных Oracle, SQLПлюс выполнит скрипт.
- Сценарий может записывать что угодно в сценарии SQL*Plus, например настройки системных переменных или другие глобальные настройки, которые администратор базы данных хочет реализовать.
1. Если не настроено, по умолчанию используется следующее:
В этот момент я вхожу в систему SQL*PLUS и выполняю запрос SQL, чтобы увидеть формат выходного результата.
Демонстрация: если glogin.sql не настроен, вывод результата запроса:
Видно, что формат результата запроса нечеткий, а текущее имя экземпляра и имя пользователя не видны после подключения.
2. Настройте glogin.sql
cat <<EOF>>$ORACLE_HOME/sqlplus/admin/glogin.sql
--设置编辑器用vi打开,windows客户端可以换成NotePad
define _editor=vi
--设置dbms_output输出缓冲区大小
set serveroutput on size 1000000
--设置输出格式
set long 200
set linesize 500
set pagesize 9999
--去除重定向输出每行拖尾空格
set trimspool on
--设置name列长
col Name format a80
--查询当前实例名
set termout off
col global_name new_value gname
define gname=idle
column global_name new_value gname
select lower(user) || '@' || substr( global_name, 1, decode( dot, 0,
length(global_name), dot-1) ) global_name
from (select global_name, instr(global_name,'.') dot from global_name );
set sqlprompt '&gname _DATE> '
--设置session时间格式
ALTER SESSION SET nls_date_format = 'HH24:MI:SS';
set termout on
EOF
Демонстрация: когда glogin.sql настроен, результат запроса выводится:
Благодаря приведенной выше конфигурации после подключения SQL * PLUS формат вывода, очевидно, стал более красивым, а отображение более удобным для пользователя. Конкретная конфигурация может быть настроена в соответствии с личным использованием.Например, вы можете настроить скорость использования табличного пространства запроса, и вы можете видеть скорость использования табличного пространства каждый раз, когда вы открываете его, чтобы предотвратить разрыв файлов данных.
--查询表空间使用率
col TABLESPACE_NAME for a20
select tbs_used_info.tablespace_name,
tbs_used_info.alloc_mb,
tbs_used_info.used_mb,
tbs_used_info.max_mb,
tbs_used_info.free_of_max_mb,
tbs_used_info.used_of_max || '%' used_of_max_pct
from (select a.tablespace_name,
round(a.bytes_alloc / 1024 / 1024) alloc_mb,
round((a.bytes_alloc - nvl(b.bytes_free,
0)) / 1024 / 1024) used_mb,
round((a.bytes_alloc - nvl(b.bytes_free,
0)) * 100 / a.maxbytes) used_of_max,
round((a.maxbytes - a.bytes_alloc + nvl(b.bytes_free,
0)) / 1048576) free_of_max_mb,
round(a.maxbytes / 1048576) max_mb
from (select f.tablespace_name,
sum(f.bytes) bytes_alloc,
sum(decode(f.autoextensible,
'YES',
f.maxbytes,
'NO',
f.bytes)) maxbytes
from dba_data_files f
group by tablespace_name) a,
(select f.tablespace_name,
sum(f.bytes) bytes_free
from dba_free_space f
group by tablespace_name) b
where a.tablespace_name = b.tablespace_name(+)) tbs_used_info
order by tbs_used_info.used_of_max desc;
--查询备份
col status for a10
col input_type for a20
col INPUT_BYTES_DISPLAY for a10
col OUTPUT_BYTES_DISPLAY for a10
col TIME_TAKEN_DISPLAY for a10
select input_type,
status,
to_char(start_time,
'yyyy-mm-dd hh24:mi:ss'),
to_char(end_time,
'yyyy-mm-dd hh24:mi:ss'),
input_bytes_display,
output_bytes_display,
time_taken_display,
COMPRESSION_RATIO
from v$rman_backup_job_details
where start_time > date '2021-07-01'
order by 3 desc;
На данный момент glogin.sql настроен, добро пожаловать кушать 👏🏻.
напиши в конце
glogin.sql требует тщательной настройки, и команды, которые вы не понимаете, не должны быть написаны.
Один из способов внедрить известный биткойн-вымогатель — через glogin.sql.
Обратитесь к официальной документации:
Configuring SQL*Plus:docs.Oracle.com/Чэнду/E11882_0…
Этот обмен заканчивается здесь~
Если вы считаете, что статья полезна для вас,Нравится, Избранное, Следите, Комментируйте, Поддержка четырех ссылок одним щелчком мыши, ваша поддержка является самой большой движущей силой для моего творчества.