微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于清理 listener.ora 文件的 Shell 脚本

如何解决用于清理 listener.ora 文件的 Shell 脚本

我们有listener.ora文件如下


[oracle@orahow admin]$ more listener.ora
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = host-ip-address)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = extproc))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = extproc)
      (ORACLE_HOME = /data/oracle/app/product/11.2.0.4/dbhome_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_dbnAME = db11g.domain.com)
      (ORACLE_HOME = /data/oracle/app/product/11.2.0.4/dbhome_1)
      (SID_NAME = db11g)
    )
    (SID_DESC =
      (GLOBAL_dbnAME = db12c.domain.net)
      (ORACLE_HOME = /data/oracle/app/product/12.2.0.1/dbhome_1)
      (SID_NAME = db12c)
    )
    (SID_DESC =
      (GLOBAL_dbnAME = db12c.domain.net)
      (ORACLE_HOME = /data/oracle/app/product/12.2.0.1/dbhome_1)
      (SID_NAME = db12c_DGMGRL)
    )
    (SID_DESC =
      (GLOBAL_dbnAME = db18c.something)
      (ORACLE_HOME = /data/oracle/app/product/18.2.0.1/dbhome_1)
      (SID_NAME = db18c_DGMGRL)
    )  )

INBOUND_CONNECT_TIMEOUT_LISTENER =0

我想从文件中专门删除这个特定的块。

(SID_DESC =
  (GLOBAL_dbnAME = db12c.domain.net)
  (ORACLE_HOME = /data/oracle/app/product/12.2.0.1/dbhome_1)
  (SID_NAME = db12c)
)

需要有关 unix 命令/shell 脚本的帮助以在 oracle 数据库停用后删除确切的块...

解决方法

sed

sed 删除具有匹配模式 db12c) 的行以及前 3 行和后 1 行

 sed -n "1N;2N;3N;/db12c)/{N;d};P;N;D" listener.ora > listenerdel.ora

使用上面的代码将其写入一个新文件使用以下代码修改现有文件:

sed -in "1N;2N;3N;/db12c)/{N;d};P;N;D" listener.ora

请参考这篇文章。 Deleting n lines in both directions and the match in sed?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。