Настройка внешней процедуры шифрования

Материал из START-IP
Перейти к навигации Перейти к поиску

Настройка вызова внешней процедуры шифрования (Red Hat Linux AS 3,4,5, Sun Sparc Solaris9, HP_UX11)


RedHat AS 3,4,5 32 бит

скопировать из /usr/lib в $ORACLE_HOME/lib библиотеку libcrypt.so

или

ln -s /lib/libcrypt.so.1 $ORACLE_HOME/lib/libcrypt.so

RedHat AS 3,4,5 64 бит

(как проверить cat /etc/redhat-release, uname –a):

ln -s /usr/lib64/libcrypt.so $ORACLE_HOME/lib/libcrypt.so

Solaris 9

скопировать из /usr/lib/sparcv9 в $ORACLE_HOME/lib библиотеку libcrypt.so


HP-UX11

Скопировать

cp /opt/openssl/0.9.8/lib/hpux64/libcrypto.so $ORACLE_HOME/lib/libcrypt.so 


убедиться что tnsnames.ora содержит строчки:

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

а listener.ora содержит:

 SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /usr/oracle/app/oracle/product/9.2.0)
      (PROGRAM = extproc)
    )

А также

LISTENER = 
DESCRIPTION_LIST =
    	  (DESCRIPTION =
      	(ADDRESS_LIST =
			(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    	      )

Пример файла listener.ora:

	
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /usr/oracle/app/oracle/product/9.2.0)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /usr/oracle/app/oracle/product/9.2.0)
      (SID_NAME = orcl)
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = strtip)(PORT = 1521))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
    )
  )

Пример файла tnsnames.ora:

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )
startip=
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = strtip)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

из под system выполнить:

grant create library to sip_w; где sip_w – схема Cтарт-IP

из-под пользователя sip_w выполнить:

CREATE OR REPLACE LIBRARY unix_libcrypt
AS
    '$ORACLE_HOME/lib/libcrypt.so';
/

CREATE OR REPLACE FUNCTION libcrypt ( str VARCHAR2, salt varchar2)
RETURN varchar2
AS 
	LANGUAGE C
	LIBRARY unix_libcrypt
	NAME "crypt"
	PARAMETERS (str STRING,
			salt STRING
		     );
/

проверка:

SET SERVEROUTPUT ON
exec DBMS_OUTPUT.PUT_LINE (' oracle = ' || libcrypt('oracle', 'CD'));