- Открыть порты в брандмауэре.
Например для centos 6:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1556 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 13724 -j ACCEPT - Добавить медиа сервера.
Если у NetBackup более одного сервера (например мастер + медиа), то в файле /usr/openv/netbackup/bp.conf все они должны быть указаны. Например так:
SERVER = master.domain.ru
SERVER = media1.domain.ru
SERVER = media2.domain.ru
CLIENT_NAME = client.domain.ru
CONNECT_OPTIONS = localhost 1 0 2 - Если предполагается архивирование/восстановление oracle баз данных, нужно запустить /usr/openv/netbackup/bin/oracle_link (см. article.TECH87072 )
среда, 25 января 2017 г.
Установка клиента netbackup на linux
После выполнения install.sh скрипта, необходимо:
понедельник, 14 ноября 2016 г.
Asterisk cdr viewer + postgresql
config.inc.php
...
$db_type = 'pgsql';
...
Для базы в которой находится таблица cdr:
CREATE OR REPLACE FUNCTION public.unix_timestamp (
date timestamptz
)
RETURNS double precision AS
$body$
SELECT date_part('epoch', date)
$body$
LANGUAGE 'sql';
...
$db_type = 'pgsql';
...
Для базы в которой находится таблица cdr:
CREATE OR REPLACE FUNCTION public.unix_timestamp (
date timestamptz
)
RETURNS double precision AS
$body$
SELECT date_part('epoch', date)
$body$
LANGUAGE 'sql';
среда, 19 октября 2016 г.
Очередной nway call в asterisk через confbridge
Написано для Asterisk 13.11.0.
confbridge.conf
...
[nway_menu]
type=menu
1=dialplan_exec(nway-invite,0,1)
features.conf
...
[applicationmap]
nway =>*0,self,AGI(nway.pl),default
extensions.conf
...
[from-internal]
exten = _1XX,1,Set(CHANNEL(language)=ru)
same = n,Set(__DYNAMIC_FEATURES=nway)
...
[nway-invite]
exten = 0,1,NoOp()
same = n,Read(DEST,,3)
same = n,GoSub(subDialString,start,1,(${DEST}))
same = n,Originate(${GOSUB_RETVAL},exten,dynamic-nway,${CONFNO},1)
exten = i,1,SoftHangup(${BRIDGEPEER})
exten = t,1,SoftHangup(${BRIDGEPEER})
[dynamic-nway]
exten = _X.,1,Answer()
same = n,Set(__CONFNO=${EXTEN})
same = n,ConfBridge(${EXTEN},,,nway_menu)
/var/lib/asterisk/agi-bin/nway.pl
#!/usr/bin/perl
use strict;
use warnings;
use Asterisk::AGI;
use Asterisk::AMI;
my $agi = Asterisk::AGI->new();
my $channel = $agi->get_variable('CHANNEL');
my $bridgepeer = $agi->get_variable('BRIDGEPEER');
my ($confno) = split /\./,$agi->get_variable('UNIQUEID');
my $ami = Asterisk::AMI->new(
PeerAddr => '127.0.0.1',
PeerPort => '5038',
Username => 'script',
Secret => '123456');
my $action = $ami->action({
Action => 'Redirect',
Channel => $channel,
Context => 'dynamic-nway',
Exten => $confno,
Priority => 1,
ExtraChannel => $bridgepeer,
ExtraContext => 'dynamic-nway',
ExtraExten => $confno,
ExtraPriority => 1
});
$agi->hangup();
exit();
Примечания:
Порядок работы:
confbridge.conf
...
[nway_menu]
type=menu
1=dialplan_exec(nway-invite,0,1)
features.conf
...
[applicationmap]
nway =>*0,self,AGI(nway.pl),default
extensions.conf
...
[from-internal]
exten = _1XX,1,Set(CHANNEL(language)=ru)
same = n,Set(__DYNAMIC_FEATURES=nway)
...
[nway-invite]
exten = 0,1,NoOp()
same = n,Read(DEST,,3)
same = n,GoSub(subDialString,start,1,(${DEST}))
same = n,Originate(${GOSUB_RETVAL},exten,dynamic-nway,${CONFNO},1)
exten = i,1,SoftHangup(${BRIDGEPEER})
exten = t,1,SoftHangup(${BRIDGEPEER})
[dynamic-nway]
exten = _X.,1,Answer()
same = n,Set(__CONFNO=${EXTEN})
same = n,ConfBridge(${EXTEN},,,nway_menu)
/var/lib/asterisk/agi-bin/nway.pl
#!/usr/bin/perl
use strict;
use warnings;
use Asterisk::AGI;
use Asterisk::AMI;
my $agi = Asterisk::AGI->new();
my $channel = $agi->get_variable('CHANNEL');
my $bridgepeer = $agi->get_variable('BRIDGEPEER');
my ($confno) = split /\./,$agi->get_variable('UNIQUEID');
my $ami = Asterisk::AMI->new(
PeerAddr => '127.0.0.1',
PeerPort => '5038',
Username => 'script',
Secret => '123456');
my $action = $ami->action({
Action => 'Redirect',
Channel => $channel,
Context => 'dynamic-nway',
Exten => $confno,
Priority => 1,
ExtraChannel => $bridgepeer,
ExtraContext => 'dynamic-nway',
ExtraExten => $confno,
ExtraPriority => 1
});
$agi->hangup();
exit();
Примечания:
- Подпрограмма subDialString создает строку подключения для разных каналов по заданному номеру. Например для unistim USTM/100@100, для sip SIP/101 и т.д. Если все аппараты используют один протокол, строка GoSub не нужна, следующую строку можно изменить на, например, same = n,Originate(SIP/${DEST},exten,dynamic-nway,${CONFNO},1).
- В строчке exten = _1XX шаблон должен быть конечно Ваш, как и длина номера в same = n,Read(DEST,,3)
- В качестве номер конференции используется часть UNIQUEID для того, чтобы начавший конференцию, мог выйти из нее и начать новую.
Порядок работы:
- Если в ходе разговора есть необходимость подключить третьего, нажать *0 (features.conf) при этом разговор преобразуется в конференцию (можеть делать и caller, и callee)
- Для подключения дополнительного собеседника нажать 1 (confbridge.conf) и номер (может делать любой участвующий в конференции)
пятница, 9 сентября 2016 г.
При попытке настроить asterisk realtime в связке с postgresql 9.2.13 (через odbc), после создания таблиц (либо через alembic, либо используя /usr/src/asterisk/contrib/realtime/postgresql/postgresql_config.sql) при попытке зарегестрировать sip пользователя (таблица sippeers) получал ошибки несоотвествия типов полей lastms, regseconds... Со стороны сервера это выглядит так: ОШИБКА: колонка "lastms" имеет тип integer, а выражение - character (символ 136). Т.е регистрация аппарата проходит, но поля ipaddr, port, regseconds, fullcontact и т.д. не заполняются.
Для pjsip пользователей подобные ошибки в таблице ps_contacts. Аппарат так же регистрируется, но данные в ps_contacts не добавляются.
Удаление полей порождающих ошибки и их создание с типом char помогают для таблицы sippeers, но после изменений в ps_contacts asterisk стал перезагружатся с периодом около минуты.
Помогло явное создание неявного преобразования типов в БД :).
Для sippeers достаточно:
create cast (character as integer) with inout as implicit;
Для ps_contacts необходимо добавить:
create cast (character as double precision) with inout as implicit;
create cast (character as bigint) with inout as implicit;
create cast (character as yesno_values) with inout as implicit;
Для pjsip пользователей подобные ошибки в таблице ps_contacts. Аппарат так же регистрируется, но данные в ps_contacts не добавляются.
Удаление полей порождающих ошибки и их создание с типом char помогают для таблицы sippeers, но после изменений в ps_contacts asterisk стал перезагружатся с периодом около минуты.
Помогло явное создание неявного преобразования типов в БД :).
Для sippeers достаточно:
create cast (character as integer) with inout as implicit;
Для ps_contacts необходимо добавить:
create cast (character as double precision) with inout as implicit;
create cast (character as bigint) with inout as implicit;
create cast (character as yesno_values) with inout as implicit;
вторник, 21 апреля 2015 г.
Заполнение поля Media Management Settings в Enterprise Manager для архивирования Oracle через NetBackup
Если для настройки архивирования БД Oracle на ленту\с использованием Media Manager (NetBackup) используется Enterprise Manager, то поле Media Management Vendor Library Parameters (Availability - Backup Settings) следует заполнить следующим образом:
SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64, ENV=(NB_ORA_SERV=master.domain.ru, NB_ORA_CLIENT=client.domain.ru)
Понятно, что master.domain.ru - мастер сервер вашей инсталяции NetBackup, client.domain.ru - сервер на которой установлен БД Oracle.
Если клиент NetBackup уже связан с oracle ( запущен oracle_link из /usr/openv/netbackup/bin/ ) и создана политика (обязательно тип Oracle - Application Backup - указан клиент), то после нажатия кнопки Test Tape Backup не должно выдаваться сообщений об ошибках, а в консоли управления NetBackup можно будет увидеть два выполненных задания с этого клиента - backup и restore.
SBT_LIBRARY=/usr/openv/netbackup/bin/libobk.so64, ENV=(NB_ORA_SERV=master.domain.ru, NB_ORA_CLIENT=client.domain.ru)
Понятно, что master.domain.ru - мастер сервер вашей инсталяции NetBackup, client.domain.ru - сервер на которой установлен БД Oracle.
Если клиент NetBackup уже связан с oracle ( запущен oracle_link из /usr/openv/netbackup/bin/ ) и создана политика (обязательно тип Oracle - Application Backup - указан клиент), то после нажатия кнопки Test Tape Backup не должно выдаваться сообщений об ошибках, а в консоли управления NetBackup можно будет увидеть два выполненных задания с этого клиента - backup и restore.
четверг, 19 февраля 2015 г.
Ошибка "The requested lookup key was not found in any active activation context"
MS SQL 2000 (32 бит) на Win 2003 r2 (64 бит) + symantec netbackup (у меня - 7.5.0.6)
Решение есть по ссылке http://blogs.msdn.com/b/psssql/archive/2009/02/26/you-encounter-error-message-the-system-cannot-find-the-file-specified-when-attempting-to-perform-backups-using-sqlvdi.aspx.
У меня:
Перезагрузка не нужна.
Решение есть по ссылке http://blogs.msdn.com/b/psssql/archive/2009/02/26/you-encounter-error-message-the-system-cannot-find-the-file-specified-when-attempting-to-perform-backups-using-sqlvdi.aspx.
У меня:
- x86 библиотека - версия 2000.85.1054.0, размер 119 296 байт
- x64 библиотека - версия 2000.85.1054.0, размер 156 160 байт
Перезагрузка не нужна.
Предварительное создание файлов БД при восстановлении ms sql 2000
При тестовых восстановлениях БД MS SQL 2000 через symantec netbackup получил несколько ошибок связанных с таймаутами:
Существует однако простая замена instant file initialization на "педальном" приводе:
OBJECTTYPE DATABASE
RESTORETYPE MOVE
DATABASE "XXX"
MOVE "XXX_Data"
TO "d:\DATA\XXX_data.MDF"
MOVE "XXX_Log"
TO "d:\DATA\XXX_Log.LDF"
#
# The following image is type: Full
NBIMAGE "srv-sql01.MSSQL7.SRV-SQL01.db.XXX.~.7.001of001.20150217180955..C"
SQLHOST "srv-stend12"
NBSERVER "SRV-BCK01"
BROWSECLIENT "srv-sql01"
MAXTRANSFERSIZE 6
BLOCKSIZE 7
RESTOREOPTION REPLACE
RECOVEREDSTATE NOTRECOVERED
NUMBUFS 2
ENDOPER TRUE
OPERATION RESTORE
OBJECTTYPE DATABASE
DUMPOPTION INCREMENTAL
RESTORETYPE MOVE
DATABASE "XXX"
# The following image is type: Full database differential
NBIMAGE "srv-sql01.MSSQL7.SRV-SQL01.inc.XXX.~.7.001of001.20150218180207..C"
SQLHOST "srv-stend12"
NBSERVER "SRV-BCK01"
BROWSECLIENT "srv-sql01"
MAXTRANSFERSIZE 6
BLOCKSIZE 7
RESTOREOPTION REPLACE
RECOVEREDSTATE RECOVERED
NUMBUFS 2
ENDOPER TRUE
Где XXX_data.MDF, XXX_Log.LDF - созданные ранее файлы.
Судя по perfmon файл лога обнуляется, а основной файл нет. В моем случае время начала заливки данных сократилась с нескольких часов до пары минут.
- Created VDI object for SQL Server instance "instance". Connection timeout is "300" seconds.
- Client read timeout.
- Установить VDITIMEOUTSECONDS в скрипте восстановления
- Установить нужный timeout в свойствах мастер сервера symantec netbackup.
Существует однако простая замена instant file initialization на "педальном" приводе:
- Создаем пустые файлы для данных и логов нужного размера. Можно посмотреть текущие и сделать несколько больше (перед копированием данных они будут подрезаны в нужный размер). Я использовал для этого fsutil file createnew filename length. Например: fsutil file createnew XXX_data.MDF 300000000000
- Запускаем задание восстановления с перемещением. Для symantec netbackup скрипт может выглядеть как то так
OBJECTTYPE DATABASE
RESTORETYPE MOVE
DATABASE "XXX"
MOVE "XXX_Data"
TO "d:\DATA\XXX_data.MDF"
MOVE "XXX_Log"
TO "d:\DATA\XXX_Log.LDF"
#
# The following image is type: Full
NBIMAGE "srv-sql01.MSSQL7.SRV-SQL01.db.XXX.~.7.001of001.20150217180955..C"
SQLHOST "srv-stend12"
NBSERVER "SRV-BCK01"
BROWSECLIENT "srv-sql01"
MAXTRANSFERSIZE 6
BLOCKSIZE 7
RESTOREOPTION REPLACE
RECOVEREDSTATE NOTRECOVERED
NUMBUFS 2
ENDOPER TRUE
OPERATION RESTORE
OBJECTTYPE DATABASE
DUMPOPTION INCREMENTAL
RESTORETYPE MOVE
DATABASE "XXX"
# The following image is type: Full database differential
NBIMAGE "srv-sql01.MSSQL7.SRV-SQL01.inc.XXX.~.7.001of001.20150218180207..C"
SQLHOST "srv-stend12"
NBSERVER "SRV-BCK01"
BROWSECLIENT "srv-sql01"
MAXTRANSFERSIZE 6
BLOCKSIZE 7
RESTOREOPTION REPLACE
RECOVEREDSTATE RECOVERED
NUMBUFS 2
ENDOPER TRUE
Где XXX_data.MDF, XXX_Log.LDF - созданные ранее файлы.
Судя по perfmon файл лога обнуляется, а основной файл нет. В моем случае время начала заливки данных сократилась с нескольких часов до пары минут.
Подписаться на:
Сообщения (Atom)