Настройка SNC-туннеля SAPRouter

Допустим, вам нужно настроить SAPRouter с SNC для удаленных пользователей, например, людей из другого офиса.

Скачаем и распакуем saprouter (sapcar -xvf) и крипто библиотеку в, например, C:\saprouter .

Пропишем переменные окружения (пример):

SECUDIR=C:\saprouter

SNC_LIB=C:\saprouter\nt-x86_64\sapcrypto.dll

 

Далее создадим сертификаты и обменяемся ими:
Внимание, имена РЕГИСТРОЧУСТВИТЕЛЬНЫЕ ! CN в данном случае ИМЯ ХОСТА (работает и по короткому имени, без домена). Однако, CN может быть любым и не совпадать с именем машины, а использоваться для удобства понимания.
Сторона инициатора:

sapgenpse get_pse -v -noreq -p local.pse "CN=spb-initiator"
sapgenpse seclogin -p local.pse
sapgenpse export_own_cert -o spb-initiator.cer -p local.pse

Сторона акцептора:

sapgenpse get_pse -v -noreq -p local.pse "CN=msk-acceptor"
sapgenpse seclogin -p local.pse
sapgenpse export_own_cert -o msk-acceptor.cer -p local.pse

 

Обменяемся сертификатами, запишем в каталог C:\saprouter\nt-x86_64

На стороне инициатора положим файл msk-acceptor.cer , на стороне акцептора положим файл spb-initiator.cer

 

Выполним команду на стороне инициатора:

sapgenpse maintain_pk -a msk-acceptor.cer -p local.pse

И на стороне акцептора:

sapgenpse maintain_pk -a spb-initiator.cer -p local.pse

 

Настройки saproutetab:

Инициатор:

# Allow Outbound connections to SAProuter host2 will use SNC
KT "p:CN=msk-acceptor" <IP акцептора> 3299

# Allow all inbound connections
P * * *

Акцептор:

# accept incoming connections from SAProuter1
# with destination sapdp00 and 3298 on any host
KP "p:CN=spb-initiator" * sapdp00
KP "p:CN=spb-initiator" * 3298

 

Запуск saprouter:

Инициатор:

Saprouter -r -K p:CN=spb-initiator

Акцептор:

Saprouter -r -K p:CN=msk-acceptor

 

Строка String SAPROUTER в SAP GUI :

/H/<IP инициатора>/H/<IP акцептора>/H/

 

Проверка: 

Инициатор:

niping -c -H /H/<IP инициатора>/S/3299/H/<IP акцептора>/S/3299/H/<IP акцептора>

Акцептор:

niping -s

Получаем сообщение вида:

connect to server o.k.
send and receive 10 messages (len 1000)

------- times -----
avg 12.900 ms
max 13.548 ms
min 12.631 ms
tr 151.405 kB/s
excluding max and min:
av2 12.853 ms
tr2 151.963 kB/s

 

Если нет - читаем файл dev_rout. Если программа ругается на SNC - вы напутали что-то с сертификатами, наиболее вероятно перепутали инициатора, акцептора и кто какой сертификат ждет.

Если ругается на route permition denied - проверйяте saproutetab, видимо указали не верный IP. Возможно в c:\windows\system32\drivers\etc\services не описан порт sapdp00.

 

Сапроутеры можно объединять, наиболее часто встречающаяся топология - звезда: один акцептор и много инициаторов.

Проблема: человек из региона приезжает в командировку с прописанной строкой saprouter в центральный офис. Из-за этой строки тут он начинает ходить петлей до своего региона и обратно сюда.

Решение: завести еще один гостевой сапроутер. В DNS назвать везде в регионах хост, например, saprouter. Гостевой сапроутер так же назвать saprouter. Т.о. сотрудник в домашнем регионе и в командировке будет ходить через сапроутеры, только в одном случае по каналу регион-центральный офис, в другом - между двумя локальными сапроутерами центрального офиса.

 

Инструкция на SCN:

http://wiki.scn.sap.com/wiki/display/Basis/How+to+setup+SNC+connection+between+SAProuters

Права на каталоги SAP в Linux

В примере SM1 — SID системы

Можно использовать скрипты saproot.sh and oraroot.sh выставляющие нужные права или раздать их вручную:

 

Чтобы работал brtools и db13:

chown orasm1:sapsys /sapmnt/SM1/exe/brarchive
chown orasm1:sapsys /sapmnt/SM1/exe/brbackup
chown orasm1:sapsys /sapmnt/SM1/exe/brconnect
chown sm1adm:sapsys /sapmnt/SM1/exe/brrecover
chown sm1adm:sapsys /sapmnt/SM1/exe/brrestore
chown sm1adm:sapsys /sapmnt/SM1/exe/brspace
chown sm1adm:sapsys /sapmnt/SM1/exe/brtools
chmod 4774 /sapmnt/SM1/exe/brarchive
chmod 4774 /sapmnt/SM1/exe/brbackup
chmod 4774 /sapmnt/SM1/exe/brconnect
chmod 755 /sapmnt/SM1/exe/brrestore
chmod 755 /sapmnt/SM1/exe/brrecover
chmod 755 /sapmnt/SM1/exe/brspace
chmod 755 /sapmnt/SM1/exe/brtools

 

Пример:

-rwsrwxr--  1 orasid   sapsys    10022600 Aug 23 2012  brarchive
-rwsrwxr--  1 orasid   sapsys    10251536 Aug 23 2012  brbackup
-rwsrwxr--  1 orasid   sapsys    12179560 Aug 23 2012  brconnect
-rwxr-xr-x  1 sidadm   sapsys    10708840 Aug 23 2012  brrecover
-rwxr-xr-x  1 sidadm   sapsys     4140576 Aug 23 2012  brrestore
-rwxr-xr-x  1 sidadm   sapsys    12778384 Aug 23 2012  brspace
-rwxr-xr-x  1 sidadm   sapsys     4711664 Aug 23 2012  brtools

 

 


 

113747 - Owners and authorizations for BR*Tools

Solution

The following settings are required to call the BR*Tools correctly, especially when using transaction DB13 or DBACOCKPIT:

(1)
ora<sid> and <sid>adm on DB server have a search path on /sapmnt/<SID>/exe. (All br* are contained in this directory.)
ora<sid> belongs to the dba group,
<sid>adm belongs to the sapsys group,

(2)
<sid>adm on the database server has the rhosts entry: "+ <sid>adm".

(3)
The Oracle user ops$<sid>adm must be created in the DB and must have the role sapdba (not DBA) (see SAP Note 134592 for more information).

(4)
brarchive, brbackup, and brconnect belong to ora<sid> and have authorization 4774:
-rwsrwxr--   ora<sid>   sapsys   ...

Reason:
Both the operating system (OS) user ora<sid> and the OS user <sid>adm (for example, from SAP R/3, transactions DB13 or DBACOCKPIT) must be able to call these tools. These tools require access authorization to the database directories and files as well as to the log directories (saparch, sapbackup, sapcheck, and sapreorg) of the BR*Tools. To ensure that they can be executed by both ora<sid> and by <sid>adm, they must belong to the user ora<sid>, and the s-bit must be set.

(5)
brrestore, brrecover, brspace, and brtools belong to <sid>adm and have authorization 755:
-rwxr-xr-x   <sid>adm   sapsys   ...

Reason:
These tools may be used only by OS user ora<sid>, but not by <sid>adm. This ensures that the user <sid>adm does not have write permission for the log directories and therefore cannot create any logs. For this, no s-bit is set, and it is not necessary to define an owner other than the standard owner <sid>adm.
If the tools were started using <sid>adm, they would terminate immediately after the start due to the missing log authorization. However, the user ora<sid> can start the programs despite this and also has the required authorization for the log directories.

For example:
-rwsrwxr--  1 orasid   sapsys    10022600 Aug 23 2012  brarchive
-rwsrwxr--  1 orasid   sapsys    10251536 Aug 23 2012  brbackup
-rwsrwxr--  1 orasid   sapsys    12179560 Aug 23 2012  brconnect
-rwxr-xr-x  1 sidadm   sapsys    10708840 Aug 23 2012  brrecover
-rwxr-xr-x  1 sidadm   sapsys     4140576 Aug 23 2012  brrestore
-rwxr-xr-x  1 sidadm   sapsys    12778384 Aug 23 2012  brspace
-rwxr-xr-x  1 sidadm   sapsys     4711664 Aug 23 2012  brtools

Note 1:
On Linux and Solaris 11, you have to adjust the authorization for brarchive, brbackup, and brconnect manually if you want to create RMAN backups with the OS user <sid>adm. For more information, see SAP Note 776505.

Note 2:
Other BR*Tool authorizations apply for Oracle installations with the OS user oracle. For more information, see SAP Note 1598594.

От чего бывает Internal lock administration error в SAP

Такое случается, когда система пытается заблокировать таблицу с кол-вом записей большем, чем значение, указанное в параметре
enque/table_size , по умолчанию равным 32000(kb) (что примерно 40 000 записей).

После копирования системы SAP она пишет, что язык не установлен

При копировании системы профиль инстанции создается заново. Поэтому вам надо вписать параметр

zcsa/installed_languages=DER

в профиль инстанции и перезагрузить ее

так же понадобятся параметры:

zcsa/system_language = R

zcsa/second_language = E

Где настроить переменные окружения перманентно для SAP и Oracle под Linux

Спойлер - переменные окружения для

SAP в ~/.sapenv_$HOSTNAME.csh

Oracle в ~/.dbenv_$HOSTNAME.csh

При условии, что вы используете CSH

Продолжить чтение »

Зависла сессия в ORACLE

Получить список сессий:

 select distinct ml.session_id,
                s.SERIAL#,
                ml.owner,
                ml.name,
                ml.mode_held,
                ml.mode_requested,
                s.username,
                s.status
  from dba_dml_locks ml, v$session s
where ml.session_id = s.SID

Дропнуть сессию:

ALTER SYSTEM KILL SESSION 'sid,serial#';

Установка ADS (SAP Adobe Document Services) на SAP Netweaver 7.01

Установка ADS (SAP Adobe Document Services) на SAP Netweaver  7.01

Снимок экрана 2013-02-14 в 16.26.43

 

Java:

f0ffe329b02d38c03098562e1d6e3756

 

На более поздних версиях NetWeaver ADS активируется мастером настройки прямо в /nwa. Достаточно лишь ввести учетные данные подключаемой системы и виззард сделает все сам.

Снимок экрана 2015-10-23 в 12.35.32

И выбрать пункт:

 

 

 

Снимок экрана 2015-10-23 в 12.54.59

 

 


For old netweaver (<7.3)
1. ABAP part 1.1 in client 001
1.1.1 create ADSUSER (system) and ADS_AGENT (service)
1.1.2 assign role sap_bc_fp_icf and sap_bc_fpads_icf to ads_agent
1.1.3 create ads_agent user in all clients with roles 1.2 sm59 transaction
1.2.1 HTTP connection to external server - name ADS - technical settings
1.2.2 choose target host and port (usually 8000), path prefix /AdobeDocumentServices/Config?style=rpc
1.2.3 logon and security - use ADSUSER and his password
1.3 sicf transaction 1.3.1 service path - activate two services - /sap/bc/fp and /sap/bc/fpads. In service check Goto > Port information (8000 port)
1.4 spad transaction> create PDF printer. Device type PDF1. Access method - f. Host printer - 2PDF (improvise with it)
2. Java part
2.1 login to visual admin with j2ee_admin user
2.2 server > services > destinations > http > FP_ICF_DATA. Connection settings http://hostname:port (8000). Choose client and basic auth. Username ADS_AGENT and password. Save it.
2.3 server >services > security provider > user managment. Add users ADSUSER and ADS_AGENT to group ADSCallers. Policy configuratin tab > components > com.adobe/AdobeDocumentServices*AdobeDocumentServicesAssembly.jar . Choose role ADSCallers and map ADSUSER and ADS_AGENT
2.4 server > services > Web Services Security > choose web service clients > sap.com > tc~wd~pdfobject >
com.sap.tc.webdynpro.adsproxy.AdsProxy*ConfigPort_Document. Choose basis auth. Enter ADSUser and it's password. Services > deploy > choose button "application". Choose from tree sap.com/tc~wd~pdfobject. Press stop application and start application again.
2.5 Test. sa38 transaction > FP_TEST_00 > choose PDF printer > make a preview.
There is a configuration assistant in the new netweaver. Just choose "Configuration of Adobe Document services as a hub".

Подсчитать кол-во записей в z-таблицах SAP

Запрос можно выполнить прямо в sqlplus

set serveroutput on;
declare
cnt number;
begin
for c in (select * from all_tables where owner = 'SAPSR3' and table_name like 'Z%') loop
execute immediate 'select count(rownum) into : x from "SAPSR3".'||c.table_name into cnt;
dbms_output.put_line(c.table_name||' cnt = '||cnt);
end loop;
end;
/

Не работает SAP GUI 7.30 rev 4 for Java (MacOS)

Да, они сами признались - косяк. Описан в ноте 1918326. Чтобы можно было создать соединение, нужно создать пустой файл и в настройках (Preference > Configuration > Logon > Configuraton File, MessageServers, Routers) указать путь в трех местах к этому файлу.

Обновление SAP Solution Manager с 7.0 на 7.1

Конечно, такое обновление сугубо индивидуально, но все же, написал памятку для себя, может она кому-нибудь пригодится:

Windows 2008/Oracle

  1. Деблокировать или удалить запросы в системе
  2. Остановить систему
  3. Переименовать D:\usr\sap\SM1\SYS\exe\uc\NTAMD64
  4. Скопировать в пустую D:\usr\sap\SM1\SYS\exe\uc\NTAMD64 файлы ядра из архивов SAPEXE_201-10011231.SAR и SAPEXEDB_201-10011229.SAR
  5. Запустить D:\usr\sap\SM1\SYS\exe\uc\NTAMD64\vcredist_x64.msi (чтобы не получить ошибку SapCPE)
  6. Запустить SolMan, убедиться что ядро заработало (на самом деле запустить, остановить, перезагрузить и снова запустить)
  7. Скопировать диск 51042334 для установки Oracle 11.0.2
  8. Запустить \51042334\database\SAP\sapserver.cmd от имени администратора
  9. Выбрать пункт Upgrade Existing Database
  10. Добавить русский язык
  11. Отключить Archive Log на время обновления
  12. Убрать галочку с Configure Enterprise Management
  13. Правим в переменных коружения путь к ora_home после upgrade.
  14. Копируем initEW.* (папка database)
  15. SQL>ALTER SYSTEM SET COMPATIBLE = '11.2.0' SCOPE = SPFILE;
  16. SQL>Shutdown immediate
  17. SQL>Startup
  18. SQL>show parameter compatible
  19. Запустить SGEN для генерации экранов приложений
  20. Присвоить своего SUSER в транзакции AISUSER
  21. Применяем ноты по корректировке системы 1868738 и 1811055  
  22. В SMSY добавить в SM java instanse, поправить SP-версию компанентов (0002)
  23. В DSWP сгенерировать стэк
  24. Скачать его через корзину
  25. Установить Java
  26. Запустить SUM от имени администратора (если не запускается - стереть и распаковать car заново)
  27. Включить хост в список доверенных в локальной сети в браузере
  28. Ввести хост и номер порта в URL из запущенного батника
  29. Указать вручную путь к XML (не к index)
  30. Ввести код 1740067
  31. Нота  1635605 если зависает
  32. Актуальные логи фазы в /sum/tmp, в /logs законченые логи
  33. Отключен джоб SAP_COLLECTOR_FOR_PERFMONITOR
  34. Отключение задвоившихся имплементаций BADI (SE18, SE19) (нота  1835882 )
  35. НЕ ЗАБЫТЬ ПОИМЕТЬ НОТУ 1794392 запрос SAPK702XPRA90000039 или SAPK702XD1

Настройка SSO-аутентификации с использованием Kerberos в SAP

Рассматриваемая конфигурация:

SAP ERP (Windows 2k8 + Oracle 11) / SAP GUI (Windows 7,8 32/64 bit)

 

1. Скачиваем из ноты 352295 файлы win64sso.zip и win32sso.zip.

2. В архиве win64sso.zip содержатся 64-битные библиотеки для активации SNC на стороне сервера, в win32sso.zip - на стороне клиента SAP GUI (sap gui исключительно 32 битный, даже если работает в Windows 7,8 64 bit)

3. Выполняем команду на контроллере домена или сервере SAP c правами администратора домена SETSPN -A SAPService<SID>/<sap-hostname>  <domain>\SAPService<SID>, где <SID> ваш SAP SID, <domain> - имя вашего домена, <sap-hostname> - имя сервера  SAP.

4. Извлечь из архива win64sso.zip библиотеку gx64krb5.dll и скопировать ее в C:\Windows\System32\ сервера SAP

5. Создать переменную окружения на сервере SAP SNC_LIB=C:\Windows\System32\gx64krb5.dll

6. В транзакции SU01 у пользователя прописать SNC-имя в формате: p:DOMAINUSER@DOMAIN.LOCAL

6. Добавить настройки профиля инстанции:

snc/enable =1
snc/accept_insecure_cpic =1
snc/accept_insecure_gui =1
snc/accept_insecure_r3int_rfc =1
snc/accept_insecure_rfc =1
snc/data_protection/max =3
snc/data_protection/min =1
snc/data_protection/use =3
# Location of the dll used for kerberos
snc/gssapi_lib = C:\Windows\System32\gx64krb5.dll
snc/permit_insecure_start =1
# The Windows User Account used to run SAP Server
snc/identity/as = p:SAPService<SID>@<YOUR DOMAIN.LOCAL>
snc/r3int_rfc_secure = 0

 

8. Перезапустите инстанцию. Если что-то не завелось - смотрите лог любого рабочего процесса (\usr\sap\<SID>\DVEBMGS00\work\dev_w0)

9. Настройки SAP GUI

9.1 Переименуйте библиотеку gsskrb5.dll из ахрива win32sso.zip в sncgss32.dll и поместите ее в c:\windows\system32 (для 32-битных OS) или в c:\windows\SYSWOW64 (для 64-битных OS)

9.2Если SAP GUI не нашел библиотеку прописать переменную окружения SNC_LIB=C:\Windows\System32\sncgss32.dll и проверить в том ли она месте (system32 или syswow64)

9.3 В свойствах подключения GUI активировать SNC и ввести строку p:SAPService<SID>@<DOMAIN.LOCAL>

10. Теперь при входе в систему пароль спрашиваться не будет, вместо этого внизу вы увидите уведомление вида: SNC logon by <MNDT> username for DOMAINUSER@DOMAIN.LOCAL.

 

Замечания:

Имена в SNC регистрочувствителные, следовательно, вам нужно узнать как именно был заведен пользователь в Active Directory, с заглавными или маленькими буквами.

Для удобства внедрения можно создать инсталлер (InstallShield), или скопировать файлик sncgss32.dll, saplogon.ini  и sapshortcut.ini через групповую политику Active Directory. Проверенно, это работает.

Переименование библиотеки нужно для SAP GUI, он ищет sncgss32.dll. Это можно исправить определив переменную окружения SNC_LIB.

Если нужен доступ по SSO в разные мандаты одной системы удобно создавать в SAP GUI ярлыки, прописав там хост, мандант и suser вы будете попадать в нужную систему (можно прописать и любимую транзакцию). Если suser не прописать - SAP будет спрашивать в какой мандант заходить. Если в одном манданте для пользователя активирован SSO, то ярлык, ведущий в другой мандант будет логиниться в текущий мандант. Это исправляется или прописыванием SNC в каждом из мандантов. Если нужно войти без SSO - в SAP GUI 7.30 нажать shift+enter на системе, или правой кнопкой мыши - вход без SSO. На старых версиях - нужно будет отключить SNC в настройках.

Есть альтернатива, SSO 2.0, но она платная, просто так ее не найти и не скачать.

 

Полезные материалы:

http://www.saptechies.org/create-ssosingle-sign-sap-sysetm/ (спасибо, ZeUsM)

http://service.sap.com/sap/support/notes/595341

https://scn.sap.com/thread/2004205

 

Запрос выводит пользователей, у которых не присвоено каноническое имя:

with x as (
select
a.BNAME,
u.PNAME
from
SAPSR3.USR02 a
left join SAPSR3.USRACL u on U.BNAME=A.BNAME
where a.mandt=<MANDT>)
select * from x where pname is null;

 

Нашел англоязычный вариант настройки:

К сожалению, в новой версии этой ноты нет возможности скачать эти библиотеки (

SNC Connection with SSO
Single Sign-On with encryption of network connections is enabled with SNC over the SNC Adapter and is using the authentication protocol Kerberos v5These prerequisites are needed to setup the SSO environment:

  • An Active Directory is required in your landscape
  • The SAP System accounts (SAPServiceSID and sbiadm) must be created and running under the AD Domain.
  • On the Domaincontroller of the SAP System run SETSPN -A SAPServiceSID/hostname.SERVER.MYDOMAIN MYDOMAIN\SAPServiceSID
  • Download the win32sso.zip or win64sso.zip (OSS Note 352295) according to the platform where the SAP System is installed.
    Unzip it and place the kerberos file on %SYSTEMROOT%\System32 (e.g. on x64 the file should be gx64krb5.dll).
  • Download SAPSSO.MSI (OSS Note 595341) for the client computers

Setting up your SAP System Server

Create a system environment called "SNC_LIB". The value depends on the OS you are having.
In a 64-Bit environment for example you have to point to the 64-Bit library.
"C:\Windows\System32\gx64krb5.dll".  (Win 32-Bit system gsskrb5.dll)

Set the following parameters on your instance profile (TX RZ10 -> Instance profile -> Extended maintenance add):

snc/enable = 1
snc/gssapi_lib = C:\Windows\System32\gx64krb5.dll   (Win 32-Bit system gsskrb5.dll)
snc/identity/as = p:SAPServiceSID@SERVER.MYDOMAIN.COM

snc/accept_insecure_cpic = 1
snc/accept_insecure_rfc = 1
snc/permit_insecure_start = 1

Setting up Clients with SSO

Install SAPSSO.MSI on the client computers. The variable SNC_LIB on these computers are created. You can check this in the environment variables.
In the Connection Properties of the related SAP GUI connection check the Option "Enable SNC" and enter the following: "p:SAPServiceSID@SERVER.DOMAIN.COM".

Setting up the Users in SAP

In the TX SU01 edit the user, select SNC tab, and provide the following information:
"p:domainuser@DOMAIN.COM".
You will also find more detail information about the needed DLLs, C++ runtimes for 32-/64-bit systems on the website:

http://msdn.microsoft.com/en-us/library/cc185322%28v=bts.10%29.aspx.