スクリプトを記述するお手伝いをするため、この項では検出されたOracle Databaseターゲットを昇格するサンプル・スクリプトを分析します。
データベースがUIを使用してインスタンスをリクエストする各ユーザーに追加される企業環境を考慮してください。ほとんどの企業は、データベースの作成、データ・ファイルの追加などのプロセス全体を自動化します。自動化プロセスの一部として、最後にこのスクリプトを追加できます。
例4-5は、データベースを自動的に昇格し、Enterprise Managerでモニターできるようにしています。これにより、Enterprise Manager Cloud Control UIにログインしてデータベースを手動で昇格する必要がなくなります。
注意:
表4-3での行番号は、説明目的でのみ提供されています。コピー対応のスクリプトは、「サンプル・スクリプト」の「例A-7」を参照してください。
例4-5 promote_discovered_dbs.py
#Disclaimer
#EXCEPT WHERE EXPRESSLY PROVIDED OTHERWISE, THE SITE, AND ALL CONTENT PROVIDED ON
#OR THROUGH THE SITE, ARE PROVIDED ON AN "AS IS" AND "AS AVAILABLE" BASIS. ORACLE
#EXPRESSLY DISCLAIMS ALL WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED,
#INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS
#FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT WITH RESPECT TO THE SITE AND ALL
#CONTENT PROVIDED ON OR THROUGH THE SITE. ORACLE MAKES NO WARRANTY THAT: (A) THE
#SITE OR CONTENT WILL MEET YOUR REQUIREMENTS; (B) THE SITE WILL BE AVAILABLE ON AN
#UNINTERRUPTED, TIMELY, SECURE,OR ERROR-FREE BASIS; (C) THE RESULTS THAT MAY BE
#OBTAINED FROM THE USE OF THE SITE OR ANY CONTENT PROVIDED ON OR THROUGH THE SITE
#WILL BE ACCURATE OR RELIABLE; OR (D) THE QUALITY OF ANY CONTENT PURCHASED OR
#OBTAINED BY YOU ON OR THROUGH THE SITE WILL MEET YOUR EXPECTATIONS.
#ANY CONTENT ACCESSED, DOWNLOADED OR OTHERWISE OBTAINED ON OR THROUGH THE USE OF
#THE SITE IS USED AT YOUR OWN DISCRETION AND RISK. ORACLE SHALL HAVE NO
#RESPONSIBILITY FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR LOSS OF DATA THAT
#RESULTS FROM THE DOWNLOAD OR USE OF CONTENT.
#ORACLE RESERVES THE RIGHT TO MAKE CHANGES OR UPDATES TO, AND MONITOR THE USE OF,
#THE SITE AND CONTENT PROVIDED ON OR THROUGH THE SITE AT ANY TIME WITHOUT NOTICE.
1 from emcli.exception import VerbExecutionError
2 import sys
3
4 alltargets=False
5 targetparms=0
6 uname=''
7 pword=''
8 url=''
9 monitor_pw=''
10
11 def helpUsage():
12 print 'Usage: promote_discovered_dbs.py [-help]'
13 print '[-all] Add all discovered Single Instance DBs'
14 print '[-targets <target1:target2:...] Add only targets listed'
15 sys.exit()
16
17 for i in range(len(sys.argv)):
18 if sys.argv[i] in ("-help"):
19 helpUsage()
20 elif sys.argv[i] in ("-targets"):
21 if i+1 < len(sys.argv):
22 targetparms = sys.argv[i+1]
23 else:
24 print 'Usage: promote_discovered_dbs.py [-help]'
25 print '[-all] Add all discovered Single Instance DBs'
26 print '[-targets <target1:target2:...] Add only targets listed'
27 sys.exit()
28 elif sys.argv[i] in ("-url"):
29 if i+1 < len(sys.argv):
30 url = sys.argv[i+1]
31 elif sys.argv[i] in ("-username"):
32 if i+1 < len(sys.argv):
33 uname = sys.argv[i+1]
34 elif sys.argv[i] in ("-password"):
35 if i+1 < len(sys.argv):
36 pword = sys.argv[i+1]
37 elif sys.argv[i] in ("-monitor_pw"):
38 if i+1 < len(sys.argv):
39 monitor_pw = sys.argv[i+1]
40 elif sys.argv[i] in ("-all"):
41 alltargets = True
42
43 # Make sure user did not specify target list and all targets.
44 if alltargets<>0 and targetparms <>0:
45 print 'Cannot specify target list and all switch'
46 print 'Usage: promote_discovered_dbs.py -url <EM URL> -username <username> -password <password> -monitor_pw <password>'
47 print '[-all] Add all discovered SI Databses'
48 print '[-targets <target1:target2:...] Add only list targets'
49 print '[-help]'
50 sys.exit()
51
52 if len(uname)==0 or len(pword)==0 or len(url)==0:
53 print 'Missing required arguments (-url, -username, -password)'
54 print 'Usage: promote_discovered_dbs.py -url <EM URL> -username <username> -password <password> -monitor_pw <password>'
55 print '[-all] Add all discovered SI Databses'
56 print '[-targets <target1:target2:...] Add only list targets'
57 print '[-help]'
58 sys.exit()
59
60 # Set Connection properties and logon
61 set_client_property('EMCLI_OMS_URL',url)
62 set_client_property('EMCLI_TRUSTALL','true')
63 login(username=uname,password=pword)
64
65 cred_str = "UserName:dbsnmp;password:" + monitor_pw + ";Role:Normal"
66
67 if targetparms <> 0:
68 targetparms = targetparms.replace(":",":oracle_database;")+":oracle_database"
69 target_array = get_targets(unmanaged=True,properties=True,targets=targetparms).out()['data']
70 elif alltargets:
71 target_array = get_targets(targets="oracle_database",unmanaged=True,properties=True ).out()['data']
72 else:
73 print 'Missing required arguments (-targets or -all)'
74 helpUsage()
75
76 if len(target_array) > 0:
77 for target in target_array:
78 print 'Adding target ' + target['Target Name'] + '...',
79
80 for host in str.split(target['Host Info'],";"):
81 if host.split(":")[0] == "host":]
82 print host.split(":")[1]
83 try:
84 res1 = add_target(type='oracle_database',name=target['Target Name'],host=host.split(":")[1], credentials=cred_str,properties=target['Properties'])
85 print 'Succeeded'
86 except VerbExecutionError, e:
87 print 'Failed'
88 print e.error()
89 print 'Exit code:'+str(e.exit_code())
90 else:
91 print 'INFO: There are no targets to be promoted. Please verify the targets in Enterprise Manager webpages.'
92