oracle主机名的脚本,一个开启Oracle服务和更改主机名的脚本-Oracle
一個(gè)開(kāi)啟Oracle服務(wù)和更改主機(jī)名的腳本
真不知道該起一個(gè)什么題目,這是昨天數(shù)據(jù)庫(kù)老師提出的問(wèn)題。由于實(shí)驗(yàn)室的機(jī)器都裝了還原卡,每次開(kāi)機(jī)或重啟都會(huì)回到初始狀態(tài),所以數(shù)庫(kù)的listener.ora、tnsnames.ora文件里的host不是本機(jī)的計(jì)算機(jī)名,每次都需要手動(dòng)修改,很麻煩。所需要寫一個(gè)腳本來(lái)自動(dòng)化的完成這個(gè)任務(wù)。第一次寫技術(shù)博客,不知道問(wèn)題描述清楚了沒(méi)有。
我分是兩部分完成的,開(kāi)啟服務(wù)和獲取主機(jī)名是用批處理命令,然后把主機(jī)名作為參數(shù)傳入一個(gè)python腳本來(lái)完成對(duì)文件的修改。下面是批處理部分,文件名start.bat :
01
@echo off
02
rem 這是注釋
03
04
rem 獲取計(jì)算機(jī)名
05
python update.py %computername%
06
07
rem 開(kāi)啟Oracle服務(wù)
08
net start OracleServiceORCL
09
net start OracleOraDb10g_home1TNSListener
10
11
pause
update.py:
01
#coding=utf-8
02
import sys
03
04
print u"計(jì)算機(jī)名:"
05
print sys.argv[1]
06
07
print u"見(jiàn)證奇跡的時(shí)刻。。。"
08
09
#修改主機(jī)名
10
def update_file(path,old_name,new_name):
11
"""
12
python 不能直接修改文本的內(nèi)容,嘗試了幾種方法,發(fā)現(xiàn)下面的方法比較好。
13
先取出文件的內(nèi)容,查找替換計(jì)算機(jī)名,重寫寫入覆蓋原來(lái)的文件。
14
注意:用 w 或 w+ 方式打開(kāi)文件時(shí)可以寫入,如果文件名存在,會(huì)先清除原來(lái)的內(nèi)容。
15
"""
16
file = open(path,'r+')
17
content = file.read()
18
content = content.replace(old_name, new_name)
19
file.close()
20
file = open(path,'w+')
21
file.write(content)
22
file.close()
23
return
24
25
#三個(gè)文件的路徑
26
path1 = 'C:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/listener.ora'
27
path2 = 'C:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/tnsnames.ora'
28
path3 = 'C:/oracle/product/10.2.0/client_1/NETWORK/ADMIN/tnsnames.ora'
29
30
#文件里的計(jì)算機(jī)名和本機(jī)的計(jì)算機(jī)名
31
old_name = 'sdwh119'
32
new_name = sys.argv[1]
33
34
update_file(path1, old_name, new_name)
35
update_file(path2, old_name, new_name)
36
update_file(path3, old_name, new_name)
后來(lái)發(fā)現(xiàn)實(shí)驗(yàn)室里雖然都有python,但是環(huán)境變量沒(méi)有配置,所以每次開(kāi)機(jī)還要先配置python的環(huán)境變量:“C:\Python27;”。兩個(gè)腳本都很簡(jiǎn)單,但是也不是一下就寫出來(lái)的。批處理的內(nèi)容都是現(xiàn)學(xué)現(xiàn)賣。
下面是一個(gè)同學(xué)完全使用批處理的做法,現(xiàn)在還是有幾個(gè)符號(hào)看不懂,也不想懂了:
01
@echo off
02
setlocal enabledelayedexpansion
03
cd\
04
cd oracle\product\10.2.0\db_1\NETWORK\ADMIN
05
for /f "delims=" %%a in (tnsnames.ora) do (
06
set aa=%%a
07
set aa=!aa:sdwh119=%computername%!
08
echo !aa!>>temp.txt
09
)
10
del tnsnames.ora
11
ren temp.txt tnsnames.ora
12
for /f "delims=" %%a in (listener.ora) do (
13
set aa=%%a
14
set aa=!aa:sdwh119=%computername%!
15
echo !aa!>>temp.txt
16
)
17
del listener.ora
18
ren temp.txt listener.ora
19
cd\
20
cd oracle\product\10.2.0\client_1\NETWORK\ADMIN
21
for /f "delims=" %%a in (tnsnames.ora) do (
22
set aa=%%a
23
set aa=!aa:sdwh119=%computername%!
24
echo !aa!>>temp.txt
25
)
26
del tnsnames.ora
27
ren temp.txt tnsnames.ora
28
net start OracleServiceORCL
29
net start OracleOraDb10g_home1TNSListener
總結(jié)
以上是生活随笔為你收集整理的oracle主机名的脚本,一个开启Oracle服务和更改主机名的脚本-Oracle的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 及贷是不是不能用了 及贷不能借了吗
- 下一篇: C语言进制的格式字符,GB汉字文件转换成