Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Instale o Oracle Client a partir da linha de comando sem interação do usuário


Após algumas investigações, descobri como obter as opções completas da linha de comando:
setup.exe -help

Isso funciona para a versão 11.2, 12.1 e 12.2. Na versão 18c e 19c, isso não funciona mais, em vez disso, você deve executar:
setup.exe -help -silent

Aqui a saída de exemplo de uma configuração 18c:
Usage:  setup.exe [<flag>] [<option>]
Following are the possible flags:
    -help - display help.
    -silent - run in silent mode. The inputs can be a response file or a list of command line variable value pairs.
            [-ignorePrereqFailure - ignore all prerequisite checks failures.]
            [-lenientInstallMode - perform the best effort installation by automatically ignoring invalid data in input parameters.]
            [-showProgress - show the installation progress on the console. This option is supported for silent mode installation only.]
    -responseFile - specify the complete path of the response file to use.
    -invPtrLoc - point to a different inventory location. The orainst.loc file contains the location of the central inventory (inventory_loc) and the inventory group (inst_group).
    -jreLoc - specify the location for the jre used in the installation.
    -logLevel - enable the log of messages up to the priority level provided in this argument. Valid options are: severe, warning, info, config, fine, finer, finest.
    -paramFile - specify the location of the oraparam.ini file to be used in the installation.
    -executePrereqs | -executeConfigTools | -deinstall
    -executePrereqs - execute the prerequisite checks only.
    -executeConfigTools - execute the config tools for an installed home.
            [-all - execute all the config tools for an installed home, including the config tools that have already succeeded.]
    -deinstall - uninstall the specified home.
    -debug - run in debug mode.
    -executeSysPrereqs - execute the system prerequisite checks and exit.
    -ignoreSysPrereqs - ignore the results of the system prerequisite checks.
    -printdiskusage - log the debug information for the disk usage.
    -printmemory - log the debug information for the memory usage.
    -printtime - log the debug information for the time usage.
    -waitForCompletion - wait for the completion of the installation, instead of spawning the installer and returning the console prompt.
    -suppressPreCopyScript - suppress the execution of the precopy script.
    -acceptUntrustedCertificates - accept untrusted certificates from a secure site.
    -suppressPostCopyScript - suppress the execution of the postcopy script.
    -noconfig - do not execute the config tools.
    -noconsole - suppress the display of messages in the console. The console is not allocated.
    -ignoreInternalDriverError - ignore any internal driver errors.
    -promptForPassword - provide the passwords on the console during a silent installation of an Oracle database.
    -remotecp - specify the path to the remote copy program on the local cluster node. Used only for cluster installs.
    -remoteshell - specify the path to the remote shell program on the local cluster node. Used only for cluster installs.

Finalmente, consegui executar a configuração completa com um único comando, mesmo sem um arquivo de resposta que pode ser executado por um sistema de implantação de software. Aqui estão alguns exemplos (precisa estar em uma única linha):
setup.exe -silent -nowait -ignoreSysPrereqs -ignorePrereq -waitforcompletion -force \
   "INVENTORY_LOCATION=C:\Program Files\Oracle\Inventory" \
   "ORACLE_BASE=c:\oracle\product" \
   "ORACLE_HOME=c:\oracle\product\12.1\Client_x64" \
   "SELECTED_LANGUAGES=de,en,fr,it" \
   "oracle.install.IsBuiltInAccount=true" \
   "oracle.install.client.installType=Custom" \
   "oracle.install.client.customComponents=oracle.rdbms.util:12.1.0.2.0,oracle.sqlplus:12.1.0.2.0,oracle.odbc:12.1.0.2.0"


setup.exe -silent -nowait -ignoreSysPrereqs -ignorePrereqFailure -skipPrereqs -waitForCompletion -force \
   "INVENTORY_LOCATION=C:\Program Files\Oracle\Inventory" \
   "ORACLE_BASE=c:\oracle\product" \
   "ORACLE_HOME=c:\oracle\product\12.2\Client_x64" \
   "oracle.install.IsBuiltInAccount=true" \
   "oracle.install.client.installType=Custom" \
   "oracle.install.client.customComponents=oracle.rdbms.util:12.2.0.1.0,oracle.sqlplus:12.2.0.1.0,oracle.odbc:12.2.0.1.0"


setup.exe -silent -nowait -ignoreSysPrereqs -ignorePrereqFailure -waitForCompletion -force \
   "ORACLE_BASE=c:\oracle\product" \
   "ORACLE_HOME=c:\oracle\product\18c\Client_x86" \
   "oracle.install.IsBuiltInAccount=true" \
   "oracle.install.client.installType=Custom" \
   "oracle.install.client.customComponents=oracle.rdbms.util:18.0.0.0.0,oracle.sqlplus:18.0.0.0.0,oracle.odbc:18.0.0.0.0"

Observe, opção -nowait não é mencionado na ajuda, mas é necessário suprimir o prompt "Pressione ENTER para fechar o programa".

Opção -force não é mencionado na ajuda da versão 12.2 e mais recente, mas parece ainda ser válido para forçar a instalação em um diretório não vazio

Aparentemente, o instalador 18c de 32 bits não gosta da opção "INVENTORY_LOCATION=C:\Program Files (x86)\Oracle\Inventory" , pule esta entrada. Usando "INVENTORY_LOCATION=C:\PROGRA~2\Oracle\Inventory" causa uma exceção para arquivos de bloqueio em c:\Program Files (x86)\Oracle\Inventory\locks\