600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > oracle主机名的脚本 一个开启Oracle服务和更改主机名的脚本-Oracle

oracle主机名的脚本 一个开启Oracle服务和更改主机名的脚本-Oracle

时间:2022-12-04 05:01:21

相关推荐

oracle主机名的脚本 一个开启Oracle服务和更改主机名的脚本-Oracle

一个开启Oracle服务和更改主机名的脚本

真不知道该起一个什么题目,这是昨天数据库老师提出的问题。由于实验室的机器都装了还原卡,每次开机或重启都会回到初始状态,所以数库的listener.ora、tnsnames.ora文件里的host不是本机的计算机名,每次都需要手动修改,很麻烦。所需要写一个脚本来自动化的完成这个任务。第一次写技术博客,不知道问题描述清楚了没有。

我分是两部分完成的,开启服务和获取主机名是用批处理命令,然后把主机名作为参数传入一个python脚本来完成对文件的修改。下面是批处理部分,文件名start.bat :

01

@echo off

02

rem 这是注释

03

04

rem 获取计算机名

05

python update.py %computername%

06

07

rem 开启Oracle服务

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"计算机名:"

05

print sys.argv[1]

06

07

print u"见证奇迹的时刻。。。"

08

09

#修改主机名

10

def update_file(path,old_name,new_name):

11

"""

12

python 不能直接修改文本的内容,尝试了几种方法,发现下面的方法比较好。

13

先取出文件的内容,查找替换计算机名,重写写入覆盖原来的文件。

14

注意:用 w 或 w+ 方式打开文件时可以写入,如果文件名存在,会先清除原来的内容。

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

#三个文件的路径

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

#文件里的计算机名和本机的计算机名

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)

后来发现实验室里虽然都有python,但是环境变量没有配置,所以每次开机还要先配置python的环境变量:“C:\Python27;”。两个脚本都很简单,但是也不是一下就写出来的。批处理的内容都是现学现卖。

下面是一个同学完全使用批处理的做法,现在还是有几个符号看不懂,也不想懂了:

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。