Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
Include Page
spaceKeyGrouper
pageTitleNavigation

Upgrade notes from Grouper v1.6 to v1.7 (similar for v2.0)

This upgrade was pretty painless, it took a while (~5 hour outage including testing), and there was little or no outage during the upgrade.  Note this is for an oracle upgrade, YMMV...

Here are the steps that were followed:

  • move drop views to end of SQL upgrade script (since we have systems that depend on the views
  • disable nagios on fastGrouperProdDaemon
  • select count of memberships of important groups, so we can sanity test the deployment (e.g. employees, some orgs, courses, etc)
  • backup membership lite view to a table
  • turn off daemon, ldap sync
  • readonly ws/ui (set this in the grouper.properties and bounce)
  • backup db (DBA)
  • increase tablespace for schema
  • backup old webapp dir

#################
clean out old entries from the change log:

create table change_log_entry_temp as select * from grouper_change_log_entry gcle where gcle.SEQUENCE_NUMBER > 2500000;
truncate table grouper_change_log_entry;
insert into grouper_change_log_entry (select * from change_log_entry_temp);
commit;
analyze table grouper_change_log_entry compute statistics;
drop table change_log_entry_temp;

#################
run rule on root stem and secure space stem:

    grouperSession = GrouperSession.startRootSession();
    rootStem = StemFinder.findRootStem(grouperSession);
    allowedStem = StemFinder.findByName(grouperSession, "penn:isc:ait:apps:secureSpace:spaces", true);
    allowedStemTest = StemFinder.findByName(grouperSession, "test:isc:ait:apps:secureSpace:spaces", true);

    RuleApi.vetoSubjectAssignInFolderIfNotInGroup(SubjectFinder.findRootSubject(), rootStem, null, false, "grouperExternal", Stem.Scope.SUB, "rule.entity.cannot.be.external", "Person cannot be assigned if an external user");

    
    RuleApi.vetoSubjectAssignInFolderIfNotInGroup(SubjectFinder.findRootSubject(), allowedStem, null, true, "grouperExternal", Stem.Scope.SUB, "rule.entity.can.be.external", "Person can be external");
    RuleApi.vetoSubjectAssignInFolderIfNotInGroup(SubjectFinder.findRootSubject(), allowedStemTest, null, true, "grouperExternal", Stem.Scope.SUB, "rule.entity.can.be.external", "Person can be external");

#################

select count(1) from grouper_memberships_lw_v

2500566
2501357

select count(1) from grouper_groups

69239
69240

select count(1) from grouper_stems

7171
7174

select from shibboleth and ldap feeder tables

select count(1) from grouper_memberships_lw_v where group_name = 'penn:community:employee:org:TOPU:UNIV:UADM:91XX:AIS:9147:9147_personorg'

23

################################

readonly mode:

/opt/appserv/tomcat_2v/webapps/grouper/WEB-INF/classes/grouper.hibernate.properties
/opt/appserv/tomcat_3b/webapps/grouperWs/WEB-INF/classes/grouper.hibernate.properties

#################################

select 'ANALYZE TABLE ' || table_name || ' COMPUTE STATISTICS;' as script from user_Tables where table_name like 'GROUPER%'

ANALYZE TABLE GROUPERORGS_HIERARCHICAL COMPUTE STATISTICS;      
ANALYZE TABLE GROUPERORGS_POC_ORGS COMPUTE STATISTICS;          
ANALYZE TABLE GROUPERORGS_POC_ORG_ASSIGN COMPUTE STATISTICS;    
ANALYZE TABLE GROUPER_ATTRIBUTES COMPUTE STATISTICS;            
ANALYZE TABLE GROUPER_ATTRIBUTE_ASSIGN COMPUTE STATISTICS;      
ANALYZE TABLE GROUPER_ATTRIBUTE_ASSIGN_VALUE COMPUTE STATISTICS;
ANALYZE TABLE GROUPER_ATTRIBUTE_DEF COMPUTE STATISTICS;         
ANALYZE TABLE GROUPER_ATTRIBUTE_DEF_NAME COMPUTE STATISTICS;    
ANALYZE TABLE GROUPER_ATTRIBUTE_DEF_NAME_SET COMPUTE STATISTICS;
ANALYZE TABLE GROUPER_ATTRIBUTE_DEF_SCOPE COMPUTE STATISTICS;   
ANALYZE TABLE GROUPER_ATTR_ASSIGN_ACTION COMPUTE STATISTICS;    
ANALYZE TABLE GROUPER_ATTR_ASSIGN_ACTION_SET COMPUTE STATISTICS;
ANALYZE TABLE GROUPER_AUDIT_ENTRY COMPUTE STATISTICS;           
ANALYZE TABLE GROUPER_AUDIT_TYPE COMPUTE STATISTICS;            
ANALYZE TABLE GROUPER_CHANGE_LOG_CONSUMER COMPUTE STATISTICS;   
ANALYZE TABLE GROUPER_CHANGE_LOG_ENTRY COMPUTE STATISTICS;      
ANALYZE TABLE GROUPER_CHANGE_LOG_ENTRY_TEMP COMPUTE STATISTICS;
ANALYZE TABLE GROUPER_CHANGE_LOG_TYPE COMPUTE STATISTICS;       
ANALYZE TABLE GROUPER_COMPOSITES COMPUTE STATISTICS;            
ANALYZE TABLE GROUPER_DDL COMPUTE STATISTICS;                   
ANALYZE TABLE GROUPER_FIELDS COMPUTE STATISTICS;                
ANALYZE TABLE GROUPER_FLAT_ATTRIBUTE_DEF COMPUTE STATISTICS;    
ANALYZE TABLE GROUPER_FLAT_GROUPS COMPUTE STATISTICS;           
ANALYZE TABLE GROUPER_FLAT_MEMBERSHIPS COMPUTE STATISTICS;      
ANALYZE TABLE GROUPER_FLAT_STEMS COMPUTE STATISTICS;            
ANALYZE TABLE GROUPER_GROUPS COMPUTE STATISTICS;                
ANALYZE TABLE GROUPER_GROUPS_TYPES COMPUTE STATISTICS;          
ANALYZE TABLE GROUPER_GROUP_SET COMPUTE STATISTICS;             
ANALYZE TABLE GROUPER_LOADER_LOG COMPUTE STATISTICS;            
ANALYZE TABLE GROUPER_MEMBERS COMPUTE STATISTICS;               
ANALYZE TABLE GROUPER_MEMBERSHIPS COMPUTE STATISTICS;           
ANALYZE TABLE GROUPER_ROLE_SET COMPUTE STATISTICS;              
ANALYZE TABLE GROUPER_STEMS COMPUTE STATISTICS;                 
ANALYZE TABLE GROUPER_TYPES COMPUTE STATISTICS;                 

- run the ddl

[appadmin@johns bin]$ dos2unix gsh.sh
dos2unix: converting file gsh.sh to UNIX format ...
[appadmin@johns bin]$ chmod +x gsh.sh

[appadmin@johns bin]$ ./gsh.sh -registry

Get script and run in toad after making indexes unusable

make indexes unusable before the inserts:

select * from user_indexes;
  cur_idx  usr_idxs% ROWTYPE;
  v_sql  VARCHAR2(1024);

BEGIN
  OPEN usr_idxs;
  LOOP
    FETCH usr_idxs INTO cur_idx;
    EXIT WHEN NOT usr_idxs%FOUND;

    v_sql:= 'ALTER INDEX ' || cur_idx.index_name || ' UNUSABLE';
  END LOOP;

END;

Compile invalid views in toad, reenable indexes

Add EPPN to the SQL person source table and to the sources.xml

########################################
compile all invalid views

  • get counts from DB, compare to original number
  • test atlassian (document)
  • test eforms (document)
  • test secureshare
  • post new grouper client to upenn.edu
  • download and test the client
  • test external subjects (document)
  • run a deep registry gsh check and see if it is ok
  • analyze the rest of the tables, starting with grouper_group_set
  • enable nagios, ldap sync
  • send email to users saying it is available
  • check daemons the day after and the day after to make sure ok