基本的に私はOracle DBAです。プライマリデータベースからスタンバイデータベースに切り替える作業があり、tns接続エントリを含むファイルでtnsエントリ(ホスト名)をtnsからtnsにsape-scan
変更する必要があります。sapi-scan
tnsnames.ora
SAP_PROD
GOLD_PROD
EVENTS_SAP
例:
SAP_PROD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = sape-scan.walmart.net)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = SAP)
)
)
tnsエントリがSAP_PRODであることを確認したら、sape-scanをsapi-scanに変更する必要があります。
ベストアンサー1
別のオプションはsedを使用することです。
sed -re '/^(SAP_PROD|GOLD_PROD|EVENTS_SAP) =/,/^$/s/HOST = sape-scan/HOST = sapi-scan/' tnsnames.ora
- 正規表現置換の
-r
ために拡張正規表現()を開く|
- 次の引数(引用符付きテキスト)を評価する式として扱います(
-e
)。 - 行の先頭に「SAP_PROD」、「GOLD_PROD」、または「EVENTS_SAP」で囲まれた行の間に空行が表示されるまで、スペースと等号が続きます。
- 「HOST = sape-scan」テキストを検索して「HOST = sapi-scan」テキストに置き換えます。
- tnsnames.ora ファイルから
上記のバージョンでは、以下を使用して変更を非破壊的にテストできます。
sed ... tnsnames.ora > tnsnames.new
diff tnsnames.ora tnsnames.new
…そして何が変わったのか見てください。多くの sed 実装では、-i
フラグを追加することで「所定の位置」を変更できます。