VPN ద్వారా Oracle సెషన్ తెగిపోయిందా? keepalive పొరలను తనిఖీ చేయండి
డేటాబేస్పై నిశ్శబ్ద పని నిష్క్రియ నెట్వర్క్ ప్రవాహాన్ని మించి కొనసాగవచ్చు. సాకెట్ స్విచ్, కర్నెల్ డిఫాల్ట్లు మరియు Oracle Net సెట్టింగ్ను సరైన క్రమంలో చూడండి.
ఇరవై ఐదు నిమిషాల ఉపయోగకరమైన డేటాబేస్ పని దాదాపు ఏ ఉత్పత్తిని ఇవ్వదు, మరియు మార్గంలోని ప్రతి పరికరం నుంచి ఆ ప్రవాహం నిష్క్రియంగా కనిపిస్తుంది. నిష్క్రియ స్థితినే సేకరిస్తారు. తర్వాతి నివేదిక ఎప్పుడూ ఒకే ఆకారం: క్వెరీ నడుస్తోంది, తర్వాత సెషన్ మాయమైంది, ఫలితం ఎప్పుడూ రాలేదు.
నాలుగు తనిఖీలు నిశ్శబ్ద సెషన్ నిలిచి ఉంటుందో లేదో నిర్ణయిస్తాయి, అవి సాకెట్ నుంచి బయటకు వెళ్తాయి. వాటిని వరుసగా చేయండి, ఎందుకంటే ప్రతిదీ మునుపటి పొర తన పని చేస్తోందని ఊహిస్తుంది.
ఏ ప్రవాహం నిశ్శబ్దమవుతుంది
ముఖ్యమైన కనెక్షన్ డేటాబేస్ ట్రాఫిక్ మోసుకెళ్లేది, దాని స్వంత చిరునామాలు మరియు పోర్టులతో గుర్తించబడుతుంది. మరేదీ దాన్ని తాజాగా చేయదు. గేట్వేకు పింగ్, అదే హోస్ట్ నుంచి రెండవ SQL కనెక్షన్ మరియు టన్నెల్ స్వంత హృదయ స్పందన వేర్వేరు ప్రవాహాలు, వాటిని ట్రాక్ చేసే ప్రతి పరికరంలో వేర్వేరు స్థితి ఉంటుంది.
ss -tio dst 10.60.4.20
sysctl net.ipv4.tcp_keepalive_time net.ipv4.tcp_keepalive_intvl net.ipv4.tcp_keepalive_probes
సాకెట్ జాబితా సజీవ కనెక్షన్ టైమర్లు మరియు క్యూ స్థితిని చూపుతుంది, ఇది చేరుకోగలిగే పరీక్ష కంటే ఎక్కువ సమాచారం ఇస్తుంది. sysctl విలువలు keepalive ప్రవర్తనకు కర్నెల్ డిఫాల్ట్లు, తదుపరి భాగం అవి మీ సెషన్కు ఎప్పటికీ వర్తించకపోవచ్చు అని వివరిస్తుంది. ఎప్పుడూ ప్రేరేపించబడని డిఫాల్ట్ను ఎలాంటి డిఫాల్ట్ లేకపోవడం నుంచి వేరు చేయలేం.
కనెక్షన్ ఉపయోగించే చిరునామాలు, పోర్టులు మరియు ఇంటర్ఫేస్ను రాసుకోండి. సెషన్ చనిపోయినప్పుడు, అది ఏమి చేసిందో సరైన పరికరాన్ని అడగడానికి ఈ వివరాలే దోహదం చేస్తాయి, నెట్వర్క్ నడుస్తోందా అని అడగడం బదులు.
నిష్క్రియత విధానం ముగుస్తుందా లేదా పరిమితం చేస్తుందా
రెండు విధానాలు ఒకే లక్షణాన్ని సృష్టిస్తాయి మరియు వ్యతిరేక ప్రతిస్పందనలు కోరతాయి. నిష్క్రియత కాలపరిమితి అర్హమైన ట్రాఫిక్ తాజాగా చేయగల స్థితిని తొలగిస్తుంది, keepalive దాన్ని నిరోధించగలదు. సెషన్ యొక్క సంపూర్ణ పరిమితి కార్యకలాపంతో సంబంధం లేకుండా నిర్ణీత వ్యవధి తర్వాత ప్రవాహాన్ని తొలగిస్తుంది, ఏ keepalive దాన్ని మార్చదు.
ప్రతి మధ్యవర్తి యజమానిని రెండింటిలో ఏది అమలు చేస్తున్నారని అడగండి. ఫైర్వాల్, NAT పరికరం, లోడ్ బ్యాలెన్సర్ మరియు క్లౌడ్ గేట్వే అన్నీ స్థితిని ఉంచగలవు, అవి ఏకీభవించాల్సిన అవసరం లేదు. అత్యంత సన్నిహితమైనది మీరు గెలవాల్సిన గడువును నిర్ణయిస్తుంది.
ఈ భేదం ఎప్పుడు ట్యూనింగ్ ఆపాలో కూడా చెబుతుంది. విధానం సంపూర్ణ పరిమితి అయితే, సరైన పరిష్కారం చిన్న పని యూనిట్, పునఃప్రారంభించగల పని లేదా ఆమోదించిన మినహాయింపు, క్రింది తనిఖీ keepalive ఏమీ మార్చలేదని మాత్రమే నిర్ధారిస్తుంది.
Linux డిఫాల్ట్ల వెనుక ఉన్న సాకెట్ స్విచ్
keepalive ప్రతి సాకెట్కు ఐచ్ఛికం. కర్నెల్ డిఫాల్ట్లు సాకెట్ యంత్రాంగాన్ని ప్రారంభించిన తర్వాత ప్రోబ్లు ఎలా ప్రవర్తిస్తాయో వివరిస్తాయి, అవి ఇప్పటికే ఉన్న కనెక్షన్లకు దాన్ని ప్రారంభించవు. ఎప్పుడూ అడగని అప్లికేషన్ ఎలాంటి ప్రోబ్ పొందదు, sysctl విలువలు ఏమి చెప్పినా.
అందుకే సంఖ్యలను పెంచడం మాత్రమే డేటాబేస్ క్లయింట్కు ఏమీ మార్చదు. యంత్రాంగాన్ని క్లయింట్ లైబ్రరీ లేదా అప్లికేషన్ ప్రారంభించాలి, మరియు స్టాక్ ప్రతి కనెక్షన్కు నియంత్రణలు ఇచ్చే చోట, సంబంధం లేని సేవలను ప్రభావితం చేసే మొత్తం హోస్ట్ మార్పు కంటే పరిమిత సెట్టింగ్ మెరుగైనది.
మొదటి ప్రోబ్ వరకు విరామం కూడా క్వెరీ కాలపరిమితి కాదు. ఆరోగ్యకరమైన కనెక్షన్ ప్రోబ్ల మధ్య నిశ్శబ్దంగా ఉంటుంది, చనిపోయిన తోటి ప్రోబ్ విరామం మరియు సంఖ్య ప్రకారం గుర్తించబడుతుంది. ఈ మూడు విలువలను ఒకే కాలపరిమితిగా చదవడం చాలా ఆలస్యంగా లేదా చాలా ఆతురతగా వైఫల్యాన్ని గుర్తించే సెట్టింగ్లకు దారి తీస్తుంది. అవి గుర్తింపును నియంత్రిస్తాయి, అప్లికేషన్ ఓపికను కాదు.
EXPIRE_TIME డేటాబేస్ సెట్టింగ్, నెట్వర్క్ మరమ్మతు కాదు
Oracle Net తన స్వంత జీవశక్తి యంత్రాంగాన్ని అందిస్తుంది, ఇది ప్రక్రియకు సంబంధించిన ప్రభావవంతమైన ప్రొఫైల్లో కాన్ఫిగర్ చేయబడుతుంది, యాదృచ్ఛికంగా సమానమైన పేరు ఉన్న ఫైల్లో కాదు. విలువ నిమిషాలలో వ్యక్తపరచబడుతుంది.
SQLNET.EXPIRE_TIME = 5
దాని ప్రధాన ఉద్దేశ్యం సర్వర్ వైపు చనిపోయిన కనెక్షన్లను గుర్తించడం, మరియు మెరుగైన నమూనాను మద్దతు ఇచ్చే ప్లాట్ఫారమ్లలో ఆ కనెక్షన్లకు TCP keepalive ప్రవర్తనను కూడా సర్దుబాటు చేస్తుంది. ఇది ఉపయోగకరమైన లక్షణం: డేటాబేస్ పొర క్లయింట్ అప్లికేషన్ను మారమని అడగకుండా ప్రోబ్లను ఏర్పాటు చేసుకోగలదు.
పై ఉదాహరణ విలువ ఊహించిన గడువుకు వ్యతిరేకంగా సమన్వయ పరచిన ఎంపిక, సిఫారసు కాదు. నమోదైన సాధారణ మార్గదర్శకం పొడవైన విరామం, సరైన సంఖ్య ఇన్స్టాల్ చేసిన అమలుపై, మీరు అంగీకరించే ప్రోబ్ ఖర్చుపై మరియు మార్గంలోని వాస్తవ రిఫ్రెష్ నియమాలపై ఆధారపడి ఉంటుంది. సెట్టింగ్ను సంబంధిత ప్రక్రియ చదివే ప్రొఫైల్లో పెట్టండి, మరియు ప్రక్రియ అది తీసుకున్నట్లు నిర్ధారించండి. Oracle ప్రొఫైల్ స్థానాలు మరియు గుర్తింపు ప్రవర్తనను తన పారామితి సూచనలో నమోదు చేస్తుంది.
నిశ్శబ్ద విరామాన్ని పరీక్షించండి, తర్వాత పునరుద్ధరణను ప్రణాళిక చేయండి
మీరు గెలవాలనుకునే గడువు కంటే పొడవైన నిశ్శబ్ద కాలం గుండా కొత్త అనుమతించిన కనెక్షన్ను పంపండి, మరియు జీవశక్తి ట్రాఫిక్ మరియు అప్లికేషన్ ఫలితాన్ని గమనించండి. మీకు అవసరం లేని పేలోడ్ కంటెంట్ను పట్టుకోవద్దు; టైమర్లు మరియు కనెక్షన్ స్థితి ప్రశ్నకు సమాధానం ఇస్తాయి.
ss -tio dst 10.60.4.20
# after the quiet interval, same command
ls -l "$ORACLE_HOME/network/admin/sqlnet.ora"
సెషన్ ఇంకా మాయమైతే, గడువు మీరు ఇంకా అడగని పరికరానికి చెందుతుంది, లేదా విధానం సంపూర్ణ పరిమితి. అది నిలిచి ఉంటే, ఏ పొర మారిందో నమోదు చేయండి, తదుపరి నిశ్శబ్ద ఆపరేషన్ దర్యాప్తును పునరావృతం చేయకుండా.
చివరగా, కనెక్షన్ నిజంగా పడిపోయినప్పుడు ఏమి జరుగుతుందో నిర్ణయించండి, ఎందుకంటే జీవశక్తి తనిఖీలు పౌనఃపున్యాన్ని తగ్గిస్తాయి మరియు అవకాశాన్ని ఎప్పటికీ తొలగించవు. డేటాబేస్ ఆపరేషన్ యొక్క నమోదైన ఫలితాన్ని మళ్లీ పంపే ముందు నిర్ణయించండి: సమాధానం పోవడం పని నిర్ధారించబడిందా అనే దానిపై ఏమీ నిరూపించదు. ల్యాప్టాప్ మూసివేయడం లేదా టన్నెల్ పునఃప్రారంభం తట్టుకోవాల్సిన ప్రతిదానికీ, సర్వర్ యాజమాన్యంలోని శాశ్వత ఫలితంతో కూడిన పని బలమైన రూపకల్పన, మరియు keepalive ఏ షెడ్యూలర్ కాదు.