Oracle 11g connection error

db гээ унтараагад асаагад listener - ээ асаагаад зүгээр асцан тэгсэн мөртлөө sqldeveloper - оос холбогдохгүй байхын. terminal дээрээс sqlplus / as sysdba; гээд хандахаар зүгээр listener status шалгахаар асацан мөртлөө server дотроосоо sqldeveloper - оос хандахад test connection гээл байгад байна… Энийг яаж шийдэх вэ. 5 орчим минут байж байгаад холбогдож байна.

5 минутын дараа холболт болж байна гэсэн үг үү?

тийм listener гажигтана гэж байх уу
SUBSCRIBE_FOR_NODE_DOWN_EVENT_=OFF
listener дээрээ нэмээд унтараагаад асаачихсан зүгээр болчихсон

1 Like

Өмнө хэвийн байсан бол эхний ээлжинд listener лог файлын хэмжээг шалга. Хэтэрхий томорсон байж магадгүй.

Listener, Instance 2 нь өөр 2 төрлийн зүйл юм.
Аль аль нь ассаны дараагаар LREG background process дээрхи хоёрыг холбож өгсөнөөр гаднаас ирэх холболтууд Listener-т холбогдож Instance руу холбогдох боломжтой болно. Уг үйлдэл 60 секунд хүртэл хугацааны дотор ажиллаж бэлэн болох бөгөөд хүлээхийг хүсэхгүй бол sqlplus -р орж дараах коммандыг ажиллуулж өгнө.

alter system register;
1 Like

listener log file 3GB гаран байсан г цэврэлсэн

Listener log file 3GB болсон бол удаан холбогдох магадлал өндөр. Урт хугацаанд ийм болсон бол зүгээр байж магадгүй харин богино хугацаанд listener log file 3GB болсон бол Application талд JDBC -гийн зохион байгуулалт буруу байж болно. Жишээ нь нэг connection үүсгээд ашиглах биш үйлдэл болгон дээр connection үүсгэх гэх мэт.

OS ni linux уу ? Linux бол доорх script -ээр purge хийж болно. Listener дээр auto rotate болон purge байдаггүй шиг санагдаж байна.
RAC биш бол grid -ын хэсэгийг хасаад бичиж болно.

vi /scripts/purgeListenerLogs.sh

##################################################
# Add user profile, ORACLEH_HOME, PATH
##################################################
# WARNING !!!! Grid esvel Oracle user iin profile variable -iig taaruulj ugnu
##################################################
PATH=$PATH:$HOME/bin
ORACLE_BASE=/oracle
ORACLE_HOME=/oracle/app/12.2/grid
GRID_HOME=/oracle/app/12.2/grid
ORACLE_SID=+ASM
ORACLE_HOSTNAME=+ASM
LD_LIBRARY_PATH=$ORACLE_HOME/lib
PATH=$PATH:$GRID_HOME/bin
export PATH=$ORACLE_HOME/bin:$PATH:$ORACLE_HOME/OPatch
export ORACLE_BASE ORACLE_HOSTNAME ORACLE_HOME GRID_HOME ORACLE_SID LD_LIBRARY_PATH
export PATH
# Check Date
echo "---START---"
date

# Rotate SCAN Listener log files
cd ~
OBS_IN_MIN=43200 # 60*24*30=43200 -> lastest 30 days
listener_path=`lsnrctl status listener_scan1 | grep "Listener Log File" | awk '{ print $4 }' | sed -e 's/\(.*\)diag\(.*\)/\1/'`
if [ -z "$listener_path" ]
then
	listener_path=`lsnrctl status listener_scan2 | grep "Listener Log File" | awk '{ print $4 }' | sed -e 's/\(.*\)diag\(.*\)/\1/'`
	
	if [ -z "$listener_path" ]
	then
		listener_path=`lsnrctl status listener_scan3 | grep "Listener Log File" | awk '{ print $4 }' | sed -e 's/\(.*\)diag\(.*\)/\1/'`
	fi
fi
echo "Command is : cd $listener_path"
cd $listener_path
unamestr=`uname`

for f in $( adrci exec="show homes" | grep -v "ADR Homes:" | grep "listener" | grep -v "host" );
do
	echo "Start Rotate $listener_path$f/trace"
	ls_name=`echo $listener_path$f | awk '{n=split($0,A,"/"); print A[n]}'`
	echo "Listener name is : $ls_name"
	cd $listener_path$f/trace
	cp $ls_name.log $ls_name.log.$(date +%Y%m%d%H%M%S)
	cat /dev/null > $ls_name.log

	echo "Start Purging at $(date)";
	find $listener_path$f/trace -mtime +30 -exec rm -f {} \;
done

# Rotate Local Listener log file
local_listener_path=`lsnrctl status listener | grep "Listener Log File" | awk '{ print $4 }' | sed -e 's/\(.*\)diag\(.*\)/\1/'`
echo "Command is : cd $local_listener_path"
cd $local_listener_path
f_l=`adrci exec="show homes" | grep -v "ADR Homes:" | grep "listener*" | grep -v "host" | head -1`
echo "Start Purging Local $local_listener_path$f_l/trace"
cd $local_listener_path$f_l/trace
cp listener.log listener.log.$(date +%Y%m%d%H%M%S)
cat /dev/null > listener.log

echo "Start Purging at $(date)";
find $local_listener_path$f_l/trace -mtime +30 -exec rm -f {} \;
echo "---END---"

chmod +x /scripts/purgeListenerLogs.sh

crontab дээр тааруулж өгнө:
50 23 * * * /scripts/purgeListenerLogs.sh >> /scripts/purgeListenerLogs.log 2>&1

Дээрх байдалаар тохируулвал listener log -ыг өдөр болгон rotate хийж сүүлийн 30 хоногийн log -ыг үлдээгээд устгаж болно.