2017-09-25 22:00:31 Dreamer_good 阅读数 930

注意空格

su - oracle  //进去oracle用户下

sqlplus / as sysdba //打开sqlplus并连接(相同:sqlplus /nolog ; connect /as sysdba)

shutdown immediate  //停止(启动:startup)

exit //退出sqlplus

lsnrctl stop //停止监听(启动监听:lsnrctl start)


reboot重启linux/unix 系统

2019-11-30 12:35:08 HuLuGuai 阅读数 3

#if DEBUG
    //Win退出程序的监听
    [System.Runtime.InteropServices.DllImport("Kernel32")]
    private static extern bool SetConsoleCtrlHandler(EventHandler handler, bool add);

    private delegate bool EventHandler(CtrlType sig);
    static EventHandler _handler;

    enum CtrlType
    {
        CTRL_C_EVENT = 0,
        CTRL_BREAK_EVENT = 1,
        CTRL_CLOSE_EVENT = 2,
        CTRL_LOGOFF_EVENT = 5,
        CTRL_SHUTDOWN_EVENT = 6
    }

    private static bool Handler(CtrlType sig)
    {
        log4net.LogManager.GetLogger("WorldServer").Debug("-*** 退 出 进 程 ***-");
        WorldServer.Instance().SaveAllPlayerData();
        //do your cleanup here
        Thread.Sleep(1000); //simulate some cleanup delay
        
        //shutdown right away so there are no lingering threads
        Environment.Exit(-1);

        return true;
    }
    //win退出程序的监听事件
    void Exit()
    {
        _handler += new EventHandler(Handler);
        SetConsoleCtrlHandler(_handler, true);
    }
#else
//Unix退出程序的监听
public class UnixExitSignal
{
    UnixSignal[] signals = new UnixSignal[]{
        new UnixSignal(Mono.Unix.Native.Signum.SIGTERM),
        new UnixSignal(Mono.Unix.Native.Signum.SIGINT),
        new UnixSignal(Mono.Unix.Native.Signum.SIGUSR1)
    };

    public UnixExitSignal()
    {
        log4net.LogManager.GetLogger("WorldServer").Debug("-*** UnixExitSignal ***-");
        Task.Factory.StartNew(() =>
        {
            int index = UnixSignal.WaitAny(signals, -1);
            log4net.LogManager.GetLogger("WorldServer").Debug("-*** 退 出 进 程 ***-Linux");
            WorldServer.Instance().SaveAllPlayerData();
        });
    }
}
    //Unix退出程序的监听
    void Exit()
    {
        UnixExitSignal unixExitSignal = new UnixExitSignal();
    }
#endif
2017-12-13 15:39:43 cdshrewd 阅读数 5048


随着Oracle数据库的运行,监听日志如果不处理会越来越大,当日志过大会影响监听进程的稳定,特别是windows平台,当日志大小达到4G,可能出现连接不正常。因此,建议定期对日志进行转储,由于监听进程会持有监听日志文件的句柄,因此,不建议直接清空或删除,需要采用临时关闭监听日志记录功能,然后转储,然后再打开的方式进行处理。以下将分别就windows和类Unix平台进行介绍。

1        Windows环境

  1. 确认监听名称

打开计算机管理->服务,然后找到监听对应的服务,示例如下:


这里为了示例,特意建立了两个监听,服务名分别为:OracleOraDb11g_home1TNSListenerOracleOraDb11g_home1TNSListenerLISTENER1。默认的监听名称是LISTENER,当使用默认监听时,服务名在TNSListener后面为空,如果非默认监听名称,那么服务名后面会添加监听名称。这里就可以看到包含两个监听:LISTENERLISTENER1.除此之外,也可以通过%ORACLE_HOME%\network\admin\listener.ora文件确认监听名称。示例如下:



2.确认监听日志位置


确认了监听的名称,接下来就是确认监听日志的位置。通过安装ORACLE软件的用户在cmd中执行lsnrctl status 监听名称来获取位置



Oracle监听日志有两种格式,一种是xml格式,一种是文本文件格式。xml格式的日志是10M一个,所以不存在单个文件过大的问题。因此我们需要关注的是文本文件格式的监听日志文件。监听状态输出中显示的是xml格式的文件位置,文本文件格式的日志文件所在的目录位于xml格式日志所在位置上层目录下的trace目录下,比如这里xml文件位于:C:\app\Administrator\diag\tnslsnr\WIN2008\listener\alert目录下,那么文本文件格式的日志就位于C:\app\Administrator\diag\tnslsnr\WIN2008\listener\trace下。我们这里对应的文件是:C:\app\Administrator\diag\tnslsnr\WIN2008\listener\trace\listener.log.如果该目录存在多个文件,只需要通过更新时间基本上就可以确定当前在使用的文件。

3.停止监听日志记录功能


停止记录监听日志,需要通过lsnrctl来进行设置,命令如下:


lsnrctl

set current_listener监听名称

set log_status off

exit


以下是示例截图:



4.转储文件


转储文件可以切换到监听日志文件位置,直接重命名(如果确认不需要保留历史日志记录,可以删除)。



5.重新打开监听日志记录功能


重新打开日志记录功能,文件会自动生成。


lsnrctl

set current_listener监听名称

set log_status on

exit


以下是示例截图:



6.确认监听日志记录功能正常


确认文件已生成。




2  Unix环境


  1. 确认监听名称


Unix环境包括AIXHP-UnixLinux等,该文档描述操作原则上适用这些平台。


确认监听名称,可以通过进程进行确认,命令如下:


ps -ef|grep lsnr|grep -v grep


示例如下:




这里可以看到该系统已grid用户启动了两个监听,名称分别是:LISTENERLISTENER_SCAN1.

2.确认监听日志位置


确认了监听的名称,接下来就是切换到启动监听的用户,确认监听日志的位置。通过启动监听的用户执行lsnrctlstatus监听名称来获取位置


su - grid

lsnrctl status LISTENER


示例截图如下:


Oracle监听日志有两种格式,一种是xml格式,一种是文本文件格式。xml格式的日志是10M一个,所以不存在单个文件过大的问题。因此我们需要关注的是文本文件格式的监听日志文件。监听状态输出中显示的是xml格式的文件位置,文本文件格式的日志文件所在的目录位于xml格式日志所在位置上层目录下的trace目录下,比如这里xml文件位于:/u01/app/grid_base/diag/tnslsnr/rac1/listener/alert目录下,那么文本文件格式的日志就位于/u01/app/grid_base/diag/tnslsnr/rac1/listener/trace下。我们这里对应的文件是:C:\app\Administrator\diag\tnslsnr\WIN2008\listener\trace\listener.log.如果该目录存在多个文件,只需要通过更新时间基本上就可以确定当前在使用的文件。

 

3.停止监听日志记录功能


停止记录监听日志,需要通过lsnrctl来进行设置,命令如下:


lsnrctl

set current_listener监听名称

set log_status off

exit


以下是示例截图:



4.转储文件


转储文件可以切换到监听日志文件位置,直接重命名(如果确认不需要保留历史日志记录,可以删除)。



5.重新打开监听日志记录功能


重新打开日志记录功能,文件会自动生成。


lsnrctl

set current_listener监听名称

set log_status on

exit


以下是示例截图:



6.确认监听日志记录功能正常


确认文件已生成。

2009-09-11 18:04:00 Moodys_Sean 阅读数 321

进入$ORACLE_HOME/bin

 

运行 lsnrctl stop 停止监听服务器

 

sqlplus / as sysdba

 

shutdown immedate

 

关闭数据库

2004-11-30 22:26:00 myaniu 阅读数 1305

需求,关闭linux、unix需要root权限,但root权限又不能给别人。
如果需要别人关机怎么办?
写一个程序监听某个端口,接受用户指令。然后关机。
服务器端代码如下:
#!/usr/bin/env python
import socket
import os

HOST = ''
PORT = 9999 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
while 1:
    conn, addr = s.accept()
    if cmp('192.168.1.111',addr[0])==0:
        print 'shutdonw now'
        os.system('/sbin/shutdown -h now')
        break
conn.close()
当然这个程序还不安全。所以要加上防火墙的配合,比如只允许某个ip的用户关机。
还可以从数据库,或者文件中读取允许的用户列表,还可以加上用户名密码验证。

Oracle小结--2

阅读数 749

unix socket编程API

阅读数 69

没有更多推荐了,返回首页