Документ создан: 22.09.2020

Подключение к БД с использованием wallet-файла

Есть возможность подключаться к БД посредством учётных данных размещённых в wallet-файле. Строка подключения выглядит примерно так:

sqlplus /@tnsname

или так:

sqlplus /@192.250.250.1:1521/SID


Для этого необходимо в "$ORACLE_HOME/network/admin/sqlnet.ora" добавить строку:

WALLET_LOCATION=(SOURCE=(METHOD=FILE)(METHOD_DATA=(DIRECTORY=/opt/oracle/product/11.2.0/client_1/network/admin)))

/opt/oracle/product/11.2.0/client_1/network/admin может быть заменён на любой другой каталог, где будет размещён wallet-файл.

Необходимо, чтобы были объявлены переменные:

export ORACLE_HOME=/opt/oracle/product/11.2.0/client_1/
export PATH=$ORACLE_HOME/bin:$PATH

Теперь, собственно, действия с wallet-файлом. Для упрощения работы, лучше перейти в каталог с ним. В нашем примере:

cd /opt/oracle/product/11.2.0/client_1/network/admin

Итак.

  • Создать wallet-файл:
    mkstore -wrl ./ -create

    Если получили "PKI-01002: Invalid password.", усложните пароль.

  • Создать новую запись:
    mkstore -wrl ./ -createCredential DB_NAME USER PASSWORD

    Где:

    • DB_NAME — строка подключения: можно использовать строку вида IP:PORT/SID или, если используется tnsnames.ora, tns-имя из этого файла.
    • USER — имя пользователя, под которым будет производиться подключение к БД.
    • PASSWORD — пароль этого пользователя.
    • Если планируете использовать tnsnames, то для каждого пользователя одной БД, под которым необходимо будет подключаться, потребуется своя запись в tnsnames.ora.
  • Просмотреть список credentials:
    mkstore -wrl ./ -listCredential

    результат примерно такой:

    List credential (index: connect_string username)
    1: 192.250.250.1:1521/SID user

    Индекс может понадобиться для получения более подробной информации.

  • Удалить запись:
    mkstore -wrl ./ -deleteCredential DB_NAME

    Где:

    • DB_NAME — строка подключения: можно использовать строку вида IP:PORT/SID или, если используется tnsnames.ora, tns-имя из этого файла.
  • Просмотреть список всех элементов:
    mkstore -wrl ./ -list

    результат примерно такой:

    Oracle Secret Store entries: 
    oracle.security.client.connect_string1
    oracle.security.client.password1
    oracle.security.client.username1

    Индекс в конце каждого элемента — индекс из -listCredential.

  • Теперь можно увидеть детали.
    • Имя:
      mkstore -wrl ./ -viewEntry oracle.security.client.username1

      пример:

      oracle.security.client.username1 = user
    • Пароль:
      mkstore -wrl ./ -viewEntry oracle.security.client.password1

      пример:

      oracle.security.client.password1 = password
  • Или изменить, например, пароль:
    mkstore -wrl ./ -modifyEntry oracle.security.client.password1 NewPassw0rd



Скорее всего, после любых манипуляций, пользователи использовавшие wallet-файл, получат:

ERROR:
ORA-12578: TNS:wallet open failed

Это связано с тем, что после подобных манипуляций на wallet-файл выставляются полномочия 600. Нужно исправить (если разрешать только согрупникам):

chmod 640 ./?wallet*

если же нужно разрешить всем:

chmod 644 ./?wallet*


Ещё одно примечание. Если вы используете подключение с помощью wallet-файла, вы не сможете в sqlplus последовательно выполнить shutdown и startup. После shutdown нужно будет выйти из sqlplus и зайти снова, чтобы выполнить startup.

 
Top.Mail.Ru
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate