Files
ROMFASTSQL/proxmox/lxc108-oracle/roa-windows-setup/config/sqlnet.ora
Marius 91e822eb53 fix(export): aliasul TNS lipsa facea exportul zilnic sa esueze tacut
La VADECO, backupora.exe rula in fiecare noapte, se termina cu cod 0 si scria
"DONE" pentru fiecare schema - dar directorul zilei ramanea gol. Intre 25 si
28.08.2026 nu a existat niciun export.

Cauza: schema.txt cere "@XEPDB1", iar 01-setup-database.ps1 scria in tnsnames.ora
doar aliasul ROA. expdp cadea instant cu ORA-12154, iar backupora.exe nu-i
verifica codul de iesire. Doua scripturi din acelasi kit nu erau de acord asupra
numelui bazei, si nimic nu tipa.

Indiciul din log, daca reapare: fiecare schema dura exact 16 secunde, indiferent
de marime. Timp uniform = expdp moare la conectare, nu exporta.

Reparatii, ca sa nu se repete la alt client:

- 01-setup-database.ps1 scrie acum doua aliasuri, ROA si numele serviciului,
  in ambele tnsnames.ora. Curatarea dinaintea rescrierii parcurge fiecare alias
  gestionat de noi, altfel al doilea s-ar dubla la fiecare rulare. Aliasurile
  generate de Oracle (XE, LISTENER_XE, ORACLR_CONNECTION_DATA) raman neatinse.

- 11-setup-backup-export.ps1 face tnsping inainte de a scrie schema.txt si
  opreste instalarea daca aliasul nu se rezolva. Mai bine o instalare care se
  plange decat un backup care nu exista.

- lectii-actualizare-roa-alias-tns.md capata sectiunea despre a doua victima a
  aceleiasi cauze. Lectia generala: unde un script lanseaza un proces extern
  Oracle, verifica efectul, nu raportul procesului care l-a lansat.

Include si blocul NTS din config/sqlnet.ora, ramas necomis: autentificarea OS
cere si apartenenta la ORA_OraDB21Home1_DBA, si setarea din sqlnet.ora.

Nota: CLAUDE.md apare ca modificat integral - blob-ul din git avea CRLF, iar
core.autocrlf=true il normalizeaza la LF. Modificarea reala e o singura linie.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X9Sa54oFKpE2XhD6A7NTch
2026-08-28 17:12:41 +03:00

126 lines
5.2 KiB
Plaintext

# =============================================================================
# Oracle sqlnet.ora - Compatibility Configuration for Old Instant Client
# =============================================================================
#
# Purpose: Allow connections from Oracle Instant Client 10g/11g to Oracle 21c
#
# IMPORTANT - Oracle 21c Location:
# Oracle 21c uses a read-only Oracle Home. Configuration files must go in
# the "Oracle Base Home" directory, NOT in ORACLE_HOME.
#
# For Oracle 21c XE, copy to:
# %ORACLE_BASE%\product\21c\homes\OraDB21Home1\network\admin\sqlnet.ora
# Example:
# C:\app\<user>\product\21c\homes\OraDB21Home1\network\admin\sqlnet.ora
#
# For older Oracle versions, copy to:
# %ORACLE_HOME%\network\admin\sqlnet.ora
#
# After copying:
# 1. STOP and START listener (not just reload!):
# lsnrctl stop
# lsnrctl start
# 2. Wait ~10 seconds for database services to re-register
# 3. Reset user passwords (required to generate 10G password verifier):
# ALTER USER CONTAFIN_ORACLE IDENTIFIED BY ROMFASTSOFT;
# ALTER USER <company> IDENTIFIED BY <password>;
#
# Note: The password MUST be reset after sqlnet.ora change - this regenerates
# the password hash to include the 10G verifier needed by old clients.
#
# =============================================================================
# -----------------------------------------------------------------------------
# Authentication Protocol Compatibility
# -----------------------------------------------------------------------------
# Allow older authentication protocols (required for Instant Client 10/11)
# Value 8 allows all protocols from Oracle 8i onwards
# Default in 21c is 12, which blocks clients older than 12c
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
# -----------------------------------------------------------------------------
# Password Case Sensitivity (Optional)
# -----------------------------------------------------------------------------
# Disable password case sensitivity for compatibility with old applications
# that may send passwords in uppercase
# Uncomment if needed:
# SEC_CASE_SENSITIVE_LOGON=FALSE
# -----------------------------------------------------------------------------
# Name Resolution
# -----------------------------------------------------------------------------
# Standard name resolution order
NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
# -----------------------------------------------------------------------------
# Connection Settings (Optional)
# -----------------------------------------------------------------------------
# Timeout for establishing connection (seconds)
# SQLNET.INBOUND_CONNECT_TIMEOUT = 60
# Dead connection detection interval (minutes)
# SQLNET.EXPIRE_TIME = 10
# -----------------------------------------------------------------------------
# Encryption (Optional - for secure connections)
# -----------------------------------------------------------------------------
# Enable native encryption (AES256)
# SQLNET.ENCRYPTION_SERVER = REQUIRED
# SQLNET.ENCRYPTION_TYPES_SERVER = (AES256)
# SQLNET.CRYPTO_CHECKSUM_SERVER = REQUIRED
# SQLNET.CRYPTO_CHECKSUM_TYPES_SERVER = (SHA256)
# -----------------------------------------------------------------------------
# Logging (for troubleshooting)
# -----------------------------------------------------------------------------
# Enable tracing (set to OFF in production)
# TRACE_LEVEL_CLIENT = OFF
# TRACE_LEVEL_SERVER = OFF
# Log file locations
# LOG_DIRECTORY_CLIENT = C:\app\oracle\network\log
# LOG_DIRECTORY_SERVER = C:\app\oracle\network\log
# =============================================================================
# After applying this configuration:
#
# 1. Reload listener:
# lsnrctl reload
#
# 2. Reset passwords for users connecting with old clients:
# sqlplus sys/romfastsoft@SERVICE as sysdba
# ALTER USER CONTAFIN_ORACLE IDENTIFIED BY ROMFASTSOFT;
# ALTER USER [COMPANY] IDENTIFIED BY [PASSWORD];
#
# 3. Test connection from old client:
# sqlplus CONTAFIN_ORACLE/ROMFASTSOFT@//host:1521/SERVICE
#
# =============================================================================
# -----------------------------------------------------------------------------
# Autentificare OS (NTS) - Windows
# -----------------------------------------------------------------------------
# Permite "sqlplus / as sysdba" si "rman target /" de pe server, FARA parola.
# Necesar pentru task-ul de backup RMAN: altfel ar trebui tinuta parola SYS
# in clar intr-un fisier de pe disc.
#
# ATENTIE - sunt necesare AMANDOUA, una fara alta da ORA-01017:
# 1. linia de mai jos, si
# 2. contul Windows sa fie membru al grupului DBA al ACESTUI Oracle Home
# (ORA_OraDB21Home1_DBA, nu ORA_DBA generic):
# net localgroup ORA_OraDB21Home1_DBA <cont> /add
# Apartenenta se activeaza abia la o sesiune de logon noua.
#
# Verificat pe VADECO 2026-08-28: cu grupul corect dar FARA linia asta,
# "/ as sysdba" tot da ORA-01017. Nu afecteaza conectarile cu parola si nici
# clientii vechi Instant Client (ambele testate dupa modificare).
SQLNET.AUTHENTICATION_SERVICES = (NTS)