59
IBM Connections Administration Keep your Systems Running The Right Way Learn The Skills and Tricks

IconUS 2016 conference - Connections Administration Skills

Embed Size (px)

Citation preview

IBM Connections AdministrationKeep your Systems Running The Right Way – Learn The Skills and Tricks

Let’s Say Thanks To Our Sponsor!

https://www.panagenda.com

Victor Toalaka “Dr. Vic”

20+ Years of talking tech

IBM Connections, Sametime, WebSphere, DB2,

Notes and Domino

[email protected]

Twitter: @TheToal

Skype: victor_toal

4

What We’ll Cover …

• The Three Spheres of Administration

• IBM WebSphere Administration

• IBM Connections - UI based Administration

• IBM Connections – the Command Line

• Tips, Tricks and Must-Does

• Regular Tasks you need to do

• Wrap-up/Summary/Questions (you choose)

5

The Three Spheres of Administration

▪ 1 - IBM WebSphere AdministrationThe IBM Console

WebSphere commands – Command line Glory

▪ 2 - IBM Connections - UI based AdministrationThe UI – what can you do as an administrator?

▪ 3 - IBM Connections – the Command LineWsadmin commands and WebSphere commands - access to the guts of Connections

6

What We’ll Cover …

• The Three Spheres of Administration

• IBM WebSphere Administration

• IBM Connections - UI based Administration

• IBM Connections – the Command Line

• Tips, Tricks and Must-Does

• Regular Tasks you need to do

• Wrap-up/Summary/Questions (you choose)

7

WebSphere – Lift the Veil of your new Bride ….

• What is WebSphere?

• The Lingo

• The IBM Console

• Some WebSphere Resources

8

▪ Why WebSphere and What is it?

▪ Simply put – if you want to administrate Connections you need to know WebSphere – it's where it all begins.

WebSphere in Lay Terms

▪ WebSphere is both a brand and a technology. The WebSphere brand covers a whole host of technologies that come together to create business solutions. For example, IBM Connections is a business solution -- underneath the covers it uses WebSphere Application Server (WAS), which is a runtime environment that Connections runs on.

▪ WAS provides a bunch of services (called J2EE) that Java applications use. Services like database access, mail services and security services. Without an application WAS does nothing – it has an administration interface but, unlike Domino you can't "do" anything with out of the box without an application. Simply put, WebSphere runs Java (J2EE) programs.

WebSphere

9

▪ Some WAS Terminology:

▪ Node – an individual system, either physical or virtual

▪ Node Manager – the process controlling the individual node and all servers in all cells, it executes the commands of the Deployment Manager

▪ Profile – a WebSphere entity similar to a node

▪ Application Server – a Java Virtual Machine process

▪ Application – a Java server application

▪ Cluster – a group of Servers, all running the same applications

▪ Cell – an administrative domain of one or more servers

▪ Deployment Manager (DM) – the administration application for a cell

WebSphere – The Lingo

10

How do all these pieces work together?

“Multiple Nodes in a Cell run Servers that contain Applications. All pieces are controlled

via the Deployment Manager”

WebSphere: The short of it ...

11

▪ It's your Graphical Interface to control WebSphere

▪ In network deployments the only server running an IBM console is the Deployment Manager

▪ The default administrator for WebSphere is called “wasadmin”, you need that account to administrate through the Console and via the command line

▪ The IBM console runs ONLY on the DM, it is where all administration takes place

▪ The console is what stands between you and a whole bunch of XML and properties files that would would have to edit manually otherwise . . .

The IBM Console

12

▪ Security comes first

▪ The first thing to do after you set up WebSphere:

▪ Create individual WebSphere administration accounts for all admins and assign them only the roles they need

▪ Synch all the nodes BEFORE you take the next step

▪ Change the wasadmin password and keep it secret ….

▪ Synch the nodes once more

▪ Give each admin only the rights they need ….

▪ Take a backup before doing this, DELETE it after you verified everything works …. Or leave it around forever, just have it when you need it!

WebSphere – your first tip ….

13

▪ Product Homepage

▪ http://www-01.ibm.com/software/websphere/

▪ Websphere 8.5 Infocenter

▪ http://www.ibm.com/support/knowledgecenter/SSAW57_8.5.5/as_ditamaps/was855_welcome_ndmp.html

▪ IBM Developerworks – WebSphere

▪ http://www.ibm.com/developerworks/websphere/

▪ WebSphere Related WIKIS:

▪ https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/public?sort=updated&tag=websphere

▪ Websphere Forums and Community:

▪ http://www.ibm.com/developerworks/websphere/community/

Useful WebSphere Resources

14

What We’ll Cover …

• The Three Spheres of Administration

• IBM WebSphere Administration

• IBM Connections - UI based Administration

• IBM Connections – the Command Line

• Tips, Tricks and Must-Does

• Regular Tasks you need to do

• Wrap-up/Summary/Questions (you choose)

15

▪ Being an Admin of Connections Features lets you

Homepage

▪ Add/remove Widgets

Metrics

▪ Review global system Metrics

Blogs

▪ Basic settings, theme settings, administrate individual users' blogs

Communities

▪ Add sources to catalog crawler

IBM Connections – The UI

16

▪ ….. continued

Activities

▪ Access to public trash

Mobile / MobileAdmin

▪ Access via https://<connectionsurl>/mobileAdmin/login

▪ Devise security, settings, users, wipe commands,

WIKIS

▪ Some special rights in individual WIKIS, even those you do not own (version control, etc.)

IBM Connections – The UI

17

What We’ll Cover …

• The Three Spheres of Administration

• IBM WebSphere Administration

• IBM Connections - UI based Administration

• IBM Connections – the Command Line

• Tips, Tricks and Must-Does

• Regular Tasks you need to do

• Wrap-up/Summary/Questions (you choose)

18

Command Line Commands come in two Flavors:

wsadmin commands

▪ Works through WebSphere with Connections internal data and settings

WebSphere Command Line tools

▪ Works with WebSphere settings and capabilities, not directly related to Connections data –mainly batch files

IBM Connections – the Command Line

19

wsadmin – what is it?

▪ A command shell to administrate aspects of a WebSphere Application Server Cell

▪ Can invoked to execute scripts written in JACL or JYTHON

▪ Can execute almost all actions of the IBM Console and many that the console is not able to

▪ We will concentrate on Connections specific wsadmin commands today

▪ Note: ALLWAYS execute wsadmin commands on the Deployment Manager (DM) and only in the DM's /bin directory – be careful if you run a managed node on the same server as the DM!

Command Line - wsadmin

20

You have three options how to initiate wsadmin and call Jython scripts to then execute a Connections Commands:

3-Steps: By The Book / WIKI:

▪ ")

▪ ./wsadmin.sh -lang jython -user wasadmin -password **** -port 8879

▪ execfile ("connectionsConfig.py")

▪ LCConfigService.checkOutConfig("/opt/IBM/connectexport/xml","vthome302Cell01

2-Steps: Launch a Profile:

▪ ./wsadmin.sh -lang jython -user wasadmin -password **** -profile connectionsConfig.py

▪ LCConfigService.checkOutConfig("/opt/IBM/connectexport/xml","vthome302Cell01")

wsadmin recap – choose how you want to run it

21

1-Step: The “All-in-One” Option

▪ ./wsadmin.sh -lang jython -user wasadmin -password **** -profile connectionsConfig.py -c "LCConfigService.checkOutConfig('/opt/IBM/connectexport/xml','vthome302Cell01')"

Wsadmin recap … continued

This is the option you want to use to createbatch files and scripts to chain wsadmin

commands!

Note: Sometimes you have to experiment with the order of

the [“] and ['] in the command. Also depends on the OS you run it on

22

What We’ll Cover …

• The Three Spheres of Administration

• IBM WebSphere Administration

• IBM Connections - UI based Administration

• IBM Connections – the Command Line

• Tips, Tricks and Must-Does

• Regular Tasks you need to do

• Wrap-up/Summary/Questions (you choose)

23

▪ Dr. Vic's basic rules - 'Thou Shalt':

▪ Create separate IBM console admins accounts for all staff - INCLUDING YOURSELF (covered earlier) – Keep the wasadmin account separate and don't mess with it.

▪ All wsadmin commands MUST be run on the DM, or they will not work and will create allot of errors

▪ Learn command line basics for WebSphere, do not rely on ONLY the graphical interface, allot of settings cannot be done there or not with the same detailed variables – and sometimes setting “stay behind”

▪ Take frequent back-ups when making system or security level changes, you will regret it otherwise

Tips, Tricks and Must-Does … The Beginning

24

▪ More of Dr. Vic's rules:

▪ Clean up after yourself and don't litter the WebSphere server with endless variants of back-up’d/saved versions of configuration files. (i.e 'files-config.xml.bak.thisismysafebackup', etc.) sometimes WebSphere picks them up and you have no clue as to why a change did not work …. and it just looks untidy! Yuck!

▪ Build a test/Dev system – you need a safe place to test changes in. Don't be the “I do all my test on live systems” guy/girl . . .

▪ Keep records of ALL changes you make – even the small ones – you will need to back-track your steps OFTEN

'Thou shalt' … continued

25

Exporting Connections Configuration Files

▪ DO NOT make a habit of copying/ftp Connections configuration xml files up-and-down from servers – export and then import them

▪ Ensures you always have the CORRECT active version

▪ Import checks for formatting errors and kicks them back at you (important for UNIX environments especially!!)

▪ Makes sure you have a back-up of the ORIGINAL xml files from the install BEFORE you first worked on them … you might need to know what the default setting is at some time.

Tips/Tricks – Connections Config Files

Another Dr. Vic rule:

Allways have an original

version backup!

26

Export command – always have a default location on your DM to export/import files (for me '/opt/IBM/connectexport/xml')

Check-out:

▪ ./wsadmin.sh -lang jython -user wasadmin -password **** -profile connectionsConfig.py -c "LCConfigService.checkOutConfig('/opt/IBM/connectexport/xml','vthome302Cell01')"

Check-in:

▪ ./wsadmin.sh -lang jython -user wasadmin -password **** -profile connectionsConfig.py -c "LCConfigService.checkInConfig('/opt/IBM/connectexport/xml','vthome302Cell01')“

Alternatively use a text editor that has XML formatting checking built in, such as Notepad++

Connections Config Files … continued

27

▪ You need to know this – EAR files are all-mighty

▪ Ear files are not specific to any one WebSphere environment, they can be exported on one environment and imported into another one WITHOUT any problem

▪ Only become environment specific if YOU put specific customizations into it

▪ This is a combination of WAS specific wsadmin commands AND WebSphere native scripts!

▪ The commands contain the path to specific local folders, be sure they exist and DO NOT CHANGE THEM - it is important that all back-ups etc. are contained in one location so you do not have to hunt all over the file system for them.

▪ [ /opt/IBM/connectexport/ear] – my default location to export all ear files to

▪ [/opt/IBM/connectexport/ear/exp-xxx] separate folder for each expanded feature/ear file (create manually if it does not exist)

▪ All commands must be executed wile residing in the DM /bin, otherwise the the wsadmincommands will fail with cryptic errors

Import / Export Ear Files

28

▪ Example using COMMUNITIES

▪ Export ear file

▪ ./wsadmin.sh -user wasadmin -password **** -c '$AdminApp export Communities /opt/IBM/connectexport/ear/communities.ear'

▪ Expand Ear file (so you can work on it)

▪ ./EARExpander.sh -ear /opt/IBM/connectexport/ear/communities.ear -operationDir /opt/IBM/connectexport/ear/exp-communities -operation expand

▪ Collapse/Repack ear file

▪ ./EARExpander.sh -ear /opt/IBM/connectexport/ear/communities.ear -operationDir /opt/IBM/connectexport/ear/exp-communities -operation collapse

▪ Install / re-import into WAS after change

▪ ./wsadmin.sh -user wasadmin -password **** -c '$AdminApp install /opt/IBM/connectexport/ear/communities.ear {-update -appname Communities}'

Import / Export Ear Files … continued

29

▪ Sync commands help keep the feature dB user entries synchronized with LDAP / Profiles

▪ Decide on specific days to run them – or whenever user errors appear in the log files … I often run them 1 – 3 times a week

▪ Can be run for each feature individually or as a batch file – I always run batch files and synchronize ALL features

▪ Note: not all features have individual synch commands as several features share databases (News, Homepage, etc.)

▪ If you have clustered WebSphere servers that are all running, you will need to be there to respond to the system prompts!

▪ Different ways of synchronizing are possible – review the batch files in the end of the presentation

Sync Features with LDAP / Profiles

30

Example how to synch Communities Users with Profiles

▪ wsadmin.bat -lang jython -user wasadmin -password ***** -profile communitiesAdmin.py -c "CommunitiesMemberService.syncAllMemberExtIds({'allowInactivate':'true'})“

▪ wsadmin.bat -lang jython -user wasadmin -password ***** -profile communitiesAdmin.py -c "CommunitiesMemberService.syncAllMemberExtIds()“

▪ wsadmin.bat -lang jython -user wasadmin -password ***** -profile communitiesAdmin.py -c "CommunitiesMemberService.syncAllMembersByExtId({'updateOnEmailLoginMatch':'true'})“

▪ Run all commands one after another, but leave some time between them – and then run them all once more!

▪ Do not run the commands simultaneously on separate cluster members → BIG PROBLEM!

▪ Create batch files and run them to avoid the tedious copy-and-paste

Sync Features … continued

31

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile filesAdmin.py -c "FilesMemberService.syncAllMemberExtIds()“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile communitiesAdmin.py -c "CommunitiesMemberService.syncAllMemberExtIds()“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile activitiesAdmin.py -c "ActivitiesMemberService.syncAllMemberExtIds()“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile blogsAdmin.py -c "BlogsMemberService.syncAllMemberExtIds()“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile dogearAdmin.py -c "DogearMemberService.syncAllMemberExtIds()“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile forumsAdmin.py -c "ForumsMemberService.syncAllMemberExtIds()“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile newsAdmin.py -c "NewsMemberService.syncAllMemberExtIds()“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile wikisAdmin.py -c "WikisMemberService.syncAllMemberExtIds()"

Sync Features … Syncscript 1

32

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile wikisAdmin.py -c "WikisMemberService.syncAllMemberExtIds({'allowInactivate':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile newsAdmin.py -c "NewsMemberService.syncAllMemberExtIds({'allowInactivate':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile forumsAdmin.py -c "ForumsMemberService.syncAllMemberExtIds({'allowInactivate':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile filesAdmin.py -c "FilesMemberService.syncAllMemberExtIds({'allowInactivate':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile communitiesAdmin.py -c "CommunitiesMemberService.syncAllMemberExtIds({'allowInactivate':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile dogearAdmin.py -c "DogearMemberService.syncAllMemberExtIds({'allowInactivate':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile blogsAdmin.py -c "BlogsMemberService.syncAllMemberExtIds({'allowInactivate':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile activitiesAdmin.py -c "ActivitiesMemberService.syncAllMemberExtIds({'allowInactivate':'true'})"

Sync Features … Syncscript 2

33

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile wikisAdmin.py -c "WikisMemberService.syncAllMembersByExtId({'updateOnEmailLoginMatch':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile newsAdmin.py -c "NewsMemberService.syncAllMembersByExtId({'updateOnEmailLoginMatch':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile forumsAdmin.py -c "ForumsMemberService.syncAllMembersByExtId({'updateOnEmailLoginMatch':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile filesAdmin.py -c "FilesMemberService.syncAllMembersByExtId({'updateOnEmailLoginMatch':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile communitiesAdmin.py -c "CommunitiesMemberService.syncAllMembersByExtId({'updateOnEmailLoginMatch':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile dogearAdmin.py -c "DogearMemberService.syncAllMembersByExtId({'updateOnEmailLoginMatch':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile blogsAdmin.py -c "BlogsMemberService.syncAllMembersByExtId({'updateOnEmailLoginMatch':'true'})“

▪ call wsadmin.bat -lang jython -user wasadmin -password ***** -profile activitiesAdmin.py -c "ActivitiesMemberService.syncAllMembersByExtId({'updateOnEmailLoginMatch':'true'})"

Sync Features … Syncscript 3

34

When the synch command in the GUI just do not appear to get the job done ...

./syncNode.sh [IP or FQHN] 8879 -conntype SOAP -username wasadmin -password ****

syncNode.bat [IP or FQHN] 8879 -conntype SOAP -username wasadmin -password ****

▪ Replace the [IP or FQHN] with either an IP or a fully qualified DNS name – do not include the square brackets

▪ Requires the Nodemanager to be stopped, but the DM MUST be running

▪ If the node and DM share the same physical server you can enter LOCALAHOST as an address

▪ Remove all files in the /opt/IBM/WebSphere/Appserver/profiles/AppServ01/wstemp first

Command Line Node Syncronization

35

▪ All Features have scheduled tasks that update data or run clean-ups

▪ Clear these lists when actions are not happening or if you see issues with upgrades

▪ They are recreated the next time the feature is restarted

Tip1:

I remove ALL scheduled tasks prior to ANY iFix installs or CR upgrades

Tip2:

If you are upgrading Connections to a new version, remove all tasks prior to shutting down for the dB migration. Run it once more AFTER starting the

upgraded system and restart your system once more.

Scheduled Tasks

36

Initialize wsadmin and call the Connections config script:

▪ ./wsadmin.sh -lang jython -user wasadmin -password ***** -port 8879

▪ execfile ("connectionsConfig.py")

List all Scheduled Tasks:

▪ Scheduler.listAllTasks()

Clear all Scheduled Tasks:

▪ Scheduler.clearAllTasks()

Scheduled Tasks … continued

You can delete the tasks while

your servers

Are running, just restart the

clusters to

Recreate the tasks

37

Nodemanager commands

Stop Nodemanager AND all running servers simultaneously

▪ ./stopNode.sh -stopservers -username wasadmin -password ****

Check status of ALL servers (incl. DM and nodemanagers)

▪ ./serverStatus.sh -all -username wasadmin -password ****

Check status of a single server (incl. DM or nodemanagers)

▪ ./serverStatus.sh [servername] -username wasadmin -password ****

WebSphere Server command line utilties

38

▪ Now something JUST for Windows

▪ WASServicecmd.exe is a front-end utility for the native WebSphere WASServcice.exe

▪ It can add AND remove WebSphere servers/nodemanagers/DMs as Windows services

Add a WAS Service to Windows – the quick way

http://www-01.ibm.com/support/docview.wss?uid=swg21397335

Best practices suggests NOT to add Servers, but only

nodemanagers and the DM as a service!

39

Update / Change Profiles data

▪ /wsadmin.sh -lang jython -user wasadmin -password **** -profile profilesAdmin.py

Edit BACKGROUND data in Profile

▪ ProfilesService.updateExperience("[email protected]","This is new text that will be entered into the Background field for Ann.“)

Edit "ABOUT ME" data of Profile:

▪ ProfilesService.updateDescription("[email protected]","This is new text that will be entered into the About Me tab for Ann.")

Delete Photo in Profile

▪ ProfilesService.deletePhoto("[email protected]")

Lets change some Connections data . . . .

40

Update / Change Communities data

▪ ./wsadmin.sh -lang jython -user wasadmin -password **** -profile communitiesAdmin.py

Change name of a Community

▪ CommunitiesService.updateCommunityName("Community NAME or UUID", "New Name")

Edit "Description" of Community Profile:

▪ CommunitiesService.updateCommunityDescription("Community NAME or UUID", "New description.")

Delete Bookmarks in Community

▪ This requires a two step process:

▪ removeurl= ["http://valid1.url.com", "http://valid2.url.com", "http://valid3.url.com"]

▪ CommunitiesService.removeReferencesByUri("Community NAME or UUID",removeurl)

Changing more Connections data . . . .

41

Update / Change BLOGS data

▪ /wsadmin.sh -lang jython -user wasadmin -password **** -profile profilesAdmin.py

Edit Blog handle

▪ BlogsAdminService.renameWeblogHandle("<old_handle>", "<new_handle>")

Change the URL or blogs (system wide):

▪ This is necessary if you change the base URL of the Connections system

▪ BlogsAdminService.fixBrokenUrls(<replacePattern>, <replaceValue>)

Lets change some Connections data . . . .

42

▪ Report on Libraries … all them files!!

Get list of all orphaned personal file libraries:

▪ ./wsadmin.sh -lang jython -user wasadmin -password **** -profile filesAdmin.py -c 'FilesPrintService.saveToFile(FilesLibraryService.browsePersonalOrphan("size", "false", 1, 100000), "/opt/IBM/PersonalLibraries-Orphans.csv")'

List of All Community Libraries

▪ ./wsadmin.sh -lang jython -user wasadmin -password **** -profile filesAdmin.py -c 'FilesPrintService.saveToFile(FilesLibraryService.browseCommunity("size", "false", 1, 100000), "/opt/IBM/CommunityLibraries.csv")'

Lets Report on some settings and data . . . .

43

▪ Report on Libraries … more and more

List of All User Libraries

▪ ./wsadmin.sh -lang jython -user wasadmin -password **** -profile filesAdmin.py -c 'FilesPrintService.saveToFile(FilesLibraryService.browsePersonal("size", "false", 1, 100000), "/opt/IBM/PersonalLibraries.csv")'

List of File/Libraries Policies

▪ ./wsadmin.sh -lang jython -user wasadmin -password **** -profile filesAdmin.py -c 'FilesPrintService.saveToFile(FilesPolicyService.browse("title", "true", 1, 25),"/opt/IBM/LibraryPolicies.csv")'

Lets Report on some settings and data . . . . continued

44

Find and move all orphaned files to a separate location

./wsadmin.sh -lang jython -user wasadmin -password **** -profile filesAdmin.py -c 'FilesDataIntegrityService.checkFiles("/opt/IBM/files_orphaned")'

This can happen after dB crashes or Connections server failures – or after a migration.

You will have to review the files manually and “just figure it out”

Files … do you have Orphans?

45

List all your Library Policies – personal and community based

./wsadmin.sh -lang jython -user wasadmin -password **** -profile filesAdmin.py -c 'FilesPrintService.saveToFile(FilesPolicyService.browse("title", "true", 1, 25),"/opt/IBM/LibraryPolicies.csv")'

Or display it in the console

wsadmin>FilesPolicyService.browse("title", "true", 1, 25)

[{maximumSize=2147483648, title=!Default for Community Files, id=00000000-0000-0000-0000-000000000001},

{maximumSize=524288000, title=!Default for Community Wikis, id=00000000-0000-0000-0000-000000000003},

{maximumSize=524288000, title=!Default for Non-Community Wikis, id=00000000-0000-0000-0000-000000000002},

{maximumSize=10737418240, title=!Default for Personal Files, id=00000000-0000-0000-0000-000000000000}]

Files … What are your Policies for Libraries?

Optimize DB2 Configuration

▪ The IBM Connections Wizard will create all the databases for you, alternatively you can create them manually using the scripts included in the wizard subfolders

▪ But to have an optimally functioning DB2 server that supports online back-up with automatic retention/removal of old back-ups, minimizes i/o and “Just works better” you need to go beyond the base setup.

DB2 Maintenance

▪ DB2 requires regular RUNSTATS and REORGS to be run to rebuild and optimize tables spaces and indexes.

▪ IBM supplies the base runstat/reorg sql files with the dB wizard, but only for the core feature databases (Profiles, Communities, etc.). If you have other applications (DOCS, Surveys, CCM, third party application dBs etc.) then there are no special sql command files for them.

▪ You can use the script on the next page to run: runstat – reorg – runstat (in that order!!) for ANY DB2 database

YOU HAVE TO SHUT DOWN CONNECTIONS TO DO THIS! NO DB ACCESS IS ALLOWED

DB2 Maintenance

Log into the DB2 server as the db2admin and open an Administrator Command Prompt:

db2 connect to [database name]

db2 -x "SELECT 'RUNSTATS ON TABLE ' || TRIM(TABSCHEMA) || '.' || TRIM(TABNAME) || ' AND INDEXES ALL;' FROM SYSCAT.TABLES WHERE TYPE = 'T' AND TABSCHEMA NOT LIKE 'SYS%' ORDER BY TABSCHEMA, TABNAME" > db2_runstats.sql.out

db2 -tvf db2_runstats.sql.out

db2 -x "SELECT 'REORG TABLE ' || TRIM(TABSCHEMA) || '.' || TRIM(TABNAME) || ';' FROM SYSCAT.TABLES WHERE TYPE = 'T' AND TABSCHEMA NOT LIKE 'SYS%' ORDER BY TABSCHEMA, TABNAME" > db2_reorg.sql.out

db2 -tvf db2_reorg.sql.out

db2 -tvf db2_runstats.sql.out

DB2 Maintenance

▪ Like any database system, DB2 will accumulate whitespace and that needs reclaiming to regain disk space and make the dB run faster and more efficiently

▪ This is most important for the HOMEPAGE database, but also PEOPLEDB and ACTIVIES and BLOGS can really benefit from it

▪ Not all types of tablespaces are reclaimable, you will experience errors when trying to reclaim space in some databases s– that is normal, temp tablespace and system tablespaces are not made to be reclaimed

▪ It is a multistep process, commands to follow ….

YOU HAVE TO SHUT DOWN CONNECTIONS TO DO THIS! NO DB ACCESS IS ALLOWED

DB2 Maintenance

Start a DB2 command line and connect to HOMAPAGE

connect to HOMEPAGE

Lower the High Water Mark

ALTER TABLESPACE BOARD16TABSPACE LOWER HIGH WATER MARK

ALTER TABLESPACE BRD32TABSPACE LOWER HIGH WATER MARK

ALTER TABLESPACE HOMEPAGETABSPACE LOWER HIGH WATER MARK

ALTER TABLESPACE HPNT16TABSPACE LOWER HIGH WATER MARK

ALTER TABLESPACE NEWS4TABSPACE LOWER HIGH WATER MARK

ALTER TABLESPACE NEWSTABSPACE LOWER HIGH WATER MARK

DB2 Maintenance

Review the Reclaimable Tablespace output, you need that number to then actually reclaim the space in the third step. Run each command individually and note the TBSP_RECLAIMABLE_MB number

select tbsp_name, tbsp_free_pages, tbsp_page_size * tbsp_free_pages /1024 / 1024 AS tbsp_reclaimable_mb from table(MON_GET_TABLESPACE('BOARD16TABSPACE', NULL))

select tbsp_name, tbsp_free_pages, tbsp_page_size * tbsp_free_pages /1024 / 1024 AS tbsp_reclaimable_mb from table(MON_GET_TABLESPACE('BRD32TABSPACE', NULL))

select tbsp_name, tbsp_free_pages, tbsp_page_size * tbsp_free_pages /1024 / 1024 AS tbsp_reclaimable_mb from table(MON_GET_TABLESPACE('HOMEPAGETABSPACE', NULL))

select tbsp_name, tbsp_free_pages, tbsp_page_size * tbsp_free_pages /1024 / 1024 AS tbsp_reclaimable_mb from table(MON_GET_TABLESPACE('HPNT16TABSPACE', NULL))

select tbsp_name, tbsp_free_pages, tbsp_page_size * tbsp_free_pages /1024 / 1024 AS tbsp_reclaimable_mb from table(MON_GET_TABLESPACE('NEWS32TABSPACE', NULL))

select tbsp_name, tbsp_free_pages, tbsp_page_size * tbsp_free_pages /1024 / 1024 AS tbsp_reclaimable_mb from table(MON_GET_TABLESPACE('NEWS4TABSPACE', NULL))

select tbsp_name, tbsp_free_pages, tbsp_page_size * tbsp_free_pages /1024 / 1024 AS tbsp_reclaimable_mb from table(MON_GET_TABLESPACE('NEWSTABSPACE', NULL))

DB2 Maintenance

▪ The results of that command will look something like this:

TBSP_NAME TBSP_FREE_PAGES TBSP_RECLAIMABLE_MB

------------------------------------------------------------------------------- -------------------- --------------------

BOARD16TABSPACE 11584 181

DB2 Maintenance

▪ Substitute the ### with the reclaimable MB number (minus some MB for overhead) and execute the command

ALTER TABLESPACE BOARD16TABSPACE REDUCE (ALL CONTAINERS ### M)

ALTER TABLESPACE BRD32TABSPACE REDUCE (ALL CONTAINERS ### M)

ALTER TABLESPACE HOMEPAGETABSPACE REDUCE (ALL CONTAINERS ### M)

ALTER TABLESPACE HPNT16TABSPACE REDUCE (ALL CONTAINERS ### M)

ALTER TABLESPACE NEWS32TABSPACE REDUCE (ALL CONTAINERS ### M)

ALTER TABLESPACE NEWS4TABSPACE REDUCE (ALL CONTAINERS ### M)

ALTER TABLESPACE NEWSTABSPACE REDUCE (ALL CONTAINERS ### M)

DB2 additional DB Configuration

▪ LOGARCHMETH1 – archival logging, allows online backups

▪ LOGARCHCOMPR1 – archive log compression

▪ auto_del_rec_obj – auto deletion of recovery objects

▪ rec_his_retentn – recovery history retention period

▪ num_db_backups – number of back-ups retained

These settings impact each other and are dependent on each other - they need to be adjusted correctly or they will not give you the expected results

Typical Database Setting And Backup

▪ db2 update db cfg for BLOGS using LOGARCHMETH1 disk:D:\DB2-Logging

▪ db2 update db cfg for BLOGS using auto_del_rec_obj ON

▪ db2 update db cfg for BLOGS using rec_his_retentn

▪ db2 15update db cfg for BLOGS using num_db_backups 3

▪ Db2 update db cfg for BLOGS using LOGARCHCOMPR1 on

▪ update db cfg for BLOGS using LOGFILSIZ 8196

▪ Turn on db2 archival logging and write the log files to the folder [D:\DB2-Logging]

▪ Turn on automatic log file deletion

▪ Turn on automatic log file retention

▪ Retain the last 15 days of log files (and then auto-delete), retain the last 3 back-ups (and then auto-delete),

▪ Compress any archived log files.

▪ Configure log files to be 8 MB large (default is 4 MB)

Now all you have to do is to run regular (=min. 1/day!) online db2 back-ups and then do a file level back

up the back-ups and db2 log files

System Logs Review

▪ We all hate it … but we have to do it if we want to catch stuff.

▪ If you can, get a log file aggregator tool – here you can look at and search all log files of all your systems simultaneously.

▪ Paid Product: SPLUNK

▪ Open Source: ELK

▪ You can also bring in logs from Domino, Windows, other OS files, router and FW logs …

Logs Review

▪ What are the files you need to look at?

WebSphere:SystemOut.log

▪ [WASinstall]\profiles\[profilename]\logs\[servername]\SystemOut.log

▪ Example:

▪ D:\IBM\WebSphere\AppServer\profiles\AppSrv01\logs\AppCluster_Server1\SystemOut.log – xxx.trace.log, etc.

▪ /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/AppCluster_Server1/SystemOut.log – trace.log, etc.

DB2: db2diag.log

▪ Example: C:\ProgramData\IBM\DB2\DB2COPY1\DB2\DIAG0000\db2diag.log

Logs Review

▪ Other important logs:

TDI Sync logs

▪ Require frequent review to find accounts that are not syncing or are giving you errors

▪ Changes to LDAP or data in them can cause the synchronization for large numbers of users to stop:

▪ employee.updates, employee.adds, employee.delete, employee.error, employee.skip ..

▪ Most important: logs\ibmdi.log

▪ Will give you the most info on WHY things went bad. Is very large …..

59

▪ My Blog:

▪ http://notesbusters.com

▪ Great WebSphere resource / Blog: Steve Robinson

▪ http://www.themiddlewareshop.com

▪ WebSphere WIKI

▪ http://www.bertucci.org

Additional Resources