スクリプトを記述するお手伝いをするため、この項では検出された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