Oracle Net Service Name Resolution
Transcription
Oracle Net Service Name Resolution
Oracle Net Service Name Resolution Getting Rid of the TNSNAMES.ORA File! Simon Pane – Oracle Database Principal Consultant March 19, 2015 ABOUT ME • Working with the Oracle DB since version 6 • Oracle Certified Expert • Oracle Certified Professional – Oracle Database 8, 8i, 9i, 10g, 11g and 12c • Oracle Certified Partner Specialist • Oracle ACE Associate • MOS Communities: Simon_DBA – Level: “Expert” ABOUT PYTHIAN 10,000 Pythian currently manages more than 10,000 systems. 385 Pythian currently employs more than 385 people in 30 countries worldwide. • Global leader in data consulting and managed services. • Unparalleled expertise • Top 5% in databases, applications, infrastructure, Big Data, Cloud, Data Science, and DevOps • Unmatched certifications • 8 Oracle ACEs, 2 Oracle ACE Directors, 2 Oracle ACE Associates, 2 Oracle Certified Masters, • 5 Microsoft MVPs, 1 Microsoft Certified Master 1997 Pythian was founded in 1997 • 1 Cloudera Champion of Big Data • Broad technical experience • Oracle, Microsoft, MySQL, Oracle EBS, Hadoop, Cassandra, MongoDB, virtualization, configuration management, monitoring, trending, and more. TARGET AUDIENCE • This presentation is for – Not Sys Admins – Not Network Admins – Not LDAP Admins NET SERVICE NAME RESOLUTION A Quick Refresher WHAT ARE WE TALKING ABOUT? • Net Service Name – “A simple name for a service that resolves to a connect descriptor” • Connect Descriptor – “A specially formatted description of the destination for a network connection. A connect descriptor contains destination service and network route information.” • The TNSNAMES.ORA file – “The tnsnames.ora file is a configuration file that contains net service names mapped to connect descriptors for the local naming method, or net service names mapped to listener protocol addresses.” • Source: https://docs.oracle.com/database/121/NTDBI/glossary.htm THE BASICS: THE CONNECT DESCRIPTOR • Everything could be specified at the prompt • Good for testing the string/troubleshooting THE BASICS: EZCONNECT • 10g added EZCONNECT – shortened command line specification THE BASICS: NET SERVICE NAME SEARCH • Net Service Name can be found in multiple locations – TNSNAMES.ORA files, external service, directory server – Oracle Net stops searching when it finds the first one STORING AS UNSTRUCTURED DATA • “Unstructured” – not in a database • DNS is somewhat similar yet DNS entries aren’t stored in host files • In the TNSNAMES.ORA the “Connect Descriptors” aren’t consistent in structure or layout MANAGEMENT TECHNIQUES • Scripts that run nightly to “push” out new files to all servers and desktops • Centralized files using the TNS_ADMIN environment variable or soft links – Storing on a network share or NFS mount • Centralized using the IFILE parameter – Can be used up to four times PROBLEMS WITH THIS APPROACH • One typo can corrupt the current and all subsequent entries • Cumbersome to work with/edit with a large number of entries • If centralized, problems affect all users • If localized, may take time to propagate changes • Multiple copies can get out of sync – changes clobbered “BUT WE'VE ALWAYS DONE IT THAT WAY” • “Old way” doesn't mean it's the “best way” WHAT ARE THE OPTIONS How can we make things better? ALTERNATIVES • Store in an “LDAP compatible Directory Server” – – – – Oracle Internet Directory (OID) Microsoft Active Directory (AD) OpenLDAP Others (IBM Tivoli Directory Server, Sun Java System Directory Server, Red Hat Directory Server, Apache Directory Server) • EZCONNECT • A hybrid approach using all methods STRUCTURE IN A “DIRECTORY SERVER” • Published “LDAP Schema for Oracle Net Services” • “Structural LDAP Classes” for Oracle Net: orclDBServer orclNetService orclNetServiceAlias orclNetDescription orclNetDescriptionList orclNetAddress orclNetAddressList orclNetDescriptionAux1 orclNetAddressAux1 CHOOSING A DIRECTORY SERVER • • • • • • • • • • • • • Easy to install and setup? Supported platforms? Additional software required? Additional hardware required? Additional licenses required? Bulk load existing entries? Easy additions? Easy modifications and removals? Ability to export to a TNSNAMES.ORA file? Supports advanced entries (i.e. TAF, RAC, other options)? Supports aliases? High availability and protection (backup options)? Security implications? OID BENEFITS • Complete Oracle stack – full Oracle Support • Data stored in the Oracle Database – DBAs know how to manage / backup • High availability options • Easy TNSNAMES.ORA file generation • Easy to handle multiple “contexts” – (i.e. .world, .example.com) OID ISSUES • Requires a WebLogic domain – Cumbersome, likely difficult for most DBAs • May require additional hardware – For Oracle database repository and/or WLS • Upgrades and patching (WLS & DB) • Overkill for just Net Service Name lookup? ACTIVE DIRECTORY BENEFITS • Register databases via Oracle Tools (optional) – DBCA or Oracle Net Manager • SA handles: – Replication, HA, Patches, Updates, Backups, etc • Critical part of the network infrastructure – Typically high performance ACTIVE DIRECTORY SETUP • Very easy to setup (Demo later) – Requires access to the AD on a DC – Need Domain Administrator privileges – Implement using “Oracle Net Configuration Assistant” and “Oracle Net Manager” • Follow Oracle Implementation PDF guides – Follow step-by-step guides: • Configuring Microsoft Active Directory for Net Naming (Doc ID 1587824.1) ACTIVE DIRECTORY ISSUES • Will need cooperation from Domain Admins to install / configure • Extra AD permissions may be required to query • 11g Clients: – NAMES.LDAP_AUTHENTICATE_BIND = YES • Anonymous query may be required for UNIX clients OPENLDAP BENEFITS • Free (open-source) Directory Server software available on a variety of platforms – Linux, Solaris, MacOS X, Windows, etc • Master-slave replication options – Including multiple slaves, cross-platform, crossendian • Easy updates (i.e. yum for Linux deployments) OPENLDAP INSTALLATION • Install additional RPMs – openldap-servers , openldap-clients • slapd = “stand-alone LDAP directory server” • Simple initial setup (Demo later) – Customize some text files; run commands; etc – Requires some basic Linux skills – Will need root access OPENLDAP ISSUES • No GUI included – Using with Oracle Net Manager is difficult • Apache Directory Studio – Free for Windows, Mac & Linux COMMON FUNCTIONALITY • All have (in some form or another) – Bulk load ability: ldapadd –f <file> – Command line searching: ldapsearch – Extraction to a TNSNAMES.ORA file via tool or command TOOLS ARE ALREADY INSTALLED! • LDAP tools in every Database and Client home WHAT’S THE DOWNSIDE? Risks, Concerns, Supportability, Troubleshooting? WHAT ABOUT SUPPORT? • With OID the whole stack is supported • Resolution via AD also supported • Net Service Name resolution from other Directory Services not fully supported – But is that really an issue? SUPPORT RISKS? • If using an unsupported Directory Server, DBAs must know how to investigate/resolve some problems – Oracle Support will be limited when investigating TNS-03505 via SR when not using AD or OID FAILOVER PERFORMANCE? • Test failover times from an unresponsive master server! • Related MOS notes: – Slow LDAP Naming Resolution when Primary LDAP server unavailable. (Doc ID 1193853.1) – Performance problem with Oracle*Net Failover when TCP Network down (no IP address) (Doc ID 249213.1) – How to Setup LDAP Client Naming Resolution Failover Timeout Against OID - If OID1 is Busy, Quickly Try OID2. (Doc ID 1671486.1) BUT REMEMBER… • Used for initial connection lookup only – Listener sends back a new socket • Not used again for persistent connections • Not used for RAC interconnect • Data Guard & DB Links – Optionally configure with EZCONNECT if support is a concern OTHER RISKS? • Slow / no response from the Directory Servers? – All options offer redundancy or high availability – Worst case, switch back to TNSNAMES.ORA • Some applications may not support it – Might need some one-off TNSNAMES.ORA files FUNCTIONALITY RISKS? • Extra complexity with advanced options – TAF entries, RAC entries, global_name – Oracle Net aliases • Oracle7 and Oracle8.0 clients – Still can be done but requires extra/different steps DEBUGGING TECHNIQUES: TRACING • Oracle Net (SQL*Net) Tracing – HOWTO : Use sqlnet tracing to track down which tnsnames.ora file is used in the connection? (Doc ID 846822.1) – How to Enable Oracle SQLNet Client , Server , Listener , Kerberos and External procedure Tracing from Net Manager (Doc ID 395525.1) • Oracle whitepaper on interpreting the result – Examining Oracle Net, Net8, SQL*Net Trace Files (Doc ID 156485.1) • Trace Assistant – Example of Using Trace Assistant (TRCASST) to Work an Oracle Net issue (Doc ID 1336069.1) DEBUGGING TECHNIQUES: TRCROUTE • Oracle Trace Route utility – Reports on TNS entries on route to the “server” – https://docs.oracle.com/database/121/NETAG/connect.htm#NETAG383 DEBUGGING TECHNIQUES: OS TOOLS • Linux – Strace: • $ strace tnsping ORCL • Windows – Windows Sysinternals Process Monitor: • Run in batch file with command line switches – NtTrace: • http://www.howzatt.demon.co.uk/NtTrace THINGS TO WATCH OUT FOR • NAMES.DIRECTORY_PATH – Methods not specified are excluded – Also determines search order – Must keep EZCONNECT for RAC cluster interconnect • Files searched – Remember: /etc/tnsnames.ora – Hidden file: ~/.tnsnames.ora • Windows – Different search order rules (cwd vs. home dir) – Different search orders if %ORACLE_HOME% is set VIRTUAL DEMO 1 OpenLDAP setup on OL6.5 In 10 simple steps! DEMO1: OpenLDAP SETUP • STEP 1: Install the required RPMs DEMO1: OpenLDAP SETUP • STEP 2: Some basic initial setup • STEP 3: Set the LDAP admin password – Record the hash for use later DEMO1: OpenLDAP SETUP • STEP 4: Create a default configuration file • STEP 5: Create the OID schema files DEMO1: OpenLDAP SETUP • STEP 6: Edit /etc/openldap/slapd.conf – Add new OID schema files – Update all occurrences of “my-domain” – Add rootpw hash value (could use plain text as well) DEMO1: OpenLDAP SETUP • STEP 7: Start and register slapd service • STEP 8: Manually add the OU to the root DEMO1: OpenLDAP SETUP • STEP 9: Add the orclContext and the first entry DEMO1: OpenLDAP SETUP • STEP 10: Adjust SQLNET.ORA & LDAP.ORA DEMO1: OpenLDAP SETUP • Additional optional steps – – – – – Add master and slave(s) replication (HA) Secure with TLS and a certificate Configure Apache Directory Studio Script simplified additions using ldapadd Script TNSNAMES.ORA generation using ldapsearch VIRTUAL DEMO 2 Active Directory Setup In < 10 simple steps! DEMO 2: ACTIVE DIRECTORY SETUP • STEP 1: Follow steps provided in Oracle PDF • Configuring Microsoft Active Directory for Net Naming (Doc ID 1587824.1) DEMO 2: ACTIVE DIRECTORY SETUP • STEP 2: Adjust SQLNET.ORA & LDAP.ORA DEMO 2: ACTIVE DIRECTORY SETUP • STEP 3: Add an entry – Using the Oracle Net Manager utility on the DC – Under the “Directory” tab DEMO 2: ACTIVE DIRECTORY SETUP • STEP 4: Verify the entry – Using “Active Directory Users and Computers” DEMO 2: ACTIVE DIRECTORY SETUP • STEP 5: Verify that the entry can be modified – Using “Active Directory Explorer” (Sysinternals) DEMO 2: ACTIVE DIRECTORY SETUP • STEP 6: Test that data can be extracted – Using “ldapsearch” DEMO 2: ACTIVE DIRECTORY SETUP • STEP 7: Test resolution from Windows DEMO 2: ACTIVE DIRECTORY SETUP • STEP 8: Test resolution from Linux WRAP UP! SUMMARY 1 • OID, Active Directory, and OpenLDAP are all just three out of many possible LDAP Directory Servers software products • Oracle “Connect Descriptors” can be stored and accessed from any LDAP Directory Server • Active Directory and OpenLDAP are the easiest to setup SUMMARY 2 • Initial data can be bulk loaded • Data can be extracted to a TNSNAMES.ORA • Simple scripts can be used to automate: – Creation of new entries – Extraction into a TNSNAMES.ORA • LDAP utilities are already in every $OH SUMMARY 3 • Cost is typically a few days of initial setup work – Include setup and procedural documentation!!!! • Deployment risk is minimal – As hybrid approach can be used • Lower risk of issues if stored in a proper Directory Service – Reduced propagation time for additions/changes – Lower chance of introducing a widespread error – Higher availability THANKS AND Q&A pane@pythian.com 1-877-PYTHIAN http://www.Pythian.com/blog http://is.gd/PythianFacebook @Pythian http://linkedin.com/company/Pythian