├── README.md ├── obi ├── service │ ├── img │ │ ├── service01.png │ │ ├── service02.png │ │ ├── service03.png │ │ ├── service04.png │ │ └── service01a.png │ ├── sysconfig │ │ └── obiee │ ├── README.md │ └── init.d │ │ └── obiee ├── installs │ └── response_files │ │ └── 11.1.1.7 │ │ ├── deinstall_responsefiles │ │ ├── deinstall_oraclecommonhome.rsp │ │ ├── deinstall_oraclehome.rsp │ │ └── deinstall_ASInstances.rsp │ │ ├── in-place-upgrade │ │ ├── Linux │ │ │ ├── 1_swonly.rsp │ │ │ ├── 3_config_ass.rsp │ │ │ └── 2_psa.rsp │ │ └── Windows │ │ │ ├── 1_swonly.rsp │ │ │ ├── 3_config_ass.rsp │ │ │ └── 2_psa.rsp │ │ └── install-and-configure │ │ ├── linux_11.1.1.7.rsp │ │ └── win_11.1.1.7.rsp ├── config │ └── scm-conf-git.template.xml ├── wlst │ ├── bounce_BI.snippet.py │ ├── check_app_state.py │ ├── add_users_via_wlst.txt │ ├── add_users.py │ ├── set_webcat.py │ ├── cache_set.py │ ├── enable_ut_sa.py │ └── deploy_rpd.py ├── security_audit │ ├── security_compare.py │ ├── security_audit.py │ └── templates │ │ ├── audit_results.html │ │ └── no_audit_results.html ├── pull_the_trigger.sh ├── perl │ └── manage_rpd.pl └── alerts │ └── email_component_status.py └── .gitignore /README.md: -------------------------------------------------------------------------------- 1 | A collection of scripts and utilities to make the OBI admin's life easier 2 | -------------------------------------------------------------------------------- /obi/service/img/service01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RittmanMead/scripts/HEAD/obi/service/img/service01.png -------------------------------------------------------------------------------- /obi/service/img/service02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RittmanMead/scripts/HEAD/obi/service/img/service02.png -------------------------------------------------------------------------------- /obi/service/img/service03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RittmanMead/scripts/HEAD/obi/service/img/service03.png -------------------------------------------------------------------------------- /obi/service/img/service04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RittmanMead/scripts/HEAD/obi/service/img/service04.png -------------------------------------------------------------------------------- /obi/service/img/service01a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RittmanMead/scripts/HEAD/obi/service/img/service01a.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .DS_Store 3 | 4 | obi/installs/response_files/11.1.1.7/.DS_Store 5 | 6 | obi/installs/response_files/11.1.1.7/in-place-upgrade/.DS_Store 7 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/deinstall_responsefiles/deinstall_oraclecommonhome.rsp: -------------------------------------------------------------------------------- 1 | [ENGINE] 2 | 3 | #DO NOT CHANGE THIS. 4 | Response File Version=1.0.0.0.0 5 | 6 | [GENERIC] 7 | 8 | #Identifies the if the Instance deinstallation is valid or not 9 | DEINSTALL_IN_ASINSTANCE_MODE=false 10 | 11 | 12 | [SYSTEM] 13 | 14 | 15 | [APPLICATIONS] 16 | 17 | 18 | [RELATIONSHIPS] 19 | 20 | 21 | -------------------------------------------------------------------------------- /obi/config/scm-conf-git.template.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | git add ${file} 6 | 7 | 8 | git add ${file} 9 | 10 | 11 | git rm --force ${filelist} 12 | 13 | 14 | git mv -f ${from} ${to} 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/deinstall_responsefiles/deinstall_oraclehome.rsp: -------------------------------------------------------------------------------- 1 | [ENGINE] 2 | 3 | #DO NOT CHANGE THIS. 4 | Response File Version=1.0.0.0.0 5 | 6 | [GENERIC] 7 | 8 | #Identifies the if the Instance deinstallation is valid or not 9 | DEINSTALL_IN_ASINSTANCE_MODE=false 10 | 11 | #Specify true for Oracle Home deinstall 12 | OH_HOME_DEINSTALL=true 13 | 14 | #Specify true for Managed Instance deinstall 15 | DOMAIN_MANAGED_ASINSTANCE_DEINSTALL=false 16 | 17 | #Specify true for Un-managed Instance deinstall 18 | UNMANAGED_ASINSTANCE_DEINSTALL=false 19 | 20 | 21 | [SYSTEM] 22 | 23 | 24 | [APPLICATIONS] 25 | 26 | 27 | [RELATIONSHIPS] 28 | 29 | 30 | -------------------------------------------------------------------------------- /obi/wlst/bounce_BI.snippet.py: -------------------------------------------------------------------------------- 1 | # =================================================================== 2 | # Developed by RNM @ Rittman Mead 3 | # Absolutely no warranty, use at your own risk 4 | # Please include this header in any copy or reuse of the script you make 5 | # ===================================================================# 6 | 7 | # Restart BI Server 8 | cd ('..') 9 | cd ('oracle.biee.admin:oracleInstance=instance1,type=BIDomain.BIInstanceDeployment.BIComponent,biInstance=coreapplication,process=coreapplication_obis1,group=Service') 10 | 11 | print 'Stopping the BI server' 12 | params = jarray.array([], java.lang.Object) 13 | signs = jarray.array([], java.lang.String) 14 | invoke('stop', params, signs) 15 | 16 | BIServerStatus = get('Status') 17 | print 'BI ServerStatus : ' +BIServerStatus 18 | 19 | print 'Starting the BI server' 20 | params = jarray.array([], java.lang.Object) 21 | signs = jarray.array([], java.lang.String) 22 | invoke('start', params, signs) 23 | 24 | BIServerStatus = get('Status') 25 | print 'BI ServerStatus : ' +BIServerStatus 26 | 27 | # Exit 28 | exit() 29 | 30 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/deinstall_responsefiles/deinstall_ASInstances.rsp: -------------------------------------------------------------------------------- 1 | [ENGINE] 2 | 3 | #DO NOT CHANGE THIS. 4 | Response File Version=1.0.0.0.0 5 | 6 | [GENERIC] 7 | 8 | #Identifies the if the Instance deinstallation is valid or not 9 | DEINSTALL_IN_ASINSTANCE_MODE=false 10 | 11 | #Specify true for Oracle Home deinstall 12 | OH_HOME_DEINSTALL=false 13 | 14 | #Specify true for Managed Instance deinstall 15 | DOMAIN_MANAGED_ASINSTANCE_DEINSTALL=true 16 | 17 | #Specify true for Un-managed Instance deinstall 18 | UNMANAGED_ASINSTANCE_DEINSTALL=false 19 | 20 | # 21 | DEINSTALL INSTANCE LIST= 22 | 23 | 24 | [SYSTEM] 25 | 26 | 27 | [APPLICATIONS] 28 | 29 | 30 | [RELATIONSHIPS] 31 | 32 | #Specify the Domain Host Name 33 | DOMAIN_HOST_NAME=exalytics-hostname.domain.com 34 | 35 | #Specify the Domain Port Number 36 | DOMAIN_PORT_NO=7001 37 | 38 | #Specify the Domain User Name 39 | DOMAIN_USER_NAME=weblogic 40 | 41 | #Specify the Domain Password 42 | DOMAIN_USER_PASSWORD= 43 | 44 | #Specify the list of Instance to be deinstalled in the following format. InstanceName^LocationOfInstance$InstanceName^LocationOfInstance$ 45 | MANAGED_INSTANCE_LIST=instance1^/u01/app/oracle/product/fmw/instances/instance1$ 46 | 47 | 48 | -------------------------------------------------------------------------------- /obi/service/sysconfig/obiee: -------------------------------------------------------------------------------- 1 | # The OS owner under which OBIEE should be managed 2 | ORACLE_OWNR=oracle 3 | # The FMW Home folder 4 | FMW_HOME=/u01/app/oracle/product/fmw 5 | # Folder in which to store log files - change if you don't want them in /var/log 6 | LOG_PATH=/var/log 7 | # lsof path 8 | LSOF_PATH=/usr/sbin/lsof 9 | 10 | # ------------------------------------------------------------------- 11 | # Settings below here typically require no change 12 | # ------------------------------------------------------------------- 13 | BIEE_DOMAIN=bifoundation_domain # Domain name 14 | BIEE_INSTANCE=instance1 # Instance name 15 | WLS_MANAGED_SERVER=bi_server1 # Server name 16 | WLS_PATH=$FMW_HOME/wlserver_10.3/server/bin 17 | WLS_DOMAIN_PATH=$FMW_HOME/user_projects/domains/$BIEE_DOMAIN 18 | WLS_DOMAIN_BIN=$WLS_DOMAIN_PATH/bin 19 | ORACLE_INSTANCE=$FMW_HOME/instances/$BIEE_INSTANCE 20 | ANALYTICS_EAR=$FMW_HOME/Oracle_BI1/bifoundation/jee/analytics.ear 21 | WL_TMP_MANIFEST=$FMW_HOME/user_projects/domains/bifoundation_domain/servers/bi_server1/tmp/_WL_user/analytics_11.1.1/7dezjl/war/META-INF/MANIFEST.MF 22 | BIEE_VERSION_FILE=$FMW_HOME/Oracle_BI1/bifoundation/version.txt 23 | 24 | ADMIN_SERVER_START_TIMEOUT=300 25 | MANAGED_SERVER_START_TIMEOUT=600 26 | NODE_MANAGER_START_TIMEOUT=60 27 | OPMN_START_TIMEOUT=120 28 | ADMIN_SERVER_STOP_TIMEOUT=300 29 | MANAGED_SERVER_STOP_TIMEOUT=300 30 | NODE_MANAGER_STOP_TIMEOUT=60 31 | OPMN_STOP_TIMEOUT=120 32 | -------------------------------------------------------------------------------- /obi/wlst/check_app_state.py: -------------------------------------------------------------------------------- 1 | # =================================================================== 2 | # Developed by RNM @ Rittman Mead 3 | # Absolutely no warranty, use at your own risk 4 | # Please include this header in any copy or reuse of the script you make 5 | # ===================================================================# 6 | 7 | # Check the status of an Application Deployment# Takes five arguments - connection details, plus application name, and server 8 | # RNM 2012-05-01 9 | import sys 10 | import os 11 | # Check the arguments to this script are as expected.# argv[0] is script name.argLen = len(sys.argv)if argLen -1 < 5: print "ERROR: got ", argLen -1, " args." print "USAGE: wlst.sh check_app_state.py WLS_USER WLS_PASSWORD WLS_URL app_name target_server" exit()WLS_USER = sys.argv[1]WLS_PW = sys.argv[2] 12 | WLS_URL = sys.argv[3] 13 | appname = sys.argv[4] 14 | appserver = sys.argv[5] 15 | 16 | print 'Connecting to '+ WLS_URL + ' as user: ' + WLS_USER + ' ...' 17 | 18 | # Connect to WLS 19 | connect(WLS_USER, WLS_PW, WLS_URL); 20 | 21 | # Set Application run time object 22 | try: 23 | nav=getMBean('domainRuntime:/AppRuntimeStateRuntime/AppRuntimeStateRuntime') 24 | state=nav.getCurrentState(appname,appserver) 25 | print "\033[1;32m " + state + "\033[1;m" 26 | except: 27 | print "Error::", sys.exc_info()[0] 28 | objs = jarray.array([], java.lang.Object) 29 | strs = jarray.array([], java.lang.String) 30 | raise 31 | 32 | disconnect() 33 | exit() 34 | -------------------------------------------------------------------------------- /obi/wlst/add_users_via_wlst.txt: -------------------------------------------------------------------------------- 1 | # =================================================================== 2 | # Developed by RNM @ Rittman Mead 3 | # Absolutely no warranty, use at your own risk 4 | # Please include this header in any copy or reuse of the script you make 5 | # ===================================================================# 6 | 7 | 8 | 9 | /app/fmw11115/oracle_common/common/bin/wlst.sh 10 | connect('weblogic','welcome1','t3://rm-oel02:7001') 11 | execfile('create_users.txt') 12 | execfile('create_groups.txt') 13 | execfile('assign_groups.txt') 14 | disconnect() 15 | exit() 16 | 17 | 18 | ==> create_groups.txt <== 19 | atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider('DefaultAuthenticator') 20 | 21 | atnr.createGroup('affiliates','Affiliates') 22 | atnr.createGroup('corporate','Corporate') 23 | 24 | 25 | ==> create_users.txt <== 26 | atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider('DefaultAuthenticator') 27 | 28 | atnr.createUser('fsmith','December11','Fred Smith') 29 | atnr.createUser('jbloggs','December11','Joe Bloggs') 30 | atnr.createUser('brubble','December11','Barney Rubble') 31 | 32 | 33 | ==> assign_groups.txt <==atnr=cmo.getSecurityConfiguration().getDefaultRealm().lookupAuthenticationProvider('DefaultAuthenticator') 34 | 35 | atnr.addMemberToGroup( 'BIConsumers', 'fsmith') 36 | atnr.addMemberToGroup( 'BIConsumers', 'jbloggs') 37 | atnr.addMemberToGroup( 'BIConsumers', 'brubble') 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/in-place-upgrade/Linux/1_swonly.rsp: -------------------------------------------------------------------------------- 1 | [ENGINE] 2 | 3 | #DO NOT CHANGE THIS. 4 | Response File Version=1.0.0.0.0 5 | 6 | [GENERIC] 7 | 8 | #Set this to true if you wish to specify a directory where latest updates are downloaded. This option would use the software updates from the specified directory 9 | SPECIFY_DOWNLOAD_LOCATION=false 10 | 11 | #Set this to true to skip the Software updates 12 | SKIP_SOFTWARE_UPDATES=true 13 | 14 | #If the Software updates are already downloaded and available on your local system, then specify the path to the directory where these patches are available and set SPECIFY_DOWNLOAD_LOCATION to true 15 | SOFTWARE_UPDATES_DOWNLOAD_LOCATION= 16 | 17 | #Install Software and Configure Components for Express Install. Installs and Configures components with default settings. Installs the light-weight WebLogic Server and creates a new domain. 18 | INSTALL_FOR_DEVELOPMENT_TYPE=false 19 | 20 | #Install and Configure Software Components and Applications. Installs binaries in an ORACLE_HOME and configures working instances in an INSTANCE_HOME. 21 | INSTALL_AND_CONFIGURE_TYPE=false 22 | 23 | #Install Software Components and Applications. Installs binaries in an ORACLE_HOME, but do not configure working instances of installed components. 24 | INSTALL_AND_CONFIGURE_LATER_TYPE=true 25 | 26 | #Provide the Oracle Home location. The location has to be the immediate child under the specified Middleware Home location. The Oracle Home directory name may only contain alphanumeric , hyphen (-) , dot (.) and underscore (_) characters, and it must begin with an alphanumeric character. The total length has to be less than or equal to 128 characters. The location has to be an empty directory or a valid BI Oracle Home. 27 | ORACLE_HOME=/u01/app/oracle/product/fmw/Oracle_BI1 28 | 29 | #Provide existing Middleware Home location. 30 | MW_HOME=/u01/app/oracle/product/fmw 31 | 32 | #Application Server choices are WLS, WAS 33 | APPSERVER_TYPE=WLS 34 | 35 | #Provide the Application Server Location. 36 | APPSERVER_LOCATION=/u01/app/oracle/product/fmw 37 | 38 | 39 | [SYSTEM] 40 | 41 | 42 | [APPLICATIONS] 43 | 44 | 45 | [RELATIONSHIPS] 46 | 47 | 48 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/in-place-upgrade/Windows/1_swonly.rsp: -------------------------------------------------------------------------------- 1 | [ENGINE] 2 | 3 | #DO NOT CHANGE THIS. 4 | Response File Version=1.0.0.0.0 5 | 6 | [GENERIC] 7 | 8 | #Set this to true if you wish to specify a directory where latest updates are downloaded. This option would use the software updates from the specified directory 9 | SPECIFY_DOWNLOAD_LOCATION=false 10 | 11 | #Set this to true to skip the Software updates 12 | SKIP_SOFTWARE_UPDATES=true 13 | 14 | #If the Software updates are already downloaded and available on your local system, then specify the path to the directory where these patches are available and set SPECIFY_DOWNLOAD_LOCATION to true 15 | SOFTWARE_UPDATES_DOWNLOAD_LOCATION= 16 | 17 | #Install Software and Configure Components for Express Install. Installs and Configures components with default settings. Installs the light-weight WebLogic Server and creates a new domain. 18 | INSTALL_FOR_DEVELOPMENT_TYPE=false 19 | 20 | #Install and Configure Software Components and Applications. Installs binaries in an ORACLE_HOME and configures working instances in an INSTANCE_HOME. 21 | INSTALL_AND_CONFIGURE_TYPE=false 22 | 23 | #Install Software Components and Applications. Installs binaries in an ORACLE_HOME, but do not configure working instances of installed components. 24 | INSTALL_AND_CONFIGURE_LATER_TYPE=true 25 | 26 | #Provide the Oracle Home location. The location has to be the immediate child under the specified Middleware Home location. The Oracle Home directory name may only contain alphanumeric , hyphen (-) , dot (.) and underscore (_) characters, and it must begin with an alphanumeric character. The total length has to be less than or equal to 128 characters. The location has to be an empty directory or a valid BI Oracle Home. 27 | ORACLE_HOME=c:\oracle\middleware\Oracle_BI1 28 | 29 | #Provide existing Middleware Home location. 30 | MW_HOME=c:\oracle\middleware 31 | 32 | #Application Server choices are WLS, WAS 33 | APPSERVER_TYPE=WLS 34 | 35 | #Provide the Application Server Location. 36 | APPSERVER_LOCATION=c:\oracle\middleware 37 | 38 | 39 | [SYSTEM] 40 | 41 | 42 | [APPLICATIONS] 43 | 44 | 45 | [RELATIONSHIPS] 46 | 47 | 48 | -------------------------------------------------------------------------------- /obi/wlst/add_users.py: -------------------------------------------------------------------------------- 1 | # =================================================================== 2 | # Developed by RNM @ Rittman Mead 3 | # Absolutely no warranty, use at your own risk 4 | # Please include this header in any copy or reuse of the script you make 5 | # ===================================================================# 6 | # RNM 2012-11-26 7 | # Add users to WLS LDAP directory, and add them into groups 8 | # 9 | # This script expects the following arguments: 10 | # 11 | # 1. wls.user (weblogic) 12 | # 2. wls.password () 13 | # 3. wls.url (t3://localhost:7001) 14 | # 4. base ID for users 15 | # 5. Password to use for new users 16 | # 6. Group to assign to the users 17 | # 7. Number of users to create 18 | # 19 | # example usage: 20 | # $ /u01/app/oracle/product/fmw3/oracle_common/common/bin/wlst.sh ./add_users.py weblogic Germanbight03 t3://localhost:7004 TestUser UuJ6Il9JeOd0 BIConsumers 50 21 | # =================================================================== 22 | 23 | import sys 24 | import os 25 | # Check the arguments to this script are as expected. 26 | # argv[0] is script name. 27 | argLen = len(sys.argv) 28 | if argLen -1 < 7: 29 | print "ERROR: got ", argLen -1, " args." 30 | print "USAGE: wlst.sh add_users.py WLS_USER WLS_PASSWORD WLS_URL BASE_NAME PW_TO_ASSIGN GROUP NUMBER_OF_USERS" 31 | exit() 32 | 33 | WLS_USER = sys.argv[1] 34 | WLS_PW = sys.argv[2] 35 | WLS_URL = sys.argv[3] 36 | basename = sys.argv[4] 37 | pw = sys.argv[5] 38 | group = sys.argv[6] 39 | numberofusers = int(sys.argv[7]) 40 | 41 | print WLS_USER, WLS_PW, WLS_URL, basename, pw, group 42 | print 'Connecting to '+ WLS_URL + ' as user: ' + WLS_USER + ' ...' 43 | 44 | # Connect to WLS 45 | connect(WLS_USER, WLS_PW, WLS_URL); 46 | 47 | print 'Adding users' 48 | try: 49 | ix=0 50 | while ix> /tmp/ptt.log 154 | # ----------- 155 | number=`echo $RANDOM % 27 + 1 | bc` 156 | echo $number >> /tmp/ptt.log 157 | if [ $number -le 3 ]; then 158 | cmd="$OPMN_STOP process-type=OracleBIServerComponent" 159 | elif [ $number -le 6 ]; then 160 | cmd="$OPMN_STOP process-type=OracleBIPresentationServicesComponent" 161 | elif [ $number -le 9 ]; then 162 | cmd="$OPMN_STOP process-type=OracleBIClusterControllerComponent" 163 | elif [ $number -le 12 ]; then 164 | cmd="$OPMN_STOP process-type=OracleBIJavaHostComponent" 165 | elif [ $number -eq 13 ]; then 166 | cmd="$OPMN_STOP process-type=OracleBISchedulerComponent" 167 | elif [ $number -le 16 ]; then 168 | cmd="lsnrctl stop" 169 | elif [ $number -le 19 ]; then 170 | cmd="shutdownoracle" 171 | elif [ $number -le 22 ]; then 172 | cmd="$DOMAIN_HOME/bin/stopWebLogic.sh" 173 | elif [ $number -le 25 ]; then 174 | cmd="$DOMAIN_HOME/bin/stopManagedWebLogic.sh bi_server1" 175 | elif [ $number -le 27 ]; then 176 | cmd="shutdownbimiddleware" 177 | else 178 | cmd="sleep 10" 179 | fi 180 | 181 | # Log what we're going to do 182 | date >> /tmp/ptt.log 183 | echo $cmd >> /tmp/ptt.log 184 | 185 | # Pull the trigger! 186 | echo -e '\E[01;31;40m'"Gremlins at work . . . . please wait . . . \033[0m" 187 | $cmd 2>>/tmp/ptt.log 1>&2 188 | 189 | # ----------------- 190 | echo ' ' 191 | echo ' ' 192 | echo ' ' 193 | echo ' ' 194 | echo "Done ! " 195 | echo ' ' 196 | echo ' Now check OBIEE and figure out what has broken ... ' 197 | echo ' ' 198 | echo ' ' 199 | 200 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/in-place-upgrade/Linux/3_config_ass.rsp: -------------------------------------------------------------------------------- 1 | [ENGINE] 2 | 3 | #DO NOT CHANGE THIS. 4 | Response File Version=1.0.0.0.0 5 | 6 | [GENERIC] 7 | 8 | #Set this to true if you want to create a new BI System, all other required variables need to be provided. If this is set to true then variables "SCALEOUT_BISYSTEM" and "EXTEND_BISYSTEM" must be set to false, since the variables are mutually exclusive. 9 | CREATE_BISYSTEM=false 10 | 11 | #Set this to true if you want to scale out an existing BI System, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","EXTEND_BISYSTEM" and "UPDATE_BIDOMAIN" must be set to false, since the variables are mutually exclusive. In order to scale out an existing BI system, the domain in the system must be running 12 | SCALEOUT_BISYSTEM=false 13 | 14 | #Set this to true if you want to configure BI System in an existing exmpty domain in the localhost, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","SCALEOUT_BISYSTEM" and "UPDATE_BIDOMAIN" must be set to false, since the variables are mutually exclusive. 15 | EXTEND_BISYSTEM=false 16 | 17 | #Set this to true if you want to update an existing BI System running on the localhost, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","EXTEND_BISYSTEM" and "SCALEOUT_BISYSTEM" must be set to false, since the variables are mutually exclusive. 18 | UPDATE_BIDOMAIN=true 19 | 20 | #Write the name of the domain you want to create. Domain name may only contain alphanumeric characters, or the underscore (_) or hyphen (-) characters. 21 | DOMAIN_NAME=bifoundation_domain 22 | 23 | #Write the name of the cell you want to create. Cell name may only contain alphanumeric characters, or the underscore (_) or hyphen (-) characters. 24 | CELL_NAME=unknown 25 | 26 | #Write the name of the host to which you want to connect. It should have an already existing domain configured. 27 | DOMAIN_HOSTNAME=rnm-oel6-3 28 | 29 | #Give the port number at which the host should be connected. 30 | DOMAIN_PORT=7001 31 | 32 | #Give an administrator user name for the domain if you are creating a new one otherwise give the administrator user name for the domain configured at the host. 33 | ADMIN_USER_NAME=weblogic 34 | 35 | #Give an administrator password for the domain if you are creating a new one otherwise give the administrator password for the domain configured at the host. 36 | ADMIN_PASSWORD= 37 | 38 | #Write the administrator password again to confirm. 39 | ADMIN_CONFIRM_PASSWORD= 40 | 41 | #Is Single Server Install. 42 | WLS_SINGLE_SERVER_INSTALL=false 43 | 44 | #Specify the Middleware Home location. 45 | MW_HOME=/u01/app/oracle/product/fmw 46 | 47 | #Give the name of the Oracle Home directory. The Oracle Home directory name may only contain alphanumeric , hyphen (-) , dot (.) and underscore (_) characters, and it must begin with an alphanumeric character. 48 | ORACLE_HOME=/u01/app/oracle/product/fmw/Oracle_BI1 49 | 50 | #Give the complete path to a valid WebLogic Server Home. 51 | WEBLOGIC_HOME=/u01/app/oracle/product/fmw/wlserver_10.3 52 | 53 | #Give the complete path for a domain home to be created. 54 | DOMAIN_HOME_PATH=/u01/app/oracle/product/fmw/user_projects/domains/bifoundation_domain 55 | 56 | #Domain Name 57 | DOMAIN_NAME=bifoundation_domain 58 | 59 | #Give the complete path for JEE applications directory to be created. 60 | APPLICATIONS_HOME_PATH=unknown 61 | 62 | #Give the complete path for an Oracle Instance directory to be created. This is the location where the software configuration files and runtime processes will reside. 63 | INSTANCE_HOME=/u01/app/oracle/product/fmw/instances/instance1 64 | 65 | #Give a name for Oracle Instance corresponding to the Instance Home. The Oracle Instance name may only contain alphanumeric and underscore (_) characters, it must begin with an alphabetic (a-z or A-Z) character, and must be from 4 to 30 characters in length. 66 | INSTANCE_NAME=instance1 67 | 68 | 69 | [SYSTEM] 70 | 71 | 72 | [APPLICATIONS] 73 | 74 | 75 | [RELATIONSHIPS] 76 | 77 | 78 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/in-place-upgrade/Windows/3_config_ass.rsp: -------------------------------------------------------------------------------- 1 | [ENGINE] 2 | 3 | #DO NOT CHANGE THIS. 4 | Response File Version=1.0.0.0.0 5 | 6 | [GENERIC] 7 | 8 | #Set this to true if you want to create a new BI System, all other required variables need to be provided. If this is set to true then variables "SCALEOUT_BISYSTEM" and "EXTEND_BISYSTEM" must be set to false, since the variables are mutually exclusive. 9 | CREATE_BISYSTEM=false 10 | 11 | #Set this to true if you want to scale out an existing BI System, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","EXTEND_BISYSTEM" and "UPDATE_BIDOMAIN" must be set to false, since the variables are mutually exclusive. In order to scale out an existing BI system, the domain in the system must be running 12 | SCALEOUT_BISYSTEM=false 13 | 14 | #Set this to true if you want to configure BI System in an existing exmpty domain in the localhost, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","SCALEOUT_BISYSTEM" and "UPDATE_BIDOMAIN" must be set to false, since the variables are mutually exclusive. 15 | EXTEND_BISYSTEM=false 16 | 17 | #Set this to true if you want to update an existing BI System running on the localhost, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","EXTEND_BISYSTEM" and "SCALEOUT_BISYSTEM" must be set to false, since the variables are mutually exclusive. 18 | UPDATE_BIDOMAIN=true 19 | 20 | #Write the name of the domain you want to create. Domain name may only contain alphanumeric characters, or the underscore (_) or hyphen (-) characters. 21 | DOMAIN_NAME=bifoundation_domain 22 | 23 | #Write the name of the cell you want to create. Cell name may only contain alphanumeric characters, or the underscore (_) or hyphen (-) characters. 24 | CELL_NAME=unknown 25 | 26 | #Write the name of the host to which you want to connect. It should have an already existing domain configured. 27 | DOMAIN_HOSTNAME=training 28 | 29 | #Give the port number at which the host should be connected. 30 | DOMAIN_PORT=7001 31 | 32 | #Give an administrator user name for the domain if you are creating a new one otherwise give the administrator user name for the domain configured at the host. 33 | ADMIN_USER_NAME=weblogic 34 | 35 | #Give an administrator password for the domain if you are creating a new one otherwise give the administrator password for the domain configured at the host. 36 | ADMIN_PASSWORD=Password01 37 | 38 | #Write the administrator password again to confirm. 39 | ADMIN_CONFIRM_PASSWORD=Password01 40 | 41 | #Is Single Server Install. 42 | WLS_SINGLE_SERVER_INSTALL=false 43 | 44 | #Specify the Middleware Home location. 45 | MW_HOME=C:\oracle\middleware 46 | 47 | #Give the name of the Oracle Home directory. The Oracle Home directory name may only contain alphanumeric , hyphen (-) , dot (.) and underscore (_) characters, and it must begin with an alphanumeric character. 48 | ORACLE_HOME=C:\oracle\middleware\Oracle_BI1 49 | 50 | #Give the complete path to a valid WebLogic Server Home. 51 | WEBLOGIC_HOME=C:\oracle\middleware\wlserver_10.3 52 | 53 | #Give the complete path for a domain home to be created. 54 | DOMAIN_HOME_PATH=c:\oracle\middleware\user_projects\domains\bifoundation_domain 55 | 56 | #Domain Name 57 | DOMAIN_NAME=bifoundation_domain 58 | 59 | #Give the complete path for JEE applications directory to be created. 60 | APPLICATIONS_HOME_PATH=unknown 61 | 62 | #Give the complete path for an Oracle Instance directory to be created. This is the location where the software configuration files and runtime processes will reside. 63 | INSTANCE_HOME=C:\oracle\middleware\instances\instance1 64 | 65 | #Give a name for Oracle Instance corresponding to the Instance Home. The Oracle Instance name may only contain alphanumeric and underscore (_) characters, it must begin with an alphabetic (a-z or A-Z) character, and must be from 4 to 30 characters in length. 66 | INSTANCE_NAME=instance1 67 | 68 | 69 | [SYSTEM] 70 | 71 | 72 | [APPLICATIONS] 73 | 74 | 75 | [RELATIONSHIPS] 76 | 77 | 78 | -------------------------------------------------------------------------------- /obi/wlst/enable_ut_sa.py: -------------------------------------------------------------------------------- 1 | # =================================================================== 2 | # Developed by RNM @ Rittman Mead 3 | # Absolutely no warranty, use at your own risk 4 | # Please include this header in any copy or reuse of the script you make 5 | # ===================================================================# 6 | 7 | # Based on Script from Mark R / Venkat, hacked together with John M's script 8 | # ----------------------------------------- 9 | # Enable Usage Tracking and Summary Advisor Statistics logging 10 | # Assumes that RPD has been updated with database and connection as stated below 11 | # 12 | # RNM 2012-05-04 13 | # 14 | # =================================================================== 15 | import sys 16 | import os 17 | 18 | # Check the arguments to this script are as expected. 19 | # argv[0] is script name. 20 | argLen = len(sys.argv) 21 | if argLen -1 != 3: 22 | print "ERROR: got ", argLen -1, " args." 23 | print "USAGE: wlst.sh enable_ut_sa.py WLS_USER WLS_PASSWORD WLS_URL" 24 | print " eg: wlst.sh enable_ut_sa.py weblogic password t3://localhost:7001" 25 | exit() 26 | 27 | WLS_USER = sys.argv[1] 28 | WLS_PW = sys.argv[2] 29 | WLS_URL = sys.argv[3] 30 | 31 | print 'Connecting to '+ WLS_URL + ' as user: ' + WLS_USER + ' ...' 32 | 33 | # Connect to WLS 34 | connect(WLS_USER, WLS_PW, WLS_URL); 35 | 36 | print 'Connecting to Domain ...' 37 | domainCustom() 38 | cd ('oracle.biee.admin') 39 | 40 | 41 | print 'Connecting to BIDomain MBean ...' 42 | cd ('oracle.biee.admin:type=BIDomain,group=Service') 43 | print 'Calling lock ...' 44 | objs = jarray.array([], java.lang.Object) 45 | strs = jarray.array([], java.lang.String) 46 | invoke('lock', objs, strs) 47 | cd('..') 48 | 49 | 50 | # Go to the BI Server configuration 51 | cd('oracle.biee.admin:type=BIDomain.BIInstance.ServerConfiguration,biInstance=coreapplication,group=Service') 52 | 53 | # Update usage tracking configuration 54 | print 'Existing configuration' 55 | print '----------------------' 56 | print get('SummaryAdvisorTableName') 57 | print get('SummaryStatisticsLogging') 58 | print get('UsageTrackingCentrallyManaged') 59 | print get('UsageTrackingConnectionPool') 60 | print get('UsageTrackingDirectInsert') 61 | print get('UsageTrackingEnabled') 62 | print get('UsageTrackingPhysicalTableName') 63 | 64 | 65 | # Update usage tracking configuration 66 | set('SummaryAdvisorTableName','"FMW Metadata Repository"."DEV_BIPLATFORM"."S_NQ_SUMMARY_ADVISOR"') 67 | set('SummaryStatisticsLogging','YES') 68 | set('UsageTrackingCentrallyManaged',1) 69 | set('UsageTrackingConnectionPool','"FMW Metadata Repository"."RCU Connection Pool"') 70 | set('UsageTrackingDirectInsert',1) 71 | set('UsageTrackingEnabled',1) 72 | set('UsageTrackingPhysicalTableName','"FMW Metadata Repository"."DEV_BIPLATFORM"."S_NQ_ACCT"') 73 | 74 | print 'Updated configuration' 75 | print '---------------------' 76 | print get('SummaryAdvisorTableName') 77 | print get('SummaryStatisticsLogging') 78 | print get('UsageTrackingCentrallyManaged') 79 | print get('UsageTrackingConnectionPool') 80 | print get('UsageTrackingDirectInsert') 81 | print get('UsageTrackingEnabled') 82 | print get('UsageTrackingPhysicalTableName') 83 | 84 | 85 | print 'Calling commit ...' 86 | cd ('..') 87 | cd ('oracle.biee.admin:type=BIDomain,group=Service') 88 | objs = jarray.array([], java.lang.Object) 89 | strs = jarray.array([], java.lang.String) 90 | invoke('commit', objs, strs) 91 | 92 | print 'Committed OK' 93 | 94 | # Restart BI Server 95 | cd ('..') 96 | cd ('oracle.biee.admin:oracleInstance=instance1,type=BIDomain.BIInstanceDeployment.BIComponent,biInstance=coreapplication,process=coreapplication_obis1,group=Service') 97 | 98 | print 'Stopping the BI server' 99 | params = jarray.array([], java.lang.Object) 100 | signs = jarray.array([], java.lang.String) 101 | invoke('stop', params, signs) 102 | 103 | BIServerStatus = get('Status') 104 | print 'BI ServerStatus : ' +BIServerStatus 105 | 106 | print 'Starting the BI server' 107 | params = jarray.array([], java.lang.Object) 108 | signs = jarray.array([], java.lang.String) 109 | invoke('start', params, signs) 110 | 111 | BIServerStatus = get('Status') 112 | print 'BI ServerStatus : ' +BIServerStatus 113 | 114 | # Exit 115 | exit() 116 | 117 | -------------------------------------------------------------------------------- /obi/security_audit/security_audit.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | """ Security mapping audit for OBIEE 12c. This code will generate a permissions report for all 4 | catalog objects, for the server upon which it is run. It takes the domain home as an argument in 5 | order to generate the report. This code will create data frames out of the two csv files generated 6 | by the security_audit.py code and then show you those rows which only exist on the lower environment, 7 | or whichever environment you'd like to validate against. 8 | 1. Run code once on lower environment application server. 9 | 2. Run code once again on target migration environment. 10 | 3. Move file 'C:\security_mappings.csv or /tmp/security_mappings.csv from target 11 | migration server to lower environment server and rename it 'security_mappings_02', 12 | placing it in the same directory as your other security_mappings.csv file. 13 | 4. Run security_compare.py, passing in both file locations as arguments, 14 | and then view test results.""" 15 | 16 | 17 | # Imports - please ensure these are installed on all servers 18 | import os 19 | import pandas as pd 20 | import platform 21 | 22 | 23 | # OBIEE runcat file and clean file drop locations. Both the 'file_loc_x' and 'x_path' variables can be changed 24 | # per your file system configuration 25 | file_loc_win = 'C:\\permissions_report.csv' 26 | file_loc_lin = '/tmp/permissions_report.csv' 27 | win_path = 'C:\\security_mappings.csv' 28 | lin_path = '/tmp/security_mappings.csv' 29 | 30 | 31 | """ Main functions for program.""" 32 | 33 | 34 | # Run runcat script to generate csv permissions report - note report output in C:\ 35 | def win_runcat(domain_home): 36 | os.chdir(domain_home + '\\bitools\\bin') 37 | os.system('runcat.cmd -cmd report -offline ' + domain_home + 38 | '/bidata/service_instances/ssi/metadata/content/catalog' 39 | ' -forceoutputFile ' + file_loc_win + 40 | ' -type "All" -folder "/shared"' 41 | ' -fields "Owner:Name:Path:ACL:Group Members" -delimiter ","') 42 | 43 | 44 | def lin_runcat(domain_home): 45 | os.chdir(domain_home + '/bitools/bin') 46 | os.system('./runcat.sh -cmd report -offline ' + domain_home + 47 | '/bidata/service_instances/ssi/metadata/content/catalog' 48 | ' -forceoutputFile ' + file_loc_lin + 49 | ' -type "All" -folder "/shared"' 50 | ' -fields "Owner:Name:Path:ACL:Group Members" -delimiter ","') 51 | 52 | 53 | # Export cleaned up dataframes to server as csv 54 | def exp_to_csv(exp_file, path): 55 | export = pd.DataFrame(exp_file) 56 | export.to_csv(path, index=False) 57 | 58 | 59 | # Verify domain_home exists 60 | def verify_domain_home(): 61 | bi_domain = input('Please enter the OBIEE12c DOMAIN_HOME. \n>') 62 | win_bi_tools = bi_domain + '\\bitools\\bin' 63 | lin_bi_tools = bi_domain + '/bitools/bin' 64 | if not os.path.exists(win_bi_tools) or not os.path.exists(lin_bi_tools): 65 | print('Path does not exist or is not the DOMAIN_HOME. Please check string and try again.') 66 | verify_domain_home() 67 | else: 68 | return bi_domain 69 | 70 | 71 | # Create and clean up dataframes and then dump to csv 72 | def df_to_cleancsv(csv): 73 | df = pd.DataFrame(pd.read_csv(csv)) 74 | df['ACL'] = df['ACL'].str.replace('^', ' ').str.replace(':', '').str.replace('=', ':') 75 | df = df.sort_values(['Owner']) 76 | return df 77 | 78 | 79 | """ Main Program """ 80 | 81 | 82 | if __name__ == '__main__': 83 | domain = os.environ.get('DOMAIN_HOME') 84 | 85 | if domain is None: 86 | domain_home = verify_domain_home() 87 | 88 | else: 89 | domain_home = domain 90 | 91 | if platform.system() == 'Windows': # check if OS is windows 92 | win_runcat(domain_home) 93 | export_win = df_to_cleancsv(file_loc_win) # Create dataframe from runcat output 94 | os.remove(file_loc_win) # Get rid of runcat csv output 95 | exp_to_csv(export_win, win_path) # Export dataframe to csv using function above 96 | 97 | else: 98 | lin_runcat(domain_home) 99 | export_lin = df_to_cleancsv(file_loc_lin) 100 | os.remove(file_loc_lin) 101 | exp_to_csv(export_lin, lin_path) 102 | -------------------------------------------------------------------------------- /obi/wlst/deploy_rpd.py: -------------------------------------------------------------------------------- 1 | # =================================================================== 2 | # Developed by RNM @ Rittman Mead 3 | # Absolutely no warranty, use at your own risk 4 | # Please include this header in any copy or reuse of the script you make 5 | # ===================================================================# 6 | 7 | # ===================================================================# 8 | # RNM 2012-03-16 9 | # Deploy RPD and restart BI Server 10 | # Cobbled together from scripts by John M, Mark R and Venkat J 11 | # 12 | # Call this script as a parameter to wlst, for example: 13 | # %FMW_HOME%/oracle_common/common/bin/wlst.cmd deploy_rpd.py weblogic welcome1 t3://localhost:7001 C:\RPD_to_deploy.rpd Admin123 True 14 | # 15 | # This will deploy C:\RPD_to_deploy.rpd with RPD password Admin123. 16 | # The weblogic admin server is at t3://localhost:7001/ with credentials weblogic/welcome1 17 | # The final parameter (0 or 1) indicates whether to restart the BI Server process as part of this script 18 | # (The RPD won't be active until the BI Server is restarted) 19 | # 20 | # This script expects the following arguments: 21 | # 22 | # 1. wls.user (weblogic) 23 | # 2. wls.password () 24 | # 3. wls.url (t3://localhost:7001) 25 | # 4. RPD path 26 | # 5. RPD password 27 | # 6. Restart BI after deploy (True|False) 28 | # =================================================================== 29 | 30 | import sys 31 | import os 32 | # Check the arguments to this script are as expected. 33 | # argv[0] is script name. 34 | argLen = len(sys.argv) 35 | if argLen -1 < 6: 36 | print "ERROR: got ", argLen -1, " args." 37 | print "USAGE: wlst.sh deploy_rpd.py WLS_USER WLS_PASSWORD WLS_URL RPD_PATH RPD_PWD RESTART_BI" 38 | exit() 39 | else: 40 | WLS_USER = sys.argv[1] 41 | WLS_PW = sys.argv[2] 42 | WLS_URL = sys.argv[3] 43 | rpdpath = sys.argv[4] 44 | rpdpass = sys.argv[5] 45 | restartBI = sys.argv[6] 46 | 47 | print 'Connecting to '+ WLS_URL + ' as user: ' + WLS_USER + ' ...' 48 | 49 | # Connect to WLS 50 | connect(WLS_USER, WLS_PW, WLS_URL); 51 | 52 | print 'Connecting to Domain ...' 53 | domainCustom() 54 | cd ('oracle.biee.admin') 55 | cd ('oracle.biee.admin:type=BIDomain,group=Service') 56 | 57 | print 'Locking the configuration...' 58 | objs = jarray.array([], java.lang.Object) 59 | strs = jarray.array([], java.lang.String) 60 | invoke('lock', objs, strs) 61 | 62 | # Deploy RPD 63 | print'Connecting to BIInstance MBean ...' 64 | cd ('..') 65 | cd ('oracle.biee.admin:type=BIDomain.BIInstance.ServerConfiguration,biInstance=coreapplication,group=Service') 66 | print 'Uploading RPD' 67 | try: 68 | # Set the parameters 69 | params = jarray.array([rpdpath,rpdpass],java.lang.Object) 70 | # Set the parameters Signs 71 | sign = jarray.array(['java.lang.String', 'java.lang.String'],java.lang.String) 72 | # Invoke the procedure 73 | invoke( 'uploadRepository', params, sign) 74 | except: 75 | cd ('..') 76 | cd ('oracle.biee.admin:type=BIDomain,group=Service') 77 | print"Error::", sys.exc_info()[0] 78 | objs = jarray.array([], java.lang.Object) 79 | strs = jarray.array([], java.lang.String) 80 | invoke('rollback', objs, strs) 81 | raise 82 | 83 | 84 | # Commit changes 85 | cd ('..') 86 | cd ('oracle.biee.admin:type=BIDomain,group=Service') 87 | objs = jarray.array([], java.lang.Object) 88 | strs = jarray.array([], java.lang.String) 89 | invoke('commit', objs, strs) 90 | print 'Committed OK' 91 | 92 | if restartBI == 'True': 93 | print 'Restarting BI server' 94 | # Restart BI Server 95 | cd ('..') 96 | cd ('oracle.biee.admin:oracleInstance=instance1,type=BIDomain.BIInstanceDeployment.BIComponent,biInstance=coreapplication,process=coreapplication_obis1,group=Service') 97 | 98 | print 'Stopping the BI server' 99 | params = jarray.array([], java.lang.Object) 100 | signs = jarray.array([], java.lang.String) 101 | invoke('stop', params, signs) 102 | 103 | BIServerStatus = get('Status') 104 | print 'BI ServerStatus : ' +BIServerStatus 105 | 106 | print 'Starting the BI server' 107 | params = jarray.array([], java.lang.Object) 108 | signs = jarray.array([], java.lang.String) 109 | invoke('start', params, signs) 110 | 111 | BIServerStatus = get('Status') 112 | print 'BI ServerStatus : ' +BIServerStatus 113 | else: 114 | print '(Skipped restarting BI Server)' 115 | # Exit 116 | exit() 117 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/in-place-upgrade/Windows/2_psa.rsp: -------------------------------------------------------------------------------- 1 | # This is a response file for the Fusion Middleware Patch Set Assistant. 2 | # Individual component upgrades are performed in the order they are described here. 3 | # Each upgrade is introduced by a section header containing the name of the 4 | # component and name of the upgrade plugin. The form of the section header is 5 | # [ComponentName.PluginName] 6 | # These names can be found in the Upgrade Descriptor files for the components. 7 | 8 | # Individual input lines consist of a name, an equal sign, and a value. 9 | # The name is in two parts separated by a period. The first part is the 'name' 10 | # attribute from the Descriptor File XML tag by which the plugin refers to the value. 11 | # The second part of the name identifies a field within that value. Some input 12 | # types have only one field, while other types can have half a dozen. Do not 13 | # intermix input lines that apply to different XML tags. 14 | 15 | [GENERAL] 16 | # This is the file format version number. Do not change the next line. 17 | fileFormatVersion = 3 18 | 19 | # The next section contains the information for performing a schema 20 | # upgrade on Oracle Metadata Services, as described in the Upgrade 21 | # Descriptor file located at 22 | # C:\oracle\middleware\oracle_common\upgrade\components\mds.xml 23 | # Do not change the next line. 24 | [MDS.MDS1] 25 | # The following number uniquely identifies this instance of an 26 | # upgrade plugin. Do not change it. 27 | pluginInstance = 6 28 | 29 | # The next few lines describe a database connection. 30 | # "Specify the database containing the MDS schema." 31 | # Specifies the type of database. Supported types for this product are 32 | # Oracle Database, Oracle Database enabled for edition-based redefinition, Microsoft SQL Server, IBM DB2, MySQL 33 | MDS.databaseType = Oracle Database 34 | # Specifies the database connection string for the DBA user. 35 | # The format depends upon the database type. 36 | MDS.databaseConnectionString = localhost:1521/orcl 37 | # Specifies the database connection string for the user schema. 38 | # The format depends upon the database type. 39 | MDS.schemaConnectionString = localhost:1521/orcl 40 | # Specifies the name of the schema or database user 41 | MDS.schemaUserName = DEV_MDS 42 | # Specifies the password for the schema, in encrypted form. To specify a 43 | # different password in cleartext, use the "cleartextSchemaPassword" keyword instead: 44 | # MDS.cleartextSchemaPassword = yourpassword 45 | MDS.cleartextSchemaPassword = Password01 46 | # Specifies the name of the database administrator account. 47 | MDS.dbaUserName = SYS AS SYSDBA 48 | # Specifies the password for the database administrator account, in encrypted form. 49 | # To specify a different password in cleartext, use the "cleartextDbaPassword" keyword 50 | # instead: 51 | # MDS.cleartextDbaPassword = yourpassword 52 | MDS.cleartextDbaPassword = Password01 53 | 54 | # The next section contains the information for performing a schema 55 | # upgrade on Oracle Business Intelligence, as described in the Upgrade 56 | # Descriptor file located at 57 | # C:\oracle\middleware\Oracle_BI1\upgrade\components\biplatform.xml 58 | # Do not change the next line. 59 | [BI.BI1] 60 | # The following number uniquely identifies this instance of an 61 | # upgrade plugin. Do not change it. 62 | pluginInstance = 2 63 | # This plugin can only execute if certain preceding plugin(s) 64 | # were successful. The number(s) on the next line must match numbers on other 65 | # pluginInstance declarations. Do not change them. 66 | dependsOnPluginInstance = 6 67 | 68 | # The next few lines describe a database connection. 69 | # "Specify the database containing the BIPLATFORM schema." 70 | # Specifies the type of database. Supported types for this product are 71 | # Oracle Database, Microsoft SQL Server, IBM DB2 72 | BIPLATFORM.databaseType = Oracle Database 73 | # Specifies the database connection string for the DBA user. 74 | # The format depends upon the database type. 75 | BIPLATFORM.databaseConnectionString = localhost:1521/orcl 76 | # Specifies the database connection string for the user schema. 77 | # The format depends upon the database type. 78 | BIPLATFORM.schemaConnectionString = localhost:1521/orcl 79 | # Specifies the name of the schema or database user 80 | BIPLATFORM.schemaUserName = DEV_BIPLATFORM 81 | # Specifies the password for the schema, in encrypted form. To specify a 82 | # different password in cleartext, use the "cleartextSchemaPassword" keyword instead: 83 | # BIPLATFORM.cleartextSchemaPassword = yourpassword 84 | BIPLATFORM.cleartextSchemaPassword = Password01 85 | # Specifies the name of the database administrator account. 86 | BIPLATFORM.dbaUserName = SYS AS SYSDBA 87 | # Specifies the password for the database administrator account, in encrypted form. 88 | # To specify a different password in cleartext, use the "cleartextDbaPassword" keyword 89 | # instead: 90 | # BIPLATFORM.cleartextDbaPassword = yourpassword 91 | BIPLATFORM.cleartextDbaPassword = Password01 92 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/in-place-upgrade/Linux/2_psa.rsp: -------------------------------------------------------------------------------- 1 | # This is a response file for the Fusion Middleware Patch Set Assistant. 2 | # Individual component upgrades are performed in the order they are described here. 3 | # Each upgrade is introduced by a section header containing the name of the 4 | # component and name of the upgrade plugin. The form of the section header is 5 | # [ComponentName.PluginName] 6 | # These names can be found in the Upgrade Descriptor files for the components. 7 | 8 | # Individual input lines consist of a name, an equal sign, and a value. 9 | # The name is in two parts separated by a period. The first part is the 'name' 10 | # attribute from the Descriptor File XML tag by which the plugin refers to the value. 11 | # The second part of the name identifies a field within that value. Some input 12 | # types have only one field, while other types can have half a dozen. Do not 13 | # intermix input lines that apply to different XML tags. 14 | 15 | [GENERAL] 16 | # This is the file format version number. Do not change the next line. 17 | fileFormatVersion = 3 18 | 19 | # The next section contains the information for performing a schema 20 | # upgrade on Oracle Metadata Services, as described in the Upgrade 21 | # Descriptor file located at 22 | # /u01/app/oracle/product/fmw/oracle_common/upgrade/components/mds.xml 23 | # Do not change the next line. 24 | [MDS.MDS1] 25 | # The following number uniquely identifies this instance of an 26 | # upgrade plugin. Do not change it. 27 | pluginInstance = 6 28 | 29 | # The next few lines describe a database connection. 30 | # "Specify the database containing the MDS schema." 31 | # Specifies the type of database. Supported types for this product are 32 | # Oracle Database, Oracle Database enabled for edition-based redefinition, Microsoft SQL Server, IBM DB2, MySQL 33 | MDS.databaseType = Oracle Database 34 | # Specifies the database connection string for the DBA user. 35 | # The format depends upon the database type. 36 | MDS.databaseConnectionString = localhost:1521/orcl 37 | # Specifies the database connection string for the user schema. 38 | # The format depends upon the database type. 39 | MDS.schemaConnectionString = localhost:1521/orcl 40 | # Specifies the name of the schema or database user 41 | MDS.schemaUserName = DEV_MDS 42 | # Specifies the password for the schema, in encrypted form. To specify a 43 | # different password in cleartext, use the "cleartextSchemaPassword" keyword instead: 44 | # MDS.cleartextSchemaPassword = yourpassword 45 | MDS.encryptedSchemaPassword = 057D81CB41AC1EAED7B4344F2E2C4463CB8742A32CDA8D1DDB 46 | # Specifies the name of the database administrator account. 47 | MDS.dbaUserName = sys as sysdba 48 | # Specifies the password for the database administrator account, in encrypted form. 49 | # To specify a different password in cleartext, use the "cleartextDbaPassword" keyword 50 | # instead: 51 | # MDS.cleartextDbaPassword = yourpassword 52 | MDS.encryptedDbaPassword = 05CC852DB8A7D7BDEC116BA183E587F8F33F5E3136213A3C87 53 | 54 | # The next section contains the information for performing a schema 55 | # upgrade on Oracle Business Intelligence, as described in the Upgrade 56 | # Descriptor file located at 57 | # /u01/app/oracle/product/fmw/Oracle_BI1/upgrade/components/biplatform.xml 58 | # Do not change the next line. 59 | [BI.BI1] 60 | # The following number uniquely identifies this instance of an 61 | # upgrade plugin. Do not change it. 62 | pluginInstance = 5 63 | # This plugin can only execute if certain preceding plugin(s) 64 | # were successful. The number(s) on the next line must match numbers on other 65 | # pluginInstance declarations. Do not change them. 66 | dependsOnPluginInstance = 6 67 | 68 | # The next few lines describe a database connection. 69 | # "Specify the database containing the BIPLATFORM schema." 70 | # Specifies the type of database. Supported types for this product are 71 | # Oracle Database, Microsoft SQL Server, IBM DB2 72 | BIPLATFORM.databaseType = Oracle Database 73 | # Specifies the database connection string for the DBA user. 74 | # The format depends upon the database type. 75 | BIPLATFORM.databaseConnectionString = localhost:1521/orcl 76 | # Specifies the database connection string for the user schema. 77 | # The format depends upon the database type. 78 | BIPLATFORM.schemaConnectionString = localhost:1521/orcl 79 | # Specifies the name of the schema or database user 80 | BIPLATFORM.schemaUserName = DEV_BIPLATFORM 81 | # Specifies the password for the schema, in encrypted form. To specify a 82 | # different password in cleartext, use the "cleartextSchemaPassword" keyword instead: 83 | # BIPLATFORM.cleartextSchemaPassword = yourpassword 84 | BIPLATFORM.encryptedSchemaPassword = 05343BD04E948C57AC2F0458CDDDD6DAB5E458E6B3D39EF2BB 85 | # Specifies the name of the database administrator account. 86 | BIPLATFORM.dbaUserName = sys as sysdba 87 | # Specifies the password for the database administrator account, in encrypted form. 88 | # To specify a different password in cleartext, use the "cleartextDbaPassword" keyword 89 | # instead: 90 | # BIPLATFORM.cleartextDbaPassword = yourpassword 91 | BIPLATFORM.encryptedDbaPassword = 05329704C8CD9704DF50E6F08D70021A1158424E6764F4B72E 92 | -------------------------------------------------------------------------------- /obi/service/README.md: -------------------------------------------------------------------------------- 1 | # init.d script for OBIEE 2 | 3 | Use this script to install OBIEE as a 'service' on Linux, enabling it to be brought up automagically on bootup, and shutdown when the machine shuts down. 4 | 5 | ## Installation 6 | 7 | The installation will need to be as **root** user, or using `sudo`. 8 | 9 | 1. Install the init.d script 10 | 11 | sudo cp init.d/obiee /etc/init.d/obiee 12 | 13 | 2. Make it executable 14 | 15 | sudo chmod 750 /etc/init.d/obiee 16 | 17 | 3. Install it as a service 18 | 19 | sudo chkconfig --add obiee 20 | 21 | 4. Copy the default configuration file 22 | 23 | sudo cp sysconfig/obiee /etc/sysconfig/ 24 | 25 | 5. Update the configuration file for your environment: 26 | 27 | * `FMW_HOME` - *The FMW Home folder, eg `/u01/app/oracle/product/fmw`* 28 | * `ORACLE_OWNR` - *The OS owner under which OBIEE should be managed* 29 | * `LOGPATH` - *Folder in which to store log files - change if you don't want them in `/var/log`* 30 | * You _may_ need to change `LSOF_PATH` in `/etc/init.d/obiee` if the binary is not at `/usr/sbin/lsof` - check using `whereis lsof` 31 | 32 | If you have multiple OBIEE environments on the same server you can call the script a different name, eg `/etc/init.d/obiee-dev`, `/etc/init.d/obiee-test`, etc, and point each one to a different `/etc/sysconfig/obiee` file. 33 | 34 | ## Syntax 35 | 36 | service obiee 37 | 38 | ### OBI Status 39 | 40 | $ service obiee status 41 | 42 | Checking WLS Admin Server: listening on port 7001 [ OK ] 43 | Checking WLS Node Manager: listening on port 9556 [ OK ] 44 | Checking WLS Managed Server: listening on port 8205 9704 [ OK ] 45 | Checking OPMN: listening on port 9500 9501 [ OK ] 46 | All OPMN-managed BI Components are running [ OK ] 47 | 48 | ![Service status](img/service01.png) 49 | ![Service status](img/service01a.png) 50 | 51 | ### Start 52 | 53 | $ service obiee start 54 | 55 | Starting OBI Admin Server ....... [ OK ] 56 | Starting OBI Node Manager . [ OK ] 57 | Starting OBI Managed Server......... [ OK ] 58 | Initiating OBI OPMN startup . [ OK ] 59 | 60 | ![Service status](img/service02.png) 61 | 62 | Each component has a timeout associated with it, after which the start process will fail. Change the appropriate `_START_TIMEOUT` values in the script if you want it to wait longer. 63 | 64 | ### Stop 65 | 66 | $ service obiee stop 67 | 68 | Shutting down OPMN and BI Components. [ OK ] 69 | Shutting down OBI Managed Server. [ OK ] 70 | Shutting down OBI Node Manager.. [ OK ] 71 | Shutting down OBI Admin Server. [ OK ] 72 | 73 | Each component has a timeout associated with it, after which the process will be forceably killed. Change the appropriate `_STOP_TIMEOUT` values in the script if you want it to wait longer. 74 | 75 | ![Service status](img/service03.png) 76 | 77 | ### Restart 78 | 79 | $ service obiee restart 80 | 81 | Shutting down OPMN and BI Components. [ OK ] 82 | Shutting down OBI Managed Server. [ OK ] 83 | Shutting down OBI Node Manager.. [ OK ] 84 | Shutting down OBI Admin Server. [ OK ] 85 | 86 | Starting OBI Admin Server ....... [ OK ] 87 | Starting OBI Node Manager . [ OK ] 88 | Starting OBI Managed Server......... [ OK ] 89 | Initiating OBI OPMN startup . [ OK ] 90 | 91 | ## boot.properties 92 | 93 | So that you are not prompted each time for credentials when starting/stopping the Admin and Managed servers, set up the boot.properties file as detailed here : http://docs.oracle.com/cd/E28280_01/web.1111/e13708/overview.htm#i1068920 94 | 95 | ## Enabling OBIEE OS user to run start/stop 96 | 97 | Because this script, by necessity, writes a lock file to a restricted area of the system, it should always be invoked as root when starting or stopping OBIEE. To enable this, `sudo` access can be selectively granted to the OS user under which OBIEE run. Add the following to `/etc/sudoers`, assuming you want the user `oracle` to be granted the access: 98 | 99 | Cmnd_Alias STOP_OBI_SERVICE = /sbin/service obiee stop 100 | Cmnd_Alias START_OBI_SERVICE = /sbin/service obiee start 101 | Cmnd_Alias RESTART_OBI_SERVICE = /sbin/service obiee restart 102 | oracle ALL=NOPASSWD: STOP_OBI_SERVICE,START_OBI_SERVICE,RESTART_OBI_SERVICE 103 | 104 | Once this is done, you can use the following: 105 | 106 | sudo service obiee stop 107 | sudo service obiee start 108 | sudo service obiee restart 109 | 110 | The `status` command doesn't need root privilege to run, so can be run as root, or the OBIEE OS user 111 | 112 | service obiee status 113 | 114 | 115 | ## Bonus 116 | 117 | Use the `watch` command to keep an eye on the status of the service, perhaps whilst it's starting up to see when it's ready: 118 | 119 | watch service obiee status 120 | 121 | ![Service status](img/service04.png) 122 | 123 | ## TODO / Known Issues 124 | 125 | See https://github.com/RittmanMead/scripts/issues 126 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/install-and-configure/linux_11.1.1.7.rsp: -------------------------------------------------------------------------------- 1 | [ENGINE] 2 | 3 | #DO NOT CHANGE THIS. 4 | Response File Version=1.0.0.0.0 5 | 6 | [GENERIC] 7 | 8 | #Set this to true if you wish to specify a directory where latest updates are downloaded. This option would use the software updates from the specified directory 9 | SPECIFY_DOWNLOAD_LOCATION=false 10 | 11 | #Set this to true to skip the Software updates 12 | SKIP_SOFTWARE_UPDATES=true 13 | 14 | #If the Software updates are already downloaded and available on your local system, then specify the path to the directory where these patches are available and set SPECIFY_DOWNLOAD_LOCATION to true 15 | SOFTWARE_UPDATES_DOWNLOAD_LOCATION= 16 | 17 | #Install Software and Configure Components for Express Install. Installs and Configures components with default settings. Installs the light-weight WebLogic Server and creates a new domain. 18 | INSTALL_FOR_DEVELOPMENT_TYPE=false 19 | 20 | #Install and Configure Software Components and Applications. Installs binaries in an ORACLE_HOME and configures working instances in an INSTANCE_HOME. 21 | INSTALL_AND_CONFIGURE_TYPE=true 22 | 23 | #Install Software Components and Applications. Installs binaries in an ORACLE_HOME, but do not configure working instances of installed components. 24 | INSTALL_AND_CONFIGURE_LATER_TYPE=false 25 | 26 | #Set this to true if you want to create a new BI System, all other required variables need to be provided. If this is set to true then variables "SCALEOUT_BISYSTEM" and "EXTEND_BISYSTEM" must be set to false, since the variables are mutually exclusive. 27 | CREATE_BISYSTEM=true 28 | 29 | #Set this to true if you want to scale out an existing BI System, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","EXTEND_BISYSTEM" and "UPDATE_BIDOMAIN" must be set to false, since the variables are mutually exclusive. In order to scale out an existing BI system, the domain in the system must be running 30 | SCALEOUT_BISYSTEM=false 31 | 32 | #Set this to true if you want to configure BI System in an existing exmpty domain in the localhost, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","SCALEOUT_BISYSTEM" and "UPDATE_BIDOMAIN" must be set to false, since the variables are mutually exclusive. 33 | EXTEND_BISYSTEM=false 34 | 35 | #Set this to true if you want to update an existing BI System running on the localhost, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","EXTEND_BISYSTEM" and "SCALEOUT_BISYSTEM" must be set to false, since the variables are mutually exclusive. 36 | UPDATE_BIDOMAIN=false 37 | 38 | #Write the name of the domain you want to create. Domain name may only contain alphanumeric characters, or the underscore (_) or hyphen (-) characters. 39 | DOMAIN_NAME=bifoundation_domain 40 | 41 | #Write the name of the cell you want to create. Cell name may only contain alphanumeric characters, or the underscore (_) or hyphen (-) characters. 42 | CELL_NAME=unknown 43 | 44 | #Write the name of the host to which you want to connect. It should have an already existing domain configured. 45 | DOMAIN_HOSTNAME=rnm-oel6-5 46 | 47 | #Give the port number at which the host should be connected. 48 | DOMAIN_PORT= 49 | 50 | #Give an administrator user name for the domain if you are creating a new one otherwise give the administrator user name for the domain configured at the host. 51 | ADMIN_USER_NAME=weblogic 52 | 53 | #Give an administrator password for the domain if you are creating a new one otherwise give the administrator password for the domain configured at the host. 54 | ADMIN_PASSWORD=Password01 55 | 56 | #Write the administrator password again to confirm. 57 | ADMIN_CONFIRM_PASSWORD=Password01 58 | 59 | #Is Single Server Install. 60 | WLS_SINGLE_SERVER_INSTALL=false 61 | 62 | #Write the complete path to a valid Middleware Home. 63 | MW_HOME=/u01/app/oracle/product/fmw 64 | 65 | #Give the complete path to a valid WebLogic Server Home. 66 | WEBLOGIC_HOME=/u01/app/oracle/product/fmw/wlserver_10.3 67 | 68 | #Give the name of the Oracle Home directory. The Oracle Home directory name may only contain alphanumeric , hyphen (-) , dot (.) and underscore (_) characters, and it must begin with an alphanumeric character. 69 | ORACLE_HOME=/u01/app/oracle/product/fmw/Oracle_BI1 70 | 71 | #Give the complete path for an Oracle Instance directory to be created. This is the location where the software configuration files and runtime processes will reside. 72 | INSTANCE_HOME=/u01/app/oracle/product/fmw/instances/instance1 73 | 74 | #Give a name for Oracle Instance corresponding to the Instance Home. The Oracle Instance name may only contain alphanumeric and underscore (_) characters, it must begin with an alphabetic (a-z or A-Z) character, and must be from 4 to 30 characters in length. 75 | INSTANCE_NAME=instance1 76 | 77 | #Give the complete path for a domain home to be created. 78 | DOMAIN_HOME_PATH=/u01/app/oracle/product/fmw/user_projects/domains/bifoundation_domain 79 | 80 | #Format: hostname:port:servicename. For Application Cluster Database: host1:port1^host2:port2@servicename 81 | DATABASE_CONNECTION_STRING_BI=localhost:1521:orcl 82 | 83 | #Enter the BIPLATFORM schema username. 84 | DATABASE_SCHEMA_USER_NAME_BI=DEV_BIPLATFORM 85 | 86 | #Enter the BIPLATFORM schema password. 87 | DATABASE_SCHEMA_PASSWORD_BI=Password01 88 | 89 | #Select the database type in which the BIPLATFORM schema exists. Supported database types are Oracle Database, Microsoft SQL Server, IBM DB2. 90 | DATABASE_TYPE_BI=Oracle Database 91 | 92 | #Format: hostname:port:servicename. For Application Cluster Database: host1:port1^host2:port2@servicename 93 | DATABASE_CONNECTION_STRING_MDS=localhost:1521:orcl 94 | 95 | #Enter the MDS schema username. 96 | DATABASE_SCHEMA_USER_NAME_MDS=DEV_MDS 97 | 98 | #Enter the MDS schema password. 99 | DATABASE_SCHEMA_PASSWORD_MDS=Password01 100 | 101 | #Select the database type in which the MDS schema exists. Supported database types are Oracle Database, Microsoft SQL Server, IBM DB2. 102 | DATABASE_TYPE_MDS=Oracle Database 103 | 104 | # 105 | AUTOMATIC_PORT_DETECT=true 106 | 107 | # 108 | STATICPORT INI FILE LOCATION= 109 | 110 | #Provide the My Oracle Support Username. If you wish to ignore Oracle Configuration Manager configuration provide empty string for user name. 111 | MYORACLESUPPORT_USERNAME= 112 | 113 | #Provide the My Oracle Support Password 114 | MYORACLESUPPORT_PASSWORD=Password01 115 | 116 | #Set this to true if you wish to decline the security updates. Setting this to true and providing empty string for My Oracle Support username will ignore the Oracle Configuration Manager configuration 117 | DECLINE_SECURITY_UPDATES=true 118 | 119 | #Set this to true if My Oracle Support Password is specified 120 | SECURITY_UPDATES_VIA_MYORACLESUPPORT=false 121 | 122 | #Provide the Proxy Host 123 | PROXY_HOST= 124 | 125 | #Provide the Proxy Port 126 | PROXY_PORT= 127 | 128 | #Provide the Proxy Username 129 | PROXY_USER= 130 | 131 | #Provide the Proxy Password 132 | PROXY_PWD=Password01 133 | 134 | #Type String (URL format) Indicates the OCM Repeater URL which should be of the format [scheme[Http/Https]]://[repeater host]:[repeater port] 135 | COLLECTOR_SUPPORTHUB_URL= 136 | 137 | 138 | [SYSTEM] 139 | 140 | 141 | [APPLICATIONS] 142 | 143 | #Set to true to configure Oracle Business Intelligence Enterprise Edition. Otherwise set to false. 144 | CONFIGURE_BI=true 145 | 146 | #Set to true to configure Oracle Business Intelligence Publishing and Reporting. Otherwise set to false. 147 | CONFIGURE_BIP=true 148 | 149 | #Set to true to configure Oracle Real-Time Decisions. Otherwise set to false. 150 | CONFIGURE_RTD=false 151 | 152 | #Set to true to select all Oracle Essbase Components. Otherwise set to false. 153 | CONFIGURE_ESSBASE_SUITE=true 154 | 155 | 156 | [RELATIONSHIPS] 157 | 158 | 159 | -------------------------------------------------------------------------------- /obi/installs/response_files/11.1.1.7/install-and-configure/win_11.1.1.7.rsp: -------------------------------------------------------------------------------- 1 | [ENGINE] 2 | 3 | #DO NOT CHANGE THIS. 4 | Response File Version=1.0.0.0.0 5 | 6 | [GENERIC] 7 | 8 | #Set this to true if you wish to specify a directory where latest updates are downloaded. This option would use the software updates from the specified directory 9 | SPECIFY_DOWNLOAD_LOCATION=false 10 | 11 | #Set this to true to skip the Software updates 12 | SKIP_SOFTWARE_UPDATES=true 13 | 14 | #If the Software updates are already downloaded and available on your local system, then specify the path to the directory where these patches are available and set SPECIFY_DOWNLOAD_LOCATION to true 15 | SOFTWARE_UPDATES_DOWNLOAD_LOCATION= 16 | 17 | #Install Software and Configure Components for Express Install. Installs and Configures components with default settings. Installs the light-weight WebLogic Server and creates a new domain. 18 | INSTALL_FOR_DEVELOPMENT_TYPE=false 19 | 20 | #Install and Configure Software Components and Applications. Installs binaries in an ORACLE_HOME and configures working instances in an INSTANCE_HOME. 21 | INSTALL_AND_CONFIGURE_TYPE=true 22 | 23 | #Install Software Components and Applications. Installs binaries in an ORACLE_HOME, but do not configure working instances of installed components. 24 | INSTALL_AND_CONFIGURE_LATER_TYPE=false 25 | 26 | #Set this to true if you want to create a new BI System, all other required variables need to be provided. If this is set to true then variables "SCALEOUT_BISYSTEM" and "EXTEND_BISYSTEM" must be set to false, since the variables are mutually exclusive. 27 | CREATE_BISYSTEM=true 28 | 29 | #Set this to true if you want to scale out an existing BI System, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","EXTEND_BISYSTEM" and "UPDATE_BIDOMAIN" must be set to false, since the variables are mutually exclusive. In order to scale out an existing BI system, the domain in the system must be running 30 | SCALEOUT_BISYSTEM=false 31 | 32 | #Set this to true if you want to configure BI System in an existing exmpty domain in the localhost, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","SCALEOUT_BISYSTEM" and "UPDATE_BIDOMAIN" must be set to false, since the variables are mutually exclusive. 33 | EXTEND_BISYSTEM=false 34 | 35 | #Set this to true if you want to update an existing BI System running on the localhost, all other required variables need to be provided. If this is set to true then variables "CREATE_BISYSTEM","EXTEND_BISYSTEM" and "SCALEOUT_BISYSTEM" must be set to false, since the variables are mutually exclusive. 36 | UPDATE_BIDOMAIN=false 37 | 38 | #Write the name of the domain you want to create. Domain name may only contain alphanumeric characters, or the underscore (_) or hyphen (-) characters. 39 | DOMAIN_NAME=bifoundation_domain 40 | 41 | #Write the name of the cell you want to create. Cell name may only contain alphanumeric characters, or the underscore (_) or hyphen (-) characters. 42 | CELL_NAME=unknown 43 | 44 | #Write the name of the host to which you want to connect. It should have an already existing domain configured. 45 | DOMAIN_HOSTNAME=training 46 | 47 | #Give the port number at which the host should be connected. 48 | DOMAIN_PORT= 49 | 50 | #Give an administrator user name for the domain if you are creating a new one otherwise give the administrator user name for the domain configured at the host. 51 | ADMIN_USER_NAME=weblogic 52 | 53 | #Give an administrator password for the domain if you are creating a new one otherwise give the administrator password for the domain configured at the host. 54 | ADMIN_PASSWORD=Password01 55 | 56 | #Write the administrator password again to confirm. 57 | ADMIN_CONFIRM_PASSWORD=Password01 58 | 59 | #Is Single Server Install. 60 | WLS_SINGLE_SERVER_INSTALL=false 61 | 62 | #Write the complete path to a valid Middleware Home. 63 | MW_HOME=c:\oracle\middleware 64 | 65 | #Give the complete path to a valid WebLogic Server Home. 66 | WEBLOGIC_HOME=c:\oracle\middleware\wlserver_10.3 67 | 68 | #Give the name of the Oracle Home directory. The Oracle Home directory name may only contain alphanumeric , hyphen (-) , dot (.) and underscore (_) characters, and it must begin with an alphanumeric character. 69 | ORACLE_HOME=c:\oracle\middleware\Oracle_BI1 70 | 71 | #Give the complete path for an Oracle Instance directory to be created. This is the location where the software configuration files and runtime processes will reside. 72 | INSTANCE_HOME=c:\oracle\middleware\instances\instance1 73 | 74 | #Give a name for Oracle Instance corresponding to the Instance Home. The Oracle Instance name may only contain alphanumeric and underscore (_) characters, it must begin with an alphabetic (a-z or A-Z) character, and must be from 4 to 30 characters in length. 75 | INSTANCE_NAME=instance1 76 | 77 | #Give the complete path for a domain home to be created. 78 | DOMAIN_HOME_PATH=c:\oracle\middleware\user_projects\domains\bifoundation_domain 79 | 80 | #Format: hostname:port:servicename. For Application Cluster Database: host1:port1^host2:port2@servicename 81 | DATABASE_CONNECTION_STRING_BI=localhost:1521:orcl 82 | 83 | #Enter the BIPLATFORM schema username. 84 | DATABASE_SCHEMA_USER_NAME_BI=DEV_BIPLATFORM 85 | 86 | #Enter the BIPLATFORM schema password. 87 | DATABASE_SCHEMA_PASSWORD_BI=Password01 88 | 89 | #Select the database type in which the BIPLATFORM schema exists. Supported database types are Oracle Database, Microsoft SQL Server, IBM DB2. 90 | DATABASE_TYPE_BI=Oracle Database 91 | 92 | #Format: hostname:port:servicename. For Application Cluster Database: host1:port1^host2:port2@servicename 93 | DATABASE_CONNECTION_STRING_MDS=localhost:1521:orcl 94 | 95 | #Enter the MDS schema username. 96 | DATABASE_SCHEMA_USER_NAME_MDS=DEV_MDS 97 | 98 | #Enter the MDS schema password. 99 | DATABASE_SCHEMA_PASSWORD_MDS=Password01 100 | 101 | #Select the database type in which the MDS schema exists. Supported database types are Oracle Database, Microsoft SQL Server, IBM DB2. 102 | DATABASE_TYPE_MDS=Oracle Database 103 | 104 | # 105 | AUTOMATIC_PORT_DETECT=true 106 | 107 | # 108 | STATICPORT INI FILE LOCATION= 109 | 110 | #Provide the My Oracle Support Username. If you wish to ignore Oracle Configuration Manager configuration provide empty string for user name. 111 | MYORACLESUPPORT_USERNAME= 112 | 113 | #Provide the My Oracle Support Password 114 | MYORACLESUPPORT_PASSWORD=Password01 115 | 116 | #Set this to true if you wish to decline the security updates. Setting this to true and providing empty string for My Oracle Support username will ignore the Oracle Configuration Manager configuration 117 | DECLINE_SECURITY_UPDATES=true 118 | 119 | #Set this to true if My Oracle Support Password is specified 120 | SECURITY_UPDATES_VIA_MYORACLESUPPORT=false 121 | 122 | #Provide the Proxy Host 123 | PROXY_HOST= 124 | 125 | #Provide the Proxy Port 126 | PROXY_PORT= 127 | 128 | #Provide the Proxy Username 129 | PROXY_USER= 130 | 131 | #Provide the Proxy Password 132 | PROXY_PWD=Password01 133 | 134 | #Type String (URL format) Indicates the OCM Repeater URL which should be of the format [scheme[Http/Https]]://[repeater host]:[repeater port] 135 | COLLECTOR_SUPPORTHUB_URL= 136 | 137 | 138 | [SYSTEM] 139 | 140 | 141 | [APPLICATIONS] 142 | 143 | #Set to true to configure Oracle Business Intelligence Enterprise Edition. Otherwise set to false. 144 | CONFIGURE_BI=true 145 | 146 | #Set to true to configure Oracle Business Intelligence Publishing and Reporting. Otherwise set to false. 147 | CONFIGURE_BIP=true 148 | 149 | #Set to true to configure Oracle Real-Time Decisions. Otherwise set to false. 150 | CONFIGURE_RTD=true 151 | 152 | #Set to true to select all Oracle Essbase Components. Otherwise set to false. 153 | CONFIGURE_ESSBASE_SUITE=true 154 | 155 | 156 | [RELATIONSHIPS] 157 | 158 | 159 | -------------------------------------------------------------------------------- /obi/perl/manage_rpd.pl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/perl 2 | 3 | #---- Header ----------------------------------------------------------------------------------------- 4 | 5 | # ======================================================================= 6 | # Developed by Stewart Bryson @ Rittman Mead 7 | # Absolutely no warranty, use at your own risk 8 | # Please include this header in any copy or reuse of the script you make 9 | # ======================================================================= 10 | 11 | #---- Configurations --------------------------------------------------------------------------------- 12 | 13 | # default RPD password 14 | my $def_rpd_pw = 'Admin123'; 15 | 16 | # default Admin Server url 17 | my $def_wls_url = 't3://localhost:7001'; 18 | 19 | # default Admin Server username 20 | my $def_wls_user = 'weblogic'; 21 | 22 | # default Admin Server password 23 | my $def_wls_pw = 'welcome1'; 24 | 25 | # absolute path to the WLST script for deploying an RPD 26 | # if the value is left as undefined, then the default location is the wlst directory 27 | my $def_wslt_script; 28 | 29 | 30 | #---- References ------------------------------------------------------------------------------------- 31 | 32 | use Getopt::Long; 33 | use File::Basename; 34 | use Pod::Usage; 35 | use File::stat; 36 | use Cwd; 37 | use File::Spec; 38 | use Path::Class; 39 | 40 | # configurations 41 | Getopt::Long::Configure ("bundling"); 42 | 43 | # pragmas 44 | use strict; 45 | use warnings; 46 | 47 | #---- Body ------------------------------------------------------------------------------------------- 48 | 49 | 50 | # get program name 51 | my $basename = basename($0); 52 | 53 | # set the usage in a variable 54 | my $usage = qq{ 55 | Usage: $basename [OPTIONS] 56 | 57 | OPTIONS: 58 | 59 | -i PARAMETER: The input RPD repository. This can be a binary RPD repostory file, or an MDS XML repository directory. 60 | NOTE: if -i is binary repository file instead of an MDS XML repository directory, then -o is ignored. 61 | 62 | -p PARAMETER: The password for the MDS XML repository 63 | 64 | -o PARAMETER: The binary RPD repository file to generate. 65 | DEFAULT: a filename matching the directory name specified in -i with a .rpd extension appended to it 66 | 67 | -d OPTION: Deploy the binary RPD repository file to the BI Server 68 | 69 | -b OPTION: Restart the BI Server 70 | 71 | -a OPTION: Restart Presentation Services 72 | 73 | -r OPTION: Remove the binary RPD file after deployment 74 | 75 | -u PARAMETER: The Weblogic administrative user 76 | 77 | -w PARAMETER: The password for the user specified in -u 78 | 79 | -l PARAMTER: Weblogic Admin Server URL 80 | 81 | -v OPTION: Provide verbose output 82 | 83 | -e OPTION: Debug mode 84 | 85 | }; 86 | 87 | 88 | # create a hash to store options from the command-line 89 | my $options = {}; 90 | 91 | # collect options from the command-line 92 | # handle the usage as well 93 | unless ( 94 | GetOptions( 95 | $options, 96 | "i:s", 97 | "p:s", 98 | "o:s", 99 | "d!", 100 | "b!", 101 | "a!", 102 | "u:s", 103 | "w:s", 104 | "l:s", 105 | "r!", 106 | "v!", 107 | "e!", 108 | "help|?!" 109 | ) 110 | ) { 111 | pod2usage($usage); 112 | } 113 | 114 | pod2usage($usage) if defined($options->{help}); 115 | 116 | #---- Build variables ------------------------------------------------------------------------------------- 117 | # get environment out of the way 118 | my $sfile = file( File::Spec->rel2abs(__FILE__) ); 119 | my $dirname = $sfile->parent; 120 | my $updir = $dirname->parent; 121 | 122 | # capture the input 123 | my $input; 124 | my $itype; 125 | if ($options->{i}) { 126 | 127 | # get the absolute path of the $input 128 | $input = File::Spec->rel2abs($options->{i}); 129 | print ("input file: $input\n") if $options->{e}; 130 | 131 | # check to see if the -i option points to a directory or a file 132 | if (-d $input) { 133 | $itype = 'd'; 134 | } elsif (-e $input) { 135 | $itype = 'f'; 136 | } else { 137 | die "The -i option does not point to a valid file or directory\n"; 138 | } 139 | 140 | print "itype: $itype\n" if $options->{e}; 141 | 142 | } 143 | 144 | # Capture The oupput 145 | my $output = $options->{o}; 146 | 147 | my $wlstbin = q{wlst.cmd}; 148 | 149 | my $opmnctl = q{opmnctl}; 150 | 151 | my $wlspass = $options->{w}?$options->{w}:$def_wls_pw; 152 | 153 | my $wlsuser = $options->{u}?$options->{u}:$def_wls_user; 154 | 155 | my $wlsurl = $options->{l}?$options->{l}:$def_wls_url; 156 | 157 | my $pass = $options->{p}?$options->{p}:$def_rpd_pw; 158 | 159 | if ($options->{e} and $options->{o}) { 160 | print ("output: $output\n"); 161 | } 162 | 163 | if ($options->{e}) { 164 | print ("wlstbin: $wlstbin\nopmnctl: $opmnctl\nbasename: $basename\ndirectory: $dirname\nparent directory: $updir\nWLS url: $wlsurl\n"); 165 | } 166 | 167 | #---- Main Body ------------------------------------------------------------------------------------- 168 | 169 | # generate the RPD 170 | # only do this if INPUT points to a directory 171 | # otherwise, we have a binary RPD file already 172 | if ($input && $itype eq "d") { 173 | $output = GenerateRpd( $input, $output ); 174 | } 175 | 176 | # deploy the RPD 177 | # only deploy the rpd if -d is supplied 178 | if ($options->{d} && $input) { 179 | DeployRpd( $output?$output:$input ); 180 | } 181 | 182 | # Restart the BI Server 183 | # only restart if -b is specified 184 | if ($options->{b}) { 185 | RestartBI( ) unless $options->{e}; 186 | } 187 | 188 | # Restart Presentation Services 189 | # only restart if -b is specified 190 | if ($options->{a}) { 191 | RestartPS( ) unless $options->{e}; 192 | } 193 | 194 | if ($options->{r} && $options->{d}) { 195 | 196 | unlink $output if $output; 197 | 198 | } 199 | 200 | #---- Subroutines ------------------------------------------------------------------------------------- 201 | 202 | sub GenerateRpd { 203 | 204 | #print "GenerateRpd entered...\n"; 205 | 206 | my ($input, $output) = @_; 207 | 208 | die "-d option does not point to a directory" unless $itype eq 'd'; 209 | 210 | $output = $output?$output:$input . '.rpd'; 211 | 212 | # the name of the results file to use 213 | my $results = $input . '.txt'; 214 | 215 | # now use validaterpd to push this to a valid RPD file 216 | # I use validaterpd instead of biserverxmlexec because biserverxmlexec doesn't work correctly 217 | # My testing generated a bug with Oracle Support for this 218 | my $stmt = qq[validaterpd -P $pass -D "$input" -O "$results" -F "$output"]; 219 | print "Executing: $stmt\n" if $options->{v}; 220 | 221 | # get the absolute path 222 | $output = File::Spec->rel2abs($output); 223 | 224 | if ($options->{e}) { 225 | print ("output file: $output\n"); 226 | } 227 | else { 228 | my $stdout = qx[$stmt]; 229 | print "$stdout\n" if $options->{v}; 230 | } 231 | 232 | return $output; 233 | 234 | } 235 | 236 | sub DeployRpd { 237 | 238 | #print "DeployRpd entered...\n"; 239 | 240 | my ( $rpdfile ) = @_; 241 | #print "$rpdfile\n"; 242 | 243 | my $deploy_py = $def_wslt_script?$def_wslt_script:File::Spec->catfile( $updir, 'wlst', 'deploy_rpd.py' ); 244 | 245 | $rpdfile = File::Spec->rel2abs($rpdfile); 246 | 247 | my $stmt = qq{$wlstbin "$deploy_py" $wlsuser $wlspass $wlsurl "$rpdfile" $pass 'False' }; 248 | print "Executing: $stmt\n" if $options->{v}; 249 | 250 | if ($options->{e}) { 251 | print ("wlst script: $deploy_py\n"); 252 | } 253 | else { 254 | my $stdout = qx[$stmt]; 255 | print "$stdout\n" if $options->{v}; 256 | } 257 | 258 | } 259 | 260 | sub RestartBI { 261 | 262 | #print "RestartBI...\n"; 263 | 264 | my $stmt = qq{$opmnctl restartproc process-type=OracleBIServerComponent}; 265 | print "Executing: $stmt\n" if $options->{v}; 266 | 267 | my $stdout = qx[$stmt]; 268 | print "$stdout\n" if $options->{v}; 269 | 270 | } 271 | 272 | sub RestartPS { 273 | 274 | #print "RestartPS...\n"; 275 | 276 | my $stmt = qq{$opmnctl restartproc process-type=OracleBIPresentationServicesComponent}; 277 | print "Executing: $stmt\n" if $options->{v}; 278 | 279 | my $stdout = qx[$stmt]; 280 | print "$stdout\n" if $options->{v}; 281 | 282 | } 283 | -------------------------------------------------------------------------------- /obi/alerts/email_component_status.py: -------------------------------------------------------------------------------- 1 | ''' 2 | 3 | The MIT License (MIT) 4 | Copyright (c) 2016 Rittman Mead America Inc. 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 7 | 8 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 9 | 10 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 11 | 12 | ''' 13 | 14 | import smtplib 15 | import re 16 | from subprocess import PIPE, Popen 17 | from email.mime.multipart import MIMEMultipart 18 | from email.mime.text import MIMEText 19 | 20 | sender= "username" 21 | recipient = "recipient" 22 | username="username" 23 | password="passsword" 24 | smtp_server = "smtp.gmail.com" 25 | smtp_port = 587 26 | status_command = "command" 27 | render_html=True 28 | 29 | def main(): 30 | component_output = run_command(status_command) 31 | message = build_message(sender, recipient, component_output) 32 | send_email(sender, recipient, message, username, password) 33 | print("Done") 34 | 35 | def send_email(sender, recipient, message, username, password): 36 | try: 37 | smtp = smtplib.SMTP(smtp_server, smtp_port) 38 | smtp.starttls() 39 | smtp.login(username, password) 40 | smtp.sendmail(sender, recipient, message.as_string()) 41 | smtp.quit() 42 | except Exception as e: 43 | print("Failed to send email. Cause:\n" + str(e)) 44 | exit() 45 | 46 | 47 | def build_message(sender, recipient, body): 48 | message_from = "From: OBIEE Component Status <"+str(sender)+">\n" 49 | message_to = "To: <"+str(recipient)+">\n" 50 | message_subject = "Subject: OBIEE Component Status\n" 51 | message_blank = "\n" 52 | message_body = str(body) 53 | 54 | message_mime="MIME-Version: 1.0" 55 | message_content_type = "Content-type: text/html" 56 | 57 | msg = MIMEMultipart('alternative') 58 | msg["Subject"] = message_subject 59 | msg["From"] = message_from 60 | msg["To"] = message_to 61 | if render_html: 62 | part = MIMEText(message_body, "html") 63 | else: 64 | part = MIMEText(message_body+"\nProvided by Rittman Mead\nInterested in more services like this email? Sign up for Rittman Mead's Performance Analytics", "plain") 65 | msg.attach(part) 66 | 67 | return(msg) 68 | 69 | 70 | def run_command(command): 71 | try: 72 | output = Popen(command.split(" "), stdout=PIPE).communicate()[0] 73 | if render_html is True: 74 | output = organize_output(output) 75 | return(output) 76 | 77 | except Exception as e: 78 | print("Status command failed. Cause:\n" + str(e)) 79 | exit() 80 | 81 | 82 | def organize_output(output): 83 | original_output = output 84 | try: 85 | new_output = output 86 | begin_index = output.find("\n\nStatus")+2 87 | if begin_index < 0: 88 | raise Exception("New lines not found") 89 | 90 | new_output = re.sub(' +', ' ',re.sub('\n+', '\n',new_output[begin_index:].strip("\t"))) 91 | temp_output = new_output.split("\n") 92 | new_output="" 93 | 94 | #normal table rows 95 | header = False 96 | for row in reversed(temp_output): 97 | if "---" in row: 98 | header=True 99 | continue 100 | elements = row.rstrip().split(" ") 101 | if not header: 102 | #table rows 103 | row_html="" 104 | for element in range(0, len(elements)): 105 | if len(elements[element]) < 1: 106 | continue 107 | if element == 0: 108 | row_html+=""+str(elements[element])+"" 109 | else: 110 | row_html+=""+str(elements[element])+"" 111 | else: 112 | #table header 113 | row_html="" 114 | for element in elements: 115 | row_html+=""+str(element)+"" 116 | 117 | row_html+="" 118 | new_output = row_html + new_output 119 | if header: 120 | break 121 | 122 | new_output = "" + new_output 123 | 124 | #top lines 125 | for i in reversed(range(0,2)): 126 | new_output = "" + new_output + '' 127 | 128 | header_html='Rittman Mead
" + str(temp_output[i]) + "
' 129 | 130 | footer_html='
rittmanmead
  Interested in more services like this email?

Read about Rittman Mead's Performance Analytics service here
' 131 | 132 | new_output = header_html + new_output + footer_html 133 | 134 | return(new_output) 135 | 136 | except Exception as e: 137 | print("HTML styling failed, returning normal output. Cause:\n" + str(e)) 138 | render_html=False 139 | return(original_output) 140 | 141 | 142 | if __name__=="__main__": 143 | main() 144 | -------------------------------------------------------------------------------- /obi/service/init.d/obiee: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # chkconfig: 345 95 20 3 | # description: Start up OBIEE processes 4 | # 5 | # File: /etc/init.d/obiee 6 | # Purpose: Start and stop Oracle Business Intelligence 11g components. 7 | # Author: @rmoff / Rittman Mead Consulting, July 2013 8 | # Absolutely no warranty, use at your own risk 9 | # Please include this header in any copy or reuse of the script you make 10 | # 11 | # Version: 1.84 12 | # 13 | # Originally based on: https://forums.oracle.com/forums/thread.jspa?threadID=2179408, since gutted and rebuilt. 14 | # 15 | # Usage: 16 | # 1. Create this file at /etc/init.d/obiee 17 | # 2. chmod 750 /etc/init.d/obiee 18 | # 3. chkconfig --add obiee 19 | # 4. Setup /etc/sysconfig/obiee, see git repo for sample copy 20 | # 21 | # If not in place already, configure boot.properties for Admin and Managed Servers so that you're not 22 | # prompted for credentials when you start/stop them. 23 | # Ref: http://docs.oracle.com/cd/E28280_01/web.1111/e13708/overview.htm#i1068920 24 | # 25 | # Known issues: https://github.com/RittmanMead/scripts/issues/ 26 | # --------------------------------- 27 | 28 | # Source config file 29 | . /etc/sysconfig/obiee 30 | 31 | export ORACLE_INSTANCE 32 | # -------------------------- 33 | # Source function library. 34 | if [ -f /etc/rc.d/init.d/functions ]; then 35 | . /etc/rc.d/init.d/functions 36 | fi 37 | # -------------------------- 38 | # 39 | NODE_MANAGER_FINGERPRINT=$FMW_HOME'.*weblogic.NodeManager' 40 | ADMIN_SERVER_FINGERPRINT='Dweblogic.Name=AdminServer.*'$WLS_DOMAIN_PATH 41 | MANAGED_SERVER_FINGERPRINT='Dweblogic.Name=bi_server1.*'$WLS_DOMAIN_PATH 42 | OPMN_FINGERPRINT=$FMW_HOME'.*/bin/opmn' 43 | # 44 | # --------------------------------- 45 | 46 | # SUBSYS must match the script name (eg obiee), as it is used for the process lockfile 47 | SUBSYS=$(basename $0) 48 | LOCK_FILE='/var/lock/subsys/'$SUBSYS 49 | START_LOG=$LOG_PATH/$SUBSYS-start.log 50 | STOP_LOG=$LOG_PATH/$SUBSYS-stop.log 51 | 52 | # 53 | #------------------ 54 | # Check paths and permissions 55 | # 56 | if [ ! -d $FWW_HOME ] ; then 57 | echo '' 58 | echo -n '**FMW_HOME '$FMW_HOME' not found**' 59 | echo_failure 60 | echo '' 61 | fi 62 | 63 | if [ ! -f $LSOF_PATH ] ; then 64 | echo '' 65 | echo -n '**lsof binary not found at '$LSOF_PATH' **' 66 | echo_failure 67 | echo '' 68 | fi 69 | 70 | check_permissions() { 71 | 72 | abort=0 73 | 74 | if [ ! -f $LOCK_FILE ] ; then 75 | if [ $(touch $LOCK_FILE 2>&1|grep "Permission denied"|wc -l) -ne 0 ] ; then 76 | echo '' 77 | echo '** Lock file '$LOCK_FILE' is not writable by '$(whoami)' **' 78 | echo_failure 79 | echo '' 80 | abort=1 81 | fi 82 | else 83 | if [ ! -w $LOCK_FILE ] ; then 84 | echo '' 85 | echo '** Lock file '$LOCK_FILE' is not writable by '$(whoami)' **' 86 | echo_failure 87 | echo '' 88 | abort=1 89 | fi 90 | fi 91 | 92 | if [ ! -f $START_LOG ] ; then 93 | if [ $(touch $START_LOG 2>&1|grep "Permission denied"|wc -l) -ne 0 ] ; then 94 | echo '' 95 | echo '** Log file '$START_LOG' is not writable by '$(whoami)' **' 96 | echo_warning 97 | echo '' 98 | abort=1 99 | fi 100 | else 101 | if [ ! -w $START_LOG ] ; then 102 | echo '' 103 | echo '** Log file '$START_LOG' is not writable by '$(whoami)' **' 104 | echo_warning 105 | echo '' 106 | fi 107 | fi 108 | 109 | if [ ! -f $STOP_LOG ] ; then 110 | if [ $(touch $STOP_LOG 2>&1|grep "Permission denied"|wc -l) -ne 0 ] ; then 111 | echo '' 112 | echo '** Log file '$STOP_LOG' is not writable by '$(whoami)' **' 113 | echo_warning 114 | echo '' 115 | fi 116 | else 117 | if [ ! -w $STOP_LOG ] ; then 118 | echo '' 119 | echo '** Log file '$STOP_LOG' is not writable by '$(whoami)' **' 120 | echo_warning 121 | echo '' 122 | fi 123 | fi 124 | 125 | if [ $abort -eq 1 ] ; then 126 | echo -e '\n\n-------------\nTo start/stop this script must be run as root (directly, or with sudo)\n\n' 127 | exit 255 128 | fi 129 | } 130 | # 131 | #------------------ 132 | # 133 | start() { 134 | echo -en "\nStarting OBI Admin Server " 135 | su $ORACLE_OWNR -c "$WLS_DOMAIN_BIN/startWebLogic.sh" > $START_LOG 2>&1 & 136 | wait_to_start $ADMIN_SERVER_FINGERPRINT $ADMIN_SERVER_START_TIMEOUT 137 | 138 | if [ $? -eq 0 ] ; then 139 | 140 | echo -n "Starting OBI Node Manager " 141 | su $ORACLE_OWNR -c "$WLS_PATH/startNodeManager.sh" >> $START_LOG 2>&1 & 142 | wait_to_start $NODE_MANAGER_FINGERPRINT $NODE_MANAGER_START_TIMEOUT 143 | 144 | if [ $? -eq 0 ] ; then 145 | echo -n "Starting OBI Managed Server" 146 | su $ORACLE_OWNR -c "$WLS_DOMAIN_BIN/startManagedWebLogic.sh $WLS_MANAGED_SERVER" >> $START_LOG 2>&1 & 147 | wait_to_start $MANAGED_SERVER_FINGERPRINT $MANAGED_SERVER_START_TIMEOUT 148 | 149 | if [ $? -eq 0 ] ; then 150 | echo -n "Initiating OBI OPMN startup " 151 | su $ORACLE_OWNR -c "$ORACLE_INSTANCE/bin/opmnctl startall" >> $START_LOG 2>&1 152 | wait_to_start $OPMN_FINGERPRINT $OPMN_START_TIMEOUT 153 | fi 154 | fi 155 | fi 156 | echo '' 157 | 158 | } 159 | 160 | stop() { 161 | echo -en "\nShutting down OPMN and BI Components" 162 | su $ORACLE_OWNR -c "$ORACLE_INSTANCE/bin/opmnctl stopall" > $STOP_LOG 2>&1 163 | wait_to_die $OPMN_FINGERPRINT $OPMN_STOP_TIMEOUT 164 | 165 | echo -n "Shutting down OBI Managed Server" 166 | su $ORACLE_OWNR -c "$WLS_DOMAIN_BIN/stopManagedWebLogic.sh $WLS_MANAGED_SERVER" >> $STOP_LOG 2>&1 167 | wait_to_die $MANAGED_SERVER_FINGERPRINT $MANAGED_SERVER_STOP_TIMEOUT 168 | 169 | echo -n "Shutting down OBI Node Manager" 170 | echo " Killing pid: " $(pgrep $NODE_MANAGER_FINGERPRINT) >> $STOP_LOG 2>&1 171 | pkill -f $NODE_MANAGER_FINGERPRINT 172 | wait_to_die $NODE_MANAGER_FINGERPRINT $NODE_MANAGER_STOP_TIMEOUT 173 | 174 | echo -n "Shutting down OBI Admin Server" 175 | su $ORACLE_OWNR -c "$WLS_DOMAIN_BIN/stopWebLogic.sh" >> $STOP_LOG 2>&1 176 | wait_to_die $ADMIN_SERVER_FINGERPRINT $ADMIN_SERVER_STOP_TIMEOUT 177 | 178 | echo '' 179 | } 180 | 181 | 182 | echo_opmn_processes_status () { 183 | status=$(su $ORACLE_OWNR -c "$ORACLE_INSTANCE/bin/opmnctl status"|tail -n+6|head -n-1|awk '{print $7}'|sort -u) 184 | echo -en '\t' 185 | case $status in 186 | "Alive") 187 | echo -n "All OPMN-managed BI Components are running" 188 | echo_success 189 | ;; 190 | "Init") 191 | echo -n "All OPMN-managed BI Components are starting" 192 | echo_warning 193 | ;; 194 | "Down"|"Stop") 195 | echo -n "No OPMN-managed BI Components are running" 196 | echo_failure 197 | ;; 198 | *) 199 | echo -n "Some OPMN-managed BI Components are not running" 200 | echo_warning 201 | echo '' 202 | su $ORACLE_OWNR -c "$ORACLE_INSTANCE/bin/opmnctl status -l" 203 | esac 204 | echo '' 205 | } 206 | check_process_ports () { 207 | # Pass the 'fingerprint' of the process to check, which should be a regex to uniquely 208 | # identify the process in a pgrep -f call 209 | # 210 | # Returns: 211 | # 0 - Process not running 212 | # 1 - Process running but not listening on any port 213 | # - the port(s) on which the process is listening 214 | PID=$(pgrep -f $1) 215 | if [ $? -eq 0 ] ; then 216 | PORT=$(pgrep -f $1|xargs -I'{}' $LSOF_PATH -nPp {}|grep LISTEN|awk -F ":" '{print $2}'|cut -d " " -f 1|sort -u|paste -s) 217 | if [ -n "$PORT" ] ; then 218 | echo $PORT 219 | else 220 | echo 1 221 | fi 222 | else 223 | echo 0 224 | fi 225 | } 226 | 227 | 228 | echo_process_status () { 229 | rc=$(check_process_ports $1) 230 | case "$rc" in 231 | 0) 232 | echo_not_running 233 | ;; 234 | 1) 235 | echo_in_progress 236 | ;; 237 | *) 238 | echo -n "listening on port" $rc 239 | echo_success 240 | esac 241 | echo ' ' 242 | } 243 | 244 | 245 | status () { 246 | echo '' 247 | 248 | echo -n ' Checking WLS Admin Server: ' 249 | echo_process_status $ADMIN_SERVER_FINGERPRINT 250 | 251 | echo -n ' Checking WLS Node Manager: ' 252 | echo_process_status $NODE_MANAGER_FINGERPRINT 253 | 254 | echo -n ' Checking WLS Managed Server: ' 255 | echo_process_status $MANAGED_SERVER_FINGERPRINT 256 | if [ "$(check_process_ports $MANAGED_SERVER_FINGERPRINT)" != "0" ] ; then 257 | check_analytics 258 | fi 259 | 260 | echo -n ' Checking OPMN: ' 261 | echo_process_status $OPMN_FINGERPRINT 262 | if [ "$(check_process_ports $OPMN_FINGERPRINT)" != "0" ] ; then 263 | echo_opmn_processes_status 264 | fi 265 | 266 | echo '' 267 | } 268 | 269 | version () { 270 | 271 | # Check if unzip exists 272 | if [ -f `which unzip` ] ; then 273 | 274 | # Check if analytics.ear exists 275 | if [ ! -f $ANALYTICS_EAR ] ; then 276 | 277 | echo 'analytics.ear containing the version file (MANIFEST.MF) not found. checking .../tmp/_WL_user' 278 | 279 | # Check if manifest.mf exists in /tmp/_WL_user 280 | if [ ! -f $WL_TMP_MANIFEST ] ; then 281 | 282 | echo '.../tmp/_WL_user/ MANIFEST.MF not found. checking base version file' 283 | 284 | # Check if actual version.txt exists 285 | if [ -f $BIEE_VERSION_FILE ] ; then 286 | echo '' 287 | echo -n ' OBIEE version: ' 288 | grep -i version $BIEE_VERSION_FILE | awk -F ': ' '{print $2}' 289 | echo '' 290 | else 291 | echo 'base version file not found' 292 | fi 293 | else 294 | grep -i Implementation-Version $WL_TMP_MANIFEST | awk -F ': ' '{print $2}' 295 | fi 296 | else 297 | echo '' 298 | echo -n ' OBIEE version: ' 299 | unzip -p $ANALYTICS_EAR META-INF/MANIFEST.MF | grep -i Implementation-Version | awk -F ': ' '{print $2}' 300 | echo '' 301 | fi 302 | else 303 | # Check if manifest.mf exists in /tmp/_WL_user 304 | if [ ! -f $WL_TMP_MANIFEST ] ; then 305 | 306 | echo '.../tmp/_WL_user/ MANIFEST.MF not found. checking base version file' 307 | 308 | # Check if actual version.txt exists 309 | if [ -f $BIEE_VERSION_FILE ] ; then 310 | echo '' 311 | echo -n ' OBIEE version: ' 312 | grep -i version $BIEE_VERSION_FILE | awk -F ': ' '{print $2}' 313 | echo '' 314 | else 315 | echo 'base version file not found' 316 | fi 317 | else 318 | echo '' 319 | echo -n ' OBIEE version: ' 320 | grep -i Implementation-Version $WL_TMP_MANIFEST | awk -F ': ' '{print $2}' 321 | echo '' 322 | fi 323 | fi 324 | } 325 | 326 | check_analytics() { 327 | accessible=0 328 | # This will probe the managed server to try and work out if analytics is working or not 329 | # If the managed server has been configured not to listen locally (localhost) then this 330 | # will give a false negative 331 | for i in $(check_process_ports $MANAGED_SERVER_FINGERPRINT |sed 's/ /\n/') ; do 332 | # This only works for non-SSL connections 333 | http_response=$(curl -s -o /dev/null --location -w ""%{http_code}"" http://$(hostname):$i/analytics) 334 | if [ $http_response == 200 ] ; then 335 | echo -n ' OBIEE login page is accessible (non-SSL)' 336 | echo_success 337 | echo '' 338 | echo ' at http://'$(hostname)':'$i'/analytics' 339 | accessible=1 340 | elif [ $http_response == 401 ] ; then 341 | echo -n ' OBIEE login page (non-SSL) is up and SSO enabled [401]' 342 | echo_success 343 | echo '' 344 | echo ' at https://'$(hostname)':'$i'/analytics' 345 | accessible=1 346 | else 347 | # Let's try on HTTPS instead, telling curl to ignore any SSL certificate errors (--insecure) 348 | https_response=$(curl --insecure -s -o /dev/null --location -w ""%{http_code}"" https://$(hostname):$i/analytics) 349 | rc=$? 350 | if [ $https_response == 200 ] ; then 351 | echo -n ' OBIEE login page is accessible (SSL)' 352 | echo_success 353 | echo '' 354 | echo ' at https://'$(hostname)':'$i'/analytics' 355 | accessible=1 356 | elif [ $https_response == 401 ] ; then 357 | echo -n ' OBIEE login page (SSL) is up and SSO enabled [401]' 358 | echo_success 359 | echo '' 360 | echo ' at https://'$(hostname)':'$i'/analytics' 361 | accessible=1 362 | fi 363 | fi 364 | done 365 | if [ $accessible -eq 1 ] ; then 366 | return 0 367 | else 368 | echo '' 369 | echo -n '** OBIEE login page is not accessible **' 370 | echo_failure 371 | echo '' 372 | echo ' Login to the WLS Console and check : ' 373 | echo ' - the Managed Server state is RUNNING' 374 | echo ' - the Application Deployment "analytics" is running' 375 | fi 376 | } 377 | 378 | wait_to_die() { 379 | # check_process_ports will return 0 (not running), 1 (starting up) or other (port value) 380 | # This function will poll the process and based on the value returned (in rc) keep polling, 381 | # or after the predefined timeout period, kill the process by force. 382 | rc=999 383 | timeout=$2 384 | if [ -z $timeout ] ; then 385 | timeout=600 386 | fi 387 | # 30 is enough space on the line for the . to appear without overlapping the status message 388 | sleep_period=$(($timeout/30)) 389 | [[ $sleep_period -eq 0 ]] && sleep_period=1 390 | fingerprint=$1 391 | starttime=$(date +%s) 392 | while [ "$rc" != "0" ] 393 | do 394 | rc=$(check_process_ports $fingerprint) 395 | nowtime=$(date +%s) 396 | timediff=$(( $nowtime - $starttime )) 397 | if [ $timediff -gt $timeout ] ; then 398 | echo_warning 399 | echo '' 400 | echo -e '\tTimed out after '$timeout' seconds' 401 | echo -en '\tSending SIGKILL. ' 402 | pkill -SIGKILL -f $fingerprint 403 | sleep 5 404 | rc=$(check_process_ports $1) 405 | case "$rc" in 406 | 0) 407 | echo -n 'Process killed' 408 | echo_success 409 | ;; 410 | *) 411 | echo -n "Process still running" 412 | echo_failure 413 | esac 414 | echo '' 415 | return 1 416 | fi 417 | echo -n '.' 418 | if [ "$rc" != "0" ] ; then 419 | sleep $sleep_period 420 | fi 421 | done 422 | echo_success 423 | echo '' 424 | return 0 425 | } 426 | 427 | wait_to_start() { 428 | # check_process_ports will return 0 (not running), 1 (starting up) or other (port value) 429 | # This function will poll the process and based on the value returned (in rc) keep polling, 430 | # or after the predefined timeout period, give up. 431 | rc=1 432 | timeout=$2 433 | if [ -z $timeout ] ; then 434 | timeout=600 435 | fi 436 | # 30 is enough space on the line for the . to appear without overlapping the status message 437 | sleep_period=$(($timeout/30)) 438 | [[ $sleep_period -eq 0 ]] && sleep_period=1 439 | fingerprint=$1 440 | #echo 'Timeout: '$timeout ', Sleep period: '$sleep_period', Fingerprint: '$fingerprint 441 | starttime=$(date +%s) 442 | while [ "$rc" == "1" ] 443 | do 444 | sleep $sleep_period 445 | rc=$(check_process_ports $fingerprint) 446 | nowtime=$(date +%s) 447 | timediff=$(( $nowtime - $starttime )) 448 | if [ $timediff -gt $timeout ] ; then 449 | echo -n ' ' 450 | echo -n ' (Timed out after '$timeout' seconds ) ' 451 | break 452 | fi 453 | echo -n '.' 454 | done 455 | case "$rc" in 456 | 0|1) 457 | echo_failure 458 | rc=255 459 | ;; 460 | *) 461 | echo_success 462 | rc=0 463 | ;; 464 | esac 465 | echo '' 466 | #echo '--' 467 | #echo $rc 468 | #echo '--' 469 | return $rc 470 | } 471 | 472 | 473 | 474 | echo_not_running() { 475 | [ "$BOOTUP" = "color" ] && $MOVE_TO_COL 476 | echo -n "[" 477 | [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE 478 | echo -n $"NOT RUNNING" 479 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL 480 | echo -n "]" 481 | echo -ne "\r" 482 | return 1 483 | } 484 | 485 | echo_in_progress() { 486 | [ "$BOOTUP" = "color" ] && $MOVE_TO_COL 487 | echo -n "[" 488 | [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING 489 | echo -n $"IN PROGRESS" 490 | [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL 491 | echo -n "]" 492 | echo -ne "\r" 493 | return 1 494 | } 495 | 496 | case "$1" in 497 | start|startup) 498 | version 499 | check_permissions 500 | start 501 | sleep 60 502 | status 503 | echo '' 504 | touch $LOCK_FILE 505 | ;; 506 | stop|shutdown) 507 | version 508 | check_permissions 509 | stop 510 | rm -f $LOCK_FILE 511 | ;; 512 | status) 513 | version 514 | status 515 | ;; 516 | restart) 517 | version 518 | stop 519 | start 520 | ;; 521 | version) 522 | version 523 | ;; 524 | debug) 525 | echo "[debug mode]" 526 | ;; 527 | *) 528 | echo "Usage: $(basename $0) start|stop|restart|status|version" 529 | exit 1 530 | esac 531 | 532 | [[ "$1" != "debug" ]] && exit 0 533 | -------------------------------------------------------------------------------- /obi/security_audit/templates/audit_results.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | OBIEE12c Sec Audit 10 | 11 | 12 | 13 | 14 | 15 | 29 | 30 |
31 |
32 |
33 | 34 | 35 | 36 |
37 |
The Title
38 |
39 |
40 |

OBIEE12C Security Mappings

41 | 42 | 43 | 44 | 98 | 101 | 102 |

Permissions

Application Roles

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 |
ACLKey
NNo Access
RRead
XExecute
WWrite
DDelete
PChange Permissions
OSet Owner
LRun Publisher Report
SSchedule Publisher Report
VView Publisher Output
FFull Control
95 | 96 | 97 |
99 | {{ data|safe }} 100 |
103 | 104 | -------------------------------------------------------------------------------- /obi/security_audit/templates/no_audit_results.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | OBIEE12c Sec Audit 10 | 11 | 12 | 13 | 14 | 15 | 29 | 30 |
31 |
32 |
33 | 34 | 35 | 36 |
37 |
The Title
38 |
39 |
40 |

OBIEE12C Security Mappings

41 | 42 | 43 | 44 | 98 | 103 | 104 |

Permissions

Application Roles

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 |
ACLKey
NNo Access
RRead
XExecute
WWrite
DDelete
PChange Permissions
OSet Owner
LRun Publisher Report
SSchedule Publisher Report
VView Publisher Output
FFull Control
95 | 96 | 97 |
99 | {{ data|safe }} 100 |

The tested OBIEE12c environments' application role mappings are consistent.

101 | 102 |
105 | 106 | --------------------------------------------------------------------------------