Posts from May 2026

APEX 26.1 upgrade from 24.2

Oracle finally released the long anticipated 26.1 release of APEX yesterday. Here are the steps I followed to upgrade from APEX 24.2 on Oracle Linux 9.

Oracle 26ai database

Oracle database version 26ai (23.26) was already installed and configured. This is the recommended database version for APEX 26.1 although Oracle database 19c (19.18 or higher) is also supported.

$ sqlplus / as sysdba

SQL*Plus: Release 23.26.1.0.0 - Production on Fri May 15 12:06:39 2026
Version 23.26.1.0.0

Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 6439552584 bytes
Fixed Size          5023304 bytes
Variable Size        3372220416 bytes
Database Buffers     3053453312 bytes
Redo Buffers            8855552 bytes
Database mounted.
Database opened.

Oracle listener

$ lsnrctl start
LSNRCTL for Linux: Version 23.26.1.0.0 - Production on 15-MAY-2026 12:08:40

Starting /opt/oracle/product/26ai/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 23.26.1.0.0 - Production
Log messages written to /opt/oracle/diag/tnslsnr/ol9-26/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol9-26.localdomain)(PORT=1521)))

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 23.26.1.0.0 - Production
Start Date                15-MAY-2026 12:08:41
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Log File         /opt/oracle/diag/tnslsnr/ol9-26/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ol9-26.localdomain)(PORT=1521)))
The listener supports no services
The command completed successfully

ORDS

ORDS 26.1.1 was released on 14 May 2026 in conjunction with the release of APEX 26.1. Upgrading ORDS to 26.1.1 from 26.1 is required to support the APEXlang functionality but a trivial upgrade (from 26.1).

$ /u01/ords/bin/ords install
ORDS: Release 26.1 Production on Fri May 15 11:13:03 2026

Configuration:
  /u01/config/ords
Oracle REST Data Services - Interactive Install
  Enter a number to select the database pool to upgrade ORDS or create an additional database pool
    [1] default      jdbc:oracle:thin:@//ol9-26.localdomain:1521/pdb1
    [C] Create an additional database pool
  Choose [1]:
  Provide database user name with administrator privileges.
    Enter the administrator username: ORDSADMIN: ******
  Enter the database password for ORDSADMIN: ******

Retrieving information.
Connecting to database user: ORDS_PUBLIC_USER url: jdbc:oracle:thin:@//ol9-26.localdomain:1521/pdb1
2026-05-15T11:13:28.912Z INFO        The log file is defaulted to the current working directory located at /u01/ords/logs/
2026-05-15T11:13:28.988Z INFO        Upgrading Oracle REST Data Services schema 26.1.0.r0900845 to version 26.1.1.r1321130 in PDB1
2026-05-15T11:13:47.340Z INFO        Completed upgrade for Oracle REST Data Services version 26.1.1.r1321130. Elapsed time: 00:00:18.168
2026-05-15T11:13:47.342Z INFO        Log file written to /u01/ords/logs/ords_upgrade_2026-05-15_111328_91638.log

Check the ORDS version is correct.

$ ords --version
ORDS: Release 26.1 Production on Fri May 15 11:14:25 2026

Configuration:
  /u01/config/ords
Oracle REST Data Services 26.1.1.r1321130

APEX

Download APEX 26.1 software

$ wget https://download.oracle.com/otn_software/apex/apex-latest.zip
$ mkdir ~/software/APEX/apex-26.1
$ cd ~/software/APEX/apex-26.1
$ unzip ~/apex-latest.zip

Upgrade to APEX 26.1

$ sqlplus / as sysdba

SQL> alter session set container=PDB1;

SQL> @apexins APEX APEX TEMP /i/
  ...set_appun.sql
PL/SQL procedure successfully completed.
...set_ufrom_and_upgrade.sql
PL/SQL procedure successfully completed.

. ORACLE
.
. Oracle APEX Installation.
..........................................
.
...set_appun.sql
... Checking prerequisites (MANUAL)
.
. SYSDBA Privilege
.   pass - Connection with SYSDBA privilege.
. Database rolling upgrade
.   pass - No rolling upgrade.
. DB components
.   pass - Database version: 23.26.1.0.0
.   pass - APEX: version=24.2.0, status=INVALID
.   pass - XDB: version=23.0.0.0.0
. XDB
.   pass - is valid
. DB parameters
.   pass - workarea_size_policy is AUTO
. PL/SQL Web Toolkit
.   pass - version 20.0.0.0.1
. Tablespaces
.   pass - found APEX
.   pass - found APEX
.   pass - found TEMP
. PHASES (1,2,3)...

PL/SQL procedure successfully completed.

.
... Prerequisite checks passed.
.
...gen_adm_pwd.sql
Phase 1 (Installation)
#
# Bootstrapping
#
...apxsqler_exit.sql
...setting session environment
...Configuring SHARING clause
...Creating users
...create user APEX_260100
...core_grants.sql
...grant APEX owner core privileges
...done grant APEX owner core privileges
...Creating APEX_260100 Install Objects
...wwv_flows_release
...wwv_flows_apexlang_version
...wwv_install_api.sql
No errors.
...wwv_install_tabs.sql
...wwv_install_seq
...wwv_install$
...wwv_install_action$
...wwv_install_error$
...wwv_flow_install_errors
No errors.
...wwv_install_api.plb
No errors.
...wwv_install_error$_bi
No errors.
#
# Proceeding with upgrade installation.
#
timing for: Bootstrapping
Elapsed:    0.13
#
# Creating APEX_GRANTS_FOR_NEW_USERS_ROLE
#
APEX_ADMINISTRATOR_READ_ROLE exists.
APEX_ADMINISTRATOR_ROLE exists.
APEX_GRANTS_FOR_NEW_USERS_ROLE exists.

timing for: Creating APEX_GRANTS_FOR_NEW_USERS_ROLE
Elapsed:    0.02
#
# Creating SYS Objects
#
No errors.
...wwv_util_APEX_260100
No errors.
...wwv_util_APEX_260100
No errors.
... Re-using existing key.
...sys.wwv_flow_val
No errors.
...wwv_flow_val
No errors.
...CONNECT as the Oracle user who will own the Oracle APEX engine

timing for: Creating SYS Objects
Elapsed:    0.00
#
# Creating APEX Tables
#
...flows_files_upgrade
...create or upgrade wwv_flow_file_objects
...create flow objects
GENERIC OBJECTS
WORKSPACE
SESSION STATE MANAGEMENT
PROPERTY EDITOR
APPLICATION > SHARED COMPONENTS > CREDENTIALS
APPLICATION > SHARED COMPONENTS > REMOTE SERVERS
APPLICATION
...wwv_flow_application_groups
...wwv_flows_reserved
...wwv_flow_pages_reserved
WORKSPACE USERS AND GROUPS
...wwv_flow_fnd_user
...wwv_flow_developers
...wwv_flow_password_history
...wwv_flow_fnd_user_groups
...wwv_flow_fnd_group_users
...wwv_flow_fnd_group_groups
...wwv_flow_acl_group_users
...wwv_flow_preferences$
...wwv_flow_persistent_auth$
APPLICATION > SHARED COMPONENTS > DATA PROFILES
APPLICATION > SHARED COMPONENTS > WEB SOURCES
<snip>
#
# Installing 4155
#
PL/SQL procedure successfully completed.

--application/set_environment
API Last Extended:20260330
Your Current Version:20260330
This import is compatible with version: 20260330
COMPATIBLE (You should be able to run this import without issues.)
ID offset during import: 0
New ID offset for application: 0
APPLICATION 4155 - Scheme Authentication Login
--application/delete_application
--application/create_application
--application/shared_components/plugins/authentication_type/com_oracle_authentication_4155
--application/plugin_settings
--application/shared_components/navigation/listentry
--application/shared_components/files/icons_app_icon_192_png
--application/shared_components/security/authorizations/sso_authentication
--application/shared_components/navigation/navigation_bar
--application/shared_components/logic/application_items/ai_service
--application/shared_components/logic/application_items/fsp_after_login_url
--application/shared_components/logic/application_computations/ai_service
--application/shared_components/logic/application_settings
--application/shared_components/navigation/tabs/standard
--application/shared_components/navigation/tabs/parent
--application/pages/page_groups
--application/shared_components/navigation/breadcrumbentry
--application/shared_components/user_interface/themes
--application/shared_components/user_interface/theme_style
--application/shared_components/security/authentications/authentication
--application/user_interfaces/combined_files
--application/pages/page_00001
--application/pages/page_00050
--application/pages/page_00099
--application/pages/page_00200
--application/pages/page_01000
--application/shared_components/logic/component_groups/builder_shared_components
--application/deployment/definition
--application/deployment/checks
--application/deployment/buildoptions
--application/end_environment
... elapsed: .95 sec
...done

timing for: Installing 4155
Elapsed:    0.02
#
# Installing Central Themes
#
PL/SQL procedure successfully completed.

Oracle APEX Central Themes

...Installing Universal Theme

--application/set_environment
API Last Extended:20260330
Your Current Version:20260330
This import is compatible with version: 20260330
COMPATIBLE (You should be able to run this import without issues.)
ID offset during import: 0
New ID offset for application: 0
APPLICATION 8842 - Universal Theme Legacy
--application/delete_application
--application/create_application
--application/shared_components/plugins/template_component/theme_42_avatar
--application/shared_components/plugins/template_component/theme_42_badge
--application/shared_components/plugins/template_component/theme_42_button
--application/shared_components/plugins/template_component/theme_42_comments
--application/shared_components/plugins/template_component/theme_42_content_row
--application/shared_components/plugins/template_component/theme_42_media_list
--application/shared_components/plugins/template_component/theme_42_timeline
--application/plugin_settings#
<snip>
#
# Recompiling APEX_260100
#
...reset_state_and_show_invalid.sql

timing for: Recompiling APEX_260100
Elapsed:    0.43
#
# Installing APEX REST Config
#
...gen_adm_pwd.sql
...set_appun.sql
...setting session environment
...create APEX_LISTENER and APEX_REST_PUBLIC_USER users
...grants for APEX_LISTENER and ORDS_METADATA user
INFO: 12:29:28 Setup the APEX REST migration privileges using APEX_260100 schema version 26.1.0
INFO: 12:29:28 grant execute on "ORDS_METADATA"."ORDS_MIGRATE" to "APEX_260100"
INFO: 12:29:28 Configuring APEX and ORDS schemas for url mapping
INFO: 12:29:28 Made APEX_PUBLIC_USER proxiable from ORDS_PUBLIC_USER
INFO: 12:29:28 Made APEX_REST_PUBLIC_USER proxiable from ORDS_PUBLIC_USER
INFO: 12:29:28 APEX_POOL_CONFIG Synonym exists
INFO: 12:29:28 grant select on "APEX_260100"."WWV_FLOW_POOL_CONFIG" to "ORDS_RUNTIME_ROLE"
INFO: 12:29:28 Created ORDS_METADATA.APEX_WWV_FLOW_POOL_CONFIG as view over APEX_260100.WWV_FLOW_POOL_CONFIG
INFO: 12:29:28 grant select on "ORDS_METADATA"."APEX_WWV_FLOW_POOL_CONFIG" to "ORDS_RUNTIME_ROLE"
INFO: 12:29:28 Created ORDS_METADATA.UNIFIED_POOL_CONFIG view.
INFO: 12:29:28 grant select on "ORDS_METADATA"."UNIFIED_POOL_CONFIG" to "ORDS_RUNTIME_ROLE"
Found APEX 26.1.0. Migrating APEX entry points to ORDS PL/SQL Procedure Gateway Allow List
Invoking APEX API...
Found APEX 26.1.0. Granting execute on ORDS_APEX_SSO package to "APEX_260100"
INFO: 12:29:28 APEX schema: APEX_260100
Updated ORDS views and synonyms successfully.
INFO: 12:29:28 Setup the APEX REST migration privileges using APEX_260100 schema version 26.1.0
INFO: 12:29:28 grant execute on "ORDS_METADATA"."ORDS_MIGRATE" to "APEX_260100"
INFO: 12:29:28 Configuring APEX and ORDS schemas for url mapping
INFO: 12:29:28 Made APEX_PUBLIC_USER proxiable from ORDS_PUBLIC_USER
INFO: 12:29:28 Made APEX_REST_PUBLIC_USER proxiable from ORDS_PUBLIC_USER
INFO: 12:29:28 APEX_POOL_CONFIG Synonym exists
INFO: 12:29:28 grant select on "APEX_260100"."WWV_FLOW_POOL_CONFIG" to "ORDS_RUNTIME_ROLE"
INFO: 12:29:28 Created ORDS_METADATA.APEX_WWV_FLOW_POOL_CONFIG as view over APEX_260100.WWV_FLOW_POOL_CONFIG
INFO: 12:29:28 grant select on "ORDS_METADATA"."APEX_WWV_FLOW_POOL_CONFIG" to "ORDS_RUNTIME_ROLE"
INFO: 12:29:28 Created ORDS_METADATA.UNIFIED_POOL_CONFIG view.
INFO: 12:29:28 grant select on "ORDS_METADATA"."UNIFIED_POOL_CONFIG" to "ORDS_RUNTIME_ROLE"
Found APEX 26.1.0. Migrating APEX entry points to ORDS PL/SQL Procedure Gateway Allow List
Invoking APEX API...
Found APEX 26.1.0. Granting execute on ORDS_APEX_SSO package to "APEX_260100"
INFO: 12:29:29 APEX schema: APEX_260100
Updated ORDS views and synonyms successfully.

timing for: Installing APEX REST Config
Elapsed:    0.03
#
# Set Loaded/Upgraded in Registry
#
timing for: Set Loaded/Upgraded in Registry
Elapsed:    0.00
#
# Removing Unused SYS Objects and Public Privs
#
...drop view sys.flow_sessions
...drop view sys.flow_parameters
...drop view sys.flow_sqlarea
...drop view sys.flow_sga
...drop view sys.wwv_flow_gv$session

timing for: Removing Unused SYS Objects and Public Privs
Elapsed:    0.00
#
# Validating Installation
#
...(12:29:29) Starting validate_apex for APEX_260100
...(12:29:29) Checking missing privileges for APEX_260100
...(12:29:31) Checking missing privileges for APEX_GRANTS_FOR_NEW_USERS_ROLE
...(12:29:31) Re-generating APEX_260100.wwv_flow_db_version
... wwv_flow_db_version is up to date
...(12:29:31) Checking for sys.wwv_flow_cu_constraints
...(12:29:31) Checking for the existence of APEX public synonyms
...(12:29:31) Checking invalid public synonyms
...(12:29:31) Key object existence check
...(12:29:34) Post-ORDS updates
...(12:29:34) calling wwv_util_apex_260100.post_ords_upgrade
...enabled_schema
...define_module
...define_template
...define_handler
...set_module_origins_allowed
...(12:29:35) Setting DBMS Registry for APEX to valid
...(12:29:35) Exiting validate_apex
JOB_QUEUE_PROCESSES: 40

timing for: Validating Installation
Elapsed:    0.10
#
# Actions in Phase 3:
#
    ok 1 - BEGIN                            |   0.00
    ok 2 - Updating DBA_REGISTRY                    |   0.00
    ok 3 - Computing Pub Syn Dependents                 |   0.02
    ok 4 - Invalidating Pub Syn Dependents              |   0.02
    # 4 objects
    ok 5 - Upgrade Hot Metadata and Switch Schemas          |   0.00
    ok 6 - Removing Jobs                        |   0.00
    ok 7 - Init Phase HOT                       |   0.02
    ok 8 - Determining whether APEX is in use               |   0.00
    ok 9 - Setting Patch Status: APPLYING               |   0.02
    ok 10 - Removing FLOWS_FILES grants and synonyms            |   0.03
    ok 11 - Purging Expired Sessions                    |   0.00
    ok 12 - Purging Builder Sessions                    |   0.00
    ok 13 - Dropping Upgrade Triggers in APEX_240200            |   0.03
    ok 14 - Creating Upgrade Triggers                   |   0.00
    ok 15 - Increment Sequences                     |   0.00
    ok 16 - Disabling Constraints and Triggers              |   0.02
    ok 17 - Copying WWV_FLOW_WORKSHEET_RPTS - 1/37          |   0.00
    # UPGRADE_PARALLEL_DEGREE: 1
    ok 18 - create mapping table for WWV_FLOW_WORKSHEET_RPTS        |   0.00
    ok 19 - Run copy statement for WWV_FLOW_WORKSHEET_RPTS      |   0.00
    # copied 201 rows into WWV_FLOW_WORKSHEET_RPTS
    ok 20 - Rebuilding WWV_FLOW_WS_RPTS_IDX4,WWV_FLOW_WS_BASE_RPT_IDX,WW|   0.00
    ok 21 - Copying WWV_FLOW_WORKSHEET_CONDITIONS - 2/37        |   0.00
    ok 22 - create mapping table for WWV_FLOW_WORKSHEET_CONDITIONS  |   0.00
    ok 23 - Run copy statement for WWV_FLOW_WORKSHEET_CONDITIONS    |   0.00
    # copied 4 rows into WWV_FLOW_WORKSHEET_CONDITIONS
    ok 24 - Rebuilding WWV_FLOW_WS_CONDITIONS_IDX           |   0.00
    ok 25 - Copying WWV_FLOW_WORKSHEET_COMPUTATION - 3/37       |   0.00
    ok 26 - Run copy statement for WWV_FLOW_WORKSHEET_COMPUTATION   |   0.02
    # copied 2 rows into WWV_FLOW_WORKSHEET_COMPUTATION
    ok 27 - Rebuilding WWV_FLOW_WS_COMP_COLS_IDX,WWV_FLOW_WS_COMP_COLS_I|   0.00
    ok 28 - Copying WWV_FLOW_WORKSHEET_NOTIFY - 4/37            |   0.00
    ok 29 - Run copy statement for WWV_FLOW_WORKSHEET_NOTIFY        |   0.00
    # copied 0 rows into WWV_FLOW_WORKSHEET_NOTIFY
    ok 30 - Rebuilding WWV_FLOW_WORKSHEET_NTFY_IDX3,WWV_FLOW_WORKSHEET_N|   0.00
    ok 31 - Copying WWV_FLOW_WORKSHEET_GROUP_BY - 5/37          |   0.00
    ok 32 - Run copy statement for WWV_FLOW_WORKSHEET_GROUP_BY      |   0.00
    # copied 1 rows into WWV_FLOW_WORKSHEET_GROUP_BY
    ok 33 - Rebuilding WWV_FLOW_WS_GROUPBY_IDX4,WWV_FLOW_WS_GROUPBY_IDX,|   0.00
    ok 34 - Copying WWV_FLOW_WORKSHEET_PIVOT - 6/37         |   0.00
    ok 35 - Run copy statement for WWV_FLOW_WORKSHEET_PIVOT     |   0.00
    # copied 0 rows into WWV_FLOW_WORKSHEET_PIVOT
    ok 36 - Rebuilding WWV_FLOW_WS_PIVOT_IDX2,WWV_FLOW_WS_PIVOT_IDX4    |   0.00
    ok 37 - Copying WWV_FLOW_WORKSHEET_PIVOT_AGG - 7/37         |   0.00
    ok 38 - create mapping table for WWV_FLOW_WORKSHEET_PIVOT_AGG   |   0.00
    ok 39 - Run copy statement for WWV_FLOW_WORKSHEET_PIVOT_AGG     |   0.00
<snip>
    # copied 0 rows into WWV_FLOW_WORKFLOW_VARIABLES$
    ok 121 - Rebuilding WWV_WORKFLOW_VAR$_FLOWID_FX,WWV_WORKFLOW_VAR$_VA|   0.00
    ok 122 - Copying WWV_FLOW_WORKFLOW_PARTICIPANT$ - 36/37     |   0.00
    ok 123 - Run copy statement for WWV_FLOW_WORKFLOW_PARTICIPANT$  |   0.00
    # copied 0 rows into WWV_FLOW_WORKFLOW_PARTICIPANT$
    ok 124 - Rebuilding WWV_WORKFLOW_PART$_SGID_FX,WWV_WORKFLOW_PART$_WF|   0.00
    ok 125 - Copying WWV_FLOW_WORKFLOW_AUDIT_LOG$ - 37/37       |   0.00
    ok 126 - Run copy statement for WWV_FLOW_WORKFLOW_AUDIT_LOG$    |   0.00
    # copied 0 rows into WWV_FLOW_WORKFLOW_AUDIT_LOG$
    ok 127 - Rebuilding WWV_WORKFLOW_AUDIT$_TENID_FX,WWV_WORKFLOW_AUDIT$|   0.00
    ok 128 - Upgrading Hot Metadata                 |   0.00
    ok 129 - Enabling Constraints and Triggers              |   0.05
    ok 130 - Purging Expired Sessions                   |   0.00
    ok 131 - Purging Builder Sessions                   |   0.00
    ok 132 - Creating Public Synonyms                   |   0.05
    ok 133 - Granting Public Synonyms                   |   0.12
    ok 134 - Granting to FLOWS_FILES                    |   0.00
    ok 135 - Creating FLOWS_FILES grants and synonyms           |   0.00
    ok 136 - Syncing ORDS Gateway Allow List                |   0.00
    ok 137 - Meta-Cleanup                       |   0.00
    ok 138 - Upgrading Team Development                 |   0.00
    ok 139 - Installing FLOWS_FILES Objects             |   0.02
    ok 140 - Installing APEX$SESSION Context                |   0.00
    ok 141 - Recompiling APEX_260100                    |   0.43
    ok 142 - Installing APEX REST Config                |   0.03
    ok 143 - Set Loaded/Upgraded in Registry                |   0.00
    ok 144 - Setting Patch Status: APPLIED              |   0.00
    ok 145 - Removing Unused SYS Objects and Public Privs       |   0.00
    ok 146 - Dropping Upgrade Triggers in APEX_240200           |   0.00
    ok 147 - Validating Installation                    |   0.10
ok 3 - 147 actions passed, 0 actions failed             |   1.03

Thank you for installing Oracle APEX 26.1.0

Oracle APEX is installed in the APEX_260100 schema.

The structure of the link to the Oracle APEX Administration Services is as follows:
http://host:port/ords/apex_admin

The structure of the link to the Oracle APEX development environment is as follows:
http://host:port/ords/apex

timing for: Phase 3 (Switch)
Elapsed:    1.03

timing for: Complete Installation
Elapsed:   11.98

Upgrade APEX images from CDN

begin
  apex_instance_admin.set_parameter(
      p_parameter => 'IMAGE_PREFIX',
      p_value     => ' https://static.oracle.com/cdn/apex/26.1.0/');
  commit;
end;

Validate APEX version

SQL> select status from dba_registry where comp_id = 'APEX';

STATUS
------
VALID

SQL> select * from apex_release;

VERSION_NO   API_COMPATIBILITY   APEXLANG_VERSION    PATCH_APPLIED
----------   -----------------   ----------------    -------------
26.1.0       2026.03.30          26.1.0+3102         APPLIED

Access APEX 26.1

Login screen

APEX Login Screen

Home page

APEX Home Page

Upgrade Universal Theme

Navigate to the APEX application. Click 'Shared Components'

Informational message displayed.

'There is a new version of Universal Theme available! You can refresh your theme to take advantage of new features, enhancements, and bug fixes'.

Click 'Refresh Theme'.

The success message should be displayed.

'Successfully refreshed Universal Theme'.

Upgrade APEX applications

Upgrade each application using 'Utilities - Upgrade Application'.

APEX Upgrade Application

Things I Wish I'd Said

[ Originally published in 1999 and lovingly salvaged from the WayBack archive ]

The Chameleons were a band formed in 1981 Middleton, north Manchester, England who released three albums before they split up in 1987.

The Chameleons consisted of Mark Burgess (bass, vocals), Dave Fielding (guitar), Reg Smithies (guitar) and John Lever (drums).

I'm somewhat ashamed to admit that when I first saw the Chameleons live, I barely noticed them. They were supporting U2 at the prestigious venue known as the University of Warwick Arts Centre in late 1981. At the time, U2 were relatively unknown too outside indy circles. I remember Bono slagging off the Radio 1 PlayList when introducing 'Fire'.

Anyway, my first memory of the Chameleons was Mark walking on to the stage in front of probably 200 people in the Arts Centre (probably held 1500) muttering what later transpired to be the immortal words -

'Hi - we're the Chameleons and we're from Manchester'

Of course, everyone was drinking elsewhere or talking and waiting for U2. It wasn't until the summer of 1982 that I heard a session by The Chameleons on Piccadilly radio (local Manchester radio station). I still have the tape of that session - the songs included 'Monkeyland' and 'Fan The Bellows'

After that I saw the Chameleons play quite a few times mainly in Manchester (Ritzy's, Hacienda, Salford College). The Manchester gigs were great and notable for the large devoted Middleton contingent. I'd only been to the Hacienda once before and it struck me as an overpriced, overrated venue. It had big screens with flashing images and clips from obscure, cult movies like 'Attack of the Killer Tomatoes'. It was brilliant to hear the 'Chameleons Barmy Army' blasting out and people invading the stage, leaping around and generally antagonising the FAC51 bouncers.

At that time, I used to watch Manchester United quite a lot as well. I used to go to most home games and some away games. It struck me that the atmosphere at Chameleons gigs was quite similar to a United away game. Both events were preceded by pre-match drinking and a great sense of expectation. There was probably more tension and (threat of) violence at the football. In fact, the atmosphere at Chameleons gigs was brilliant and although the gigs were very physical - a lot of leaping around and stage diving - I don't actually remember any fighting. At other concerts (mainly The Smiths and The Fall) I went to around the same time, there was such a mixture of people (Punks, Skins, students, bouncers etc) there, the undercurrent of violent tension was always there and sometimes erupted.

I also have hazy memories of trying and failing to see The Chameleons (summer '82) at the Marquee in London (sold out) and again with a few mates at the Camden Palace. This was a bizarre gig. Mark's voice was knackered - they must have been in the middle of a lengthy tour. After a couple of songs, Mark invited the audience to come up and share the singing. Unsurprisingly it wasn't quite as good as the real thing and the lads had to end the set. All the expectation, waiting and drinking was for nothing - what an anti-climax.

Things he did say

I had an exchange of emails with Mark Burgess in late 1998. I've published it here in case it's of interest.

Things I wish I'd said

I have some bootleg tapes of varying quality of Chameleons concerts. Here's a complete list of the gigs with the set-lists including any notable quotes by Mark in between songs.

Derby Hall, Bury (3 July 1981)

First ever live concert as the Chameleons.

Don't Fall

In Shreds

On The Beach

Up The Down Escalator

We don't use set lists, you know what I mean. We play what we feel like playing on the spur of the moment so things get a bit quiet inbetween so you'll have to make your own entertainment. Bit like Joy Division when they played here. Anyone heard of them ? Breaking Glass [JD song title]

...like my white socks, know what I mean, new song, new faces. This is about the old faces.

Endless Space

This is a song about wanting to live forever. This is called Films.

Films

Thank you very much indeed. Ta. This is the last one I'm afraid. Well we know you've all got buses to catch and things so we won't keep you. It's called Monkeyland. (Dave) - This set, right, we going to dedicate it to Adrian 'cos we've known him for quite a bit but we haven't seen him for ages and he's played with us a few times. We've made a cassette - it's as good as the set list so if you want to buy it. This is Reg's favourite, Monkeyland. Some people think it's the best one. Monkeyland Raucous cheering, applause, shouts of 'Stay On'.

Monkeyland

Yeah, sound. Unfortunately...oh alright 'In Shreds', it is.

In Shreds

Derby Hall, Bury (1982 date unknown)

Quite early from the set and lack of audience fervour. If anyone know the exact date of this gig, please let me know.

Intro (tuning up)

Good evening. We're the Boomtown Rats, ha ha, my little joke. In actual fact we are The Chameleons.

Fan The Bellows

(inaudible) ...This is a song which reflects that... (inaudible) Standing on the corner (?) A song about the senseless waste of good people. It's called 'Here Today'.

Here Today

I'm falling from grace with myself again - happens all the time.

Falling from Grace

Reverb please. We're going to do a song called 'Nostalgia'. Like most of them, Reg wrote the song.

Nostalgia

(almost inaudible) If anyone sees a set list, let us know. (loud feedback). Ow. Yeah. Got it...This is a song called 'Looking Inwardly'.

Looking Inwardly

This has got a rather strange title. This song is so new we haven't even learned it properly so if it falls apart, you'll forgive us, won't you ? No. Oh alright then. It's called 'Singing Rule Britannia (as the walls close in)'

Rule Britannia

Goodnight. Thank you. God bless.

666 Club, Manchester (1 May 1982)

Excellent sound quality.

Intro

Hi. We're The Chameleons. We are as organised as ever. This song's called 'Don't Fall'.

Don't Fall

Thank you. Back, fresh from our extensive tour of outer Mesopotamia. Welcome home boys. Up the down escalator.

Up The Down Escalator

We don't have set lists you see. we just play what we feel like playing so you'll have to be patient. This one's called 'Endless Space'.

Endless Space

The story of making a record.

In Shreds

This is called 'Films' uh, uh, uh.

Films

It must be very nice to be trendy, I would not sit in the bar and on the balcony.

Bleak and industrial we're not, and never will be - not for you, or you, up there, 'cos we don't f**kin' care.

This song is for these people who at least listened, you know and made some sort of enthusiastic motions.

This is called 'Things I wish I'd said'. We've got to go after this one - we can't have you all...

Things I Wish I'd Said

Beggars in the sky

Fulham Greyhound, London (4 August 1983)

This is a small venue on Fulham Palace Road. Little more than a long, narrow pub.

A Person isn't Safe

Thank you very much. Thursday's child has far to go.

Thursday's Child

Jane, I've forgotten to bring my drink up. Could you bring us one ? Who is ? (to requests for 'In Shreds') (audience replies 'You') Yeah - right.

Perfume Garden

Monkeyland

This song's not about sex but it could be, you know. It's called 'Pleasure and Pain'.

Pleasure and Pain

Don't Fall

Well you reach the point where you know it's only your second skin.

Films

A song about being...(inaudible)

Here Today

Thank you.

Rule Britannia

Paper Tigers

In Shreds

View from a hill

Thank you very much. Good night.

Nostalgia

Thank you.

As High as You Can Go

Futurama, Leeds (18 September 1983)

All day festival featuring several bands. These gigs often ran to a tight schedule so note the lack of the usual encores.

Good afternoon. Yes, we found it, yes. I don't want you to think I'm a pop merchant or anything but I've had the shits about this gig since tea time yesterday so if I make a few mistakes - well you know ?

Just a second while Dave gets to grips with the technology.

Don't Fall

Thank you.

Here Today

Well you reach the point when you know it's only your second skin...

Films

Thank you. (faint chants of 'Chameleons Barmy Army' and 'Manchester La, la, la' - MUFC football chant)

A Person Isn't Safe

Thursday's Child

Up The Down Escalator

Perfume Garden

Thank you.

In Shreds

Thank you. Well, it really has been fun. This is the last one.

Less Than Human

Thank you. Goodnight.

Bremen, Germany (20 December 1983)

Don't Fall

Thank you. We're going to do a song for you now called 'Here Today'.

Here Today

Danke Schon. Oh yeah - it's a nice coat, very nice coat. That's not it, is it ?

Thursday's Child

You can rip the seats up, if you want, you know. You can rip 'em out, if you want, and throw them away with our permission. This is the first seated gig we've ever done - you know what I mean - it's a bit weird.

A Person Isn't Safe

Less Than Human

Danke Schon. You might have noticed a slight technical hitch during that number but it doesn't matter, does it ? No - it doesn't matter. Good. This is called 'Pleasure and Pain'.

Pleasure and Pain

Ta. When your mate comes back, can you tell him if he walks on the stage again, I'm going to kick him in the teeth. This is called - what is it called ? Oh, we haven't got a title - it's a new one, is it ? Oh all right.

Films

Danke Schon. This is called 'Paper Tigers'.

Paper Tigers

MonkeyLand

Danke Schon.

One Flesh

Thank you very much. Ta.

Rule Britannia

Up The Down Escalator

View From A Hill

Hacienda, Manchester (6 April 1984)

Typical, packed, frenetic Manchester gig. Actually went to this one which is the main reason I bought the tape. Poor sound quality and precious few quotes between the songs. I think this was probably because Mark had to contend with sporadic fighting between over enthusiastic fans trying to get onto the stage and Hacienda 'doormen'. Also the Hacienda stage is quite small and I remember the band seemed to be quite cramped.

Intro

Thanks for coming down (audience 'You what '). I said - Thanks for coming down (loud cheers) (inaudible)..in case the backdrop comes down.

Don't Fall

Chants of 'Chameleons' Barmy Army'.

Return of the Roughnecks

A Person Isn't Safe

Thursday's Child

Wish I could tell you about a new record but I can't.

Here Today

Pleasure and Pain

Stop fighting - the light's are coming down.

Perfumed Garden

More chants of 'Chameleons' Barmy Army' and 'On the Stage'.

Monkeyland

Films

Intrigue in Tangiers

Paper Tigers

In Shreds

Rule Britannia

Splitting in Two

Ta. I'd just like say again Thanks for coming 'cos I know it's good here.

Up The Down Escalator

Don't Fall

Camden Palace, London (11 September 1984)

Don't Fall

Not having set lists has caused problems for these camera men. This is called 'Intrigue'.

Intrigue In Tangiers

Thanks. It's very nice. You skimped a bit on the dressing rooms though. It smells like bad eggs down there, in the bowels of the place. This is called 'Monkeyland'.

Monkeyland

Now then, now then what shall we play next ? (audience shouts requests) What ? Yeah, yeah. This is 'Second Skin'.

Films

Every time we do a gig, Reg drinks my drink and there's never any left for me. Do you want some Ribena ? 'Shreds' (audience). No. Rule Britannia.

Rule Britannia

(requests) Pleasure and pain ? Yeah - we'll do 'Pleasure and Pain' - we like that.

Pleasure and Pain

Don't forget keeping in time is very welcome, know what I mean ? What ? Yeah. Shall we play that ? Yeah - we'll do 'Roughnecks'. This is called 'Return of the Roughnecks'.

Return of the Roughnecks

Do you know when we'll have another record out ? (pause) Know what that means ? F**k knows. (laughter). Well let's play 'A Person Isn't Safe' 'cos we like that. Well we like 'em all but, you know, you have your favourites, don't you ?

A Person Isn't Safe

In Shreds

Luxor Theatre, Koln, Germany (20 June 1985)

Intro

Good evening everybody (whispered).

A Person isn't Safe

Thank you, Danke schon.

(aside) Andy - there's some problems with the keyboard, can you not hear it ?

Just a few problems. Ees OK.

Rule Britannia.

Thank you very much. Thank you very much. Thank you.

A Person Isn't Safe

Return of the Roughnecks

Monkeyland

Oi - are you ready ?

Less Than Human

In Shreds

Intrigue In Tangiers

Danke Schon.

Paper Tigers

I am thanking you very much.

Pleasure and pain

Films

You're a long way from home (to request for 'Don't Fall'). This is called 'Home is where the heart is'

Home is where the heart is

Danke Schon. Auf wiedersehen.

Tomorrow Never Comes

Don't Fall

Thank you very much. Goodbye.

Frankfurt, Germany (23 November 1986)

Intro (unknown, jolly little instrumental ditty)

Swamp Thing

Mad Jack

Don't look back. If you want to dance, Jack.

A Person Isn't Safe.

Thank you very much. How are you ? Excuse the manners but I have a cold. That was about the rape of a woman. This is about the rape of a country and he starts it. 'Come on Mark' (audience). I am coming on.

Rule Britannia

Right. Another little happy song for you.

Less Than Human

Paradiso

Home Is Where The Heart Is

(Pause, audience shouts, tuning up). Sorry about that. All the lonely people, where do they all come from ?

Soul In Isolation

Intersperses bits of 'Mad Jack'

Splitting In Two

Is it a question of a University degree in Sociology ? Mark improvises snippets of a Fall song 'Rowche Rumble' - My baby's on Valium, my baby's on Valium - Rowche Rumble, ROWCHE RUMBLE is Valium'.

Manchester International (12 September 1986)

Great atmosphere. Great songs. Great concert. Great quotes. Only wish I'd been there.

Swamp Thing

Blimey, we are in demand aren't we ? This song's called 'Mad Jack'

Mad Jack

Ta. I'd like to make conversation you know, but my voice is going. You work me too hard - you know what I mean. All for 10 quid a week.

A Person Isn't Safe

Rule Britannia

Less Than Human

Tell 'em to move back ? Who do you think I am ? Moses ? Can you move back, he says. Move back. King Canute.

Paradiso

Home Is Where The Heart Is.

The management (laughs) has asked me to ask you : 'Would you please not stand on each other's shoulders ?' (audience roars). I suggest the next time he puts a crowd like this on, he loads them in in stacker trucks.

Soul In Isolation

Films

Pleasure and Pain

Caution

Be seeing you. Goodbye. You're showing your age there, aren't you (to requests for 'In Shreds') ?

Tomorrow Never Comes

Mark improvises 'I won't get fooled again' at the end.

You must have come here five years ago. Do you want me to tell you what 'In Shreds' was like or what ? (Mimics intro to 'In Shreds') No we're not doing 'In Shreds' but we're not, we're the bunch who wrote this.

Splitting in Two.

Mark improvises a few lines including 'Pass the paracetamol', 'Cha Cha Cha' (Marquis Cha Cha by The Fall ?) and then does a Chameleons on 45 compendium, including 'Strange Times' and 'Mad Jack'.

Is it a question of a University degree in Sociology ?

This tape then runs into a Bunnymen gig with 'Do It Clean' during which Ian McCulloch is also paying tribute to The Fall by interspersing verses from 'Totally Wired'.

BlogMore performance

BlogMore generates my site (1,000 posts) in less than 10 seconds but I was idly wondering what the incremental cost of the additional functionality davep has been busy adding recently.

The baseline run was with all optional features disabled. The tests were executed on Linux and the elapsed time was obtained from the time command. Each test was executed three times and the average elapsed time used.

with_search: false
with_sitemap: false
with_stats: false
with_read_time: false
with_graph: false
with_backlinks: false
invite_comments: false
RunElapsed (secs)
Baseline8.546
Search enabled8.749
Sitemap enabled8.869
Stats enabled9.140
Read time enabled9.843
Graph enabled11.406
Backlinks enabled12.785
Comments enabled12.827

Unsurprisingly perhaps, the generation of backlinks and computing the graph are the most expensive elements but still perfectly acceptable.