[Советы Oracle] Научит вас играть с командной строкой SQL Plus и повысить эффективность работы на 200 %.

база данных Linux Oracle

"Это второй день моего участия в ноябрьском испытании обновлений, ознакомьтесь с подробностями события:Вызов последнего обновления 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…


Этот обмен заканчивается здесь~

Если вы считаете, что статья полезна для вас,Нравится, Избранное, Следите, Комментируйте, Поддержка четырех ссылок одним щелчком мыши, ваша поддержка является самой большой движущей силой для моего творчества.