-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcreateDBConfig.py
executable file
·123 lines (107 loc) · 3.8 KB
/
createDBConfig.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#!/usr/bin/python
#
import os
import sys
import errno
import json
import getopt
import oracle_utils
def print_usage():
print("Usage: " + sys.argv[0] + " --dir /config/dir --sid ORACLE_SID")
sys.exit(1)
def mkdir_p(path):
try:
os.makedirs(path)
except OSError as exc:
if exc.errno == errno.EEXIST and os.path.isdir(path):
pass
else:
raise
def main():
options = []
remainder = []
cfgdir = None
orasid = None
quietmode = False
dbconfig = {'instance': {},
'database': {},
'datafiles': [],
'tempfiles': [],
'containers': [],
'log': [],
'logfile': [],
'archive': []}
try:
options, remainder = getopt.getopt(sys.argv[1:], "hqd:s:", ["dir=", "sid=", "quiet"])
except getopt.GetoptError as e:
print("Invalid arguments: %s" % str(e))
print_usage()
for opt, arg in options:
if opt in ('-h'):
print_usage()
elif opt in ('-d', '--dir'):
cfgdir = arg
elif opt in ('-s', '--sid'):
orasid = arg
elif opt in ('-q', '--quiet'):
quietmode = True
if not cfgdir or not orasid:
print_usage()
if not os.path.isdir(cfgdir + '/config'):
try:
mkdir_p(cfgdir + '/config')
except OSError as e:
print("Error: %s" % e)
sys.exit(1)
os.environ['ORACLE_SID'] = orasid
sql_session = oracle_utils.sqlplus()
sql_session.start()
instance = sql_session.run_query('select * from v$instance;')
database = sql_session.run_query('select * from v$database;')
datafiles = sql_session.run_query('select * from v$datafile;')
tempfiles = sql_session.run_query('select * from v$tempfile;')
log = sql_session.run_query('select * from v$log;')
logfile = sql_session.run_query('select * from v$logfile;')
archive = sql_session.run_query('select * from v$archive_dest where destination is not null;')
if database['results'][0]['cdb']:
if database['results'][0]['cdb'] == "YES":
containers = sql_session.run_query('select * from v$containers;')
sql_session.end()
dbconfig['instance'].update(instance['results'][0])
dbconfig['database'].update(database['results'][0])
for x in range(len(datafiles['results'])):
dbconfig['datafiles'].append(datafiles['results'][x])
for x in range(len(tempfiles['results'])):
dbconfig['tempfiles'].append(tempfiles['results'][x])
if database['results'][0]['cdb']:
if database['results'][0]['cdb'] == "YES":
for x in range(len(containers['results'])):
dbconfig['containers'].append(containers['results'][x])
for x in range(len(log['results'])):
dbconfig['log'].append(log['results'][x])
for x in range(len(logfile['results'])):
dbconfig['logfile'].append(logfile['results'][x])
if len(archive['results']) != 0:
for x in range(len(archive['results'])):
dbconfig['archive'].append(archive['results'][x])
dbconfig_file = cfgdir + '/config/' + dbconfig['database']['db_unique_name'] + '.json'
try:
with open(dbconfig_file, 'w') as configSaveFile:
json.dump(dbconfig, configSaveFile, indent=4)
configSaveFile.write("\n")
configSaveFile.close()
except OSError as e:
print("Could not write config file: %s" % e)
sys.exit(1)
if quietmode:
print(dbconfig_file)
else:
print("DB %s configuration file saved at %s" % (dbconfig['database']['db_unique_name'], dbconfig_file))
if __name__ == '__main__':
try:
main()
except SystemExit as e:
if e.code == 0:
os._exit(0)
else:
os._exit(e.code)