The only thing I can think of is using a PFILE instead of an SPFILE file. If you are using a PFILE you must manually edit it and change the name. If you are using an SPFILE the parameter will be changed automatically.

If I understand you correctly, you are asking why changing the database name does not necessitate changing the service name? There is no direct relationship between them, you can define any number of service names to register with the listener. By default, there will be a service that does have the same name as the database (possibly with a domain appended) but you do not have to use that one. Query V$ACTIVE_SERVICES and DBA_SERVICES to see what services are available.

Edited by: JohnWatson on Oct 11, 2012 1:50 PM
Sorry - " a service that does have the same name as the database" should read " a service that does have the same unique name as the database"

The static registration in the listener doesn't matter (though of course you can connect to it if you want to). It is the db unique name that is registered dynamically as a service, and changing the db name won't change that.

JohnWatson wrote:
The static registration in the listener doesn't matter (though of course you can connect to it if you want to). It is the db unique name that is registered dynamically as a service, and changing the db name won't change that.

That's great, but the TNSNAMES used SERVICE_NAME=<db_name>, not the <DB_UNIQUE_NAME>!

Perhaps I didn't put it clearly. Your tnsnames alias is requesting a service. The service it asks for is the named after the db_unique_name. You haven't changed that. If you look at fhose views I mentioned, and the parameters dbname/db_unique_name/service_names, it should become clear.
Hope this helps, I don't think I can add more.