Oracle сеансы VPN арқылы үзілді ме? Keepalive қабаттарын тексеріңіз
Дерекқормен тыныш жұмыс бос емес желілік ағыннан аман өтуі мүмкін. Сокет ауыстырғышын, ядроның әдепкі мәндерін және Oracle Net параметрін дұрыс ретпен қарап шығыңыз.
Жиырма бес минуттық пайдалы дерекқор жұмысы ешбір шығыс бермейді дерлік, ал жолдағы әр құрылғы үшін бұл ағын белсенді емес көрінеді. Дәл белсенді емес күй жиналады. Кейінгі есеп әрдайым бір пішінде болады: сұрау орындалып жатты, сосын сеанс жоғалды, ал нәтиже ешқашан келмеді.
Төрт тексеру тыныш сеанстың сақталатынын шешеді және олар сокеттен сыртқа қарай жүреді. Оларды ретімен орындаңыз, өйткені әрқайсысы алдыңғы қабат өз жұмысын атқарып жатыр деп есептейді.
Қай ағын тынышталады
Маңыздысы — дерекқор трафигін тасымалдайтын байланыс, ол өз адрестері мен порттарымен анықталады. Оны басқа ештеңе жаңартпайды. Шлюзге ping, сол хосттан екінші 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 жоспарлаушы емес.