conexões de banco de dados Oracle - que são todos os campos que eu preciso para preencher?
-
13-09-2019 - |
Pergunta
Eu estou acostumado a usar SQL Server e eu estou agora confrontados com a conexão com Oracle. Posso obter algumas descrições completamente inequívocas para que todos os campos que eu preciso para preencher são?
Especificamente, eu quero entender o que são:
Home of
hostname
porto
SID
Nome do serviço
Rede de Alias ??
Ligue identificador
O meu entendimento básico é que hostname é o pooter-lo de se sentou no, mas isso é diferente de casa? Port é a porta TCP e o padrão é 1521 - que parece bastante claro.
Eu só precisará fornecer qualquer nome SID ou serviço? E qual é a diferença - por que um ou outro
Se eu tiver um arquivo TNS, o que é o alias de rede e identificador de conexão? São estes de qualquer maneira o mesmo que os outros campos que eu tenho, se eu não usar um arquivo TNS?
Desculpa ser tal noob, mas minha busca preliminar para obter respostas ainda tem me muito confuso.
Obrigado!
Solução
Home: ORACLE_HOME, an environment variable that points to the location of the Oracle binaries (either location Instance runs from on server or client runs from on client) Hostname: name of the server Port: Port on which the Listener is listening for Oracle connections SID: **S**ervice **ID**entifier. The name of the the Database. This is one of the identifiers that the Listener will expose Service name: An alternate identifier that may be exposed by the Listener
Em um site configurado existente a maneira mais fácil de encontrar esses detalhes é de um arquivo tnsnames.ora em um cliente (ou servidor) a partir do qual as ligações podem ser feitas ao banco de dados. Olhe abaixo de US $ ORACLE (sublinhado) HOME / network / admin. Encontrar a casa ORACLE (sublinhado) com um conjunto (Windows) ou comando env (Unix). O tnsnames.ora também pode estar em um local apontado pelo $ TNS_ADMIN variável.
Se um tnsnames.ora não pode ser encontrado e você tem acesso ao servidor tente o seguinte comando, em geral, como usuário do Oracle
lsnrctl status
lsnrctl é o Ouvinte. Status mostrará SID, e nomes de serviços que ele conhece de (e um par de outros detalhes)
ou encontrar o listener.ora arquivos e sqlnet.ora sob $ ORACLE_HOME / network / admin ou no local apontado pela variável de env $ TNS_ADMIN
Geralmente, haverá um ouvinte por host, portanto, uma porta por host (poderia haver mais, mas não é comum)
Para ligar a Oracle você tem que apontar o cliente para o ouvinte em um local especificado por uma combinação Hostname / Porto e dizer-lhe que SID ou serviços para conexão também.
O comentário de DCookie sobre SID contra Nome do serviço é essencialmente correta.
O SID pode ser encontrado com (dependendo da versão)
select db_unique_name from v$database or select db_name from v$database
Ou olhando no ORACLE_HOME / dbs / init (SID NAME) .ora arquivo $ ou fazendo
ps -ef | grep pmon
e observando a última parte do nome do processo, por exemplo, ora (sublinhado) pmon (sublinhado) SID
Outras dicas
Se você estiver usando Oracle 10g
ou acima, o uso de sintaxe Easy Connect
:
//servername/dbname
, como em:
sqlplus scott/tiger@//servername/dbname
Se você precisa usar TNS
, aqui está o exemplo de TNSNAMES.ORA
:
XE =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = XE)
)
)
Em CONNECT_DATA
, você pode usar qualquer SERVICE_NAME
(que é um identificador para uma instância registrado com um ouvinte), ou SID
(que é um identificador de banco de dados).
Em um par de palavras:
-
SERVICE_NAME
é um identificador de uma instância: um executávelOracle
correndo o qual você vai conectar a -
SID
é um identificador de um banco de dados:. Um conjunto de arquivos de seus dados são armazenados em
Um banco de dados pode ser usado por várias instâncias Oracle
.
Quando em uso dúvida SERVICE_NAME
.
Neste caso, ligue como a seguir:
sqlplus scott/tiger@XE