One of the best things I've ever seen:
select o.name, rows from sysobjects o inner join sysindexes i on o.id = i.id where i.indid < 2 and xtype='u' and o.name not in ('dtproperties')
Woo hoo...
Hey, ever had orphaned SQL server users... come on, tell the truth... YES YOU HAVE!
First, make sure that this is the problem. This will lists the orphaned users:
EXEC sp_change_users_login 'Report'
If you already have a login id and password for this user, fix it by doing:
EXEC sp_change_users_login 'Auto_Fix', 'user'
If you want to create a new login id and password for this user, fix it by doing:
EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'
I love blogging about new technology appropriate for the enterprise. I want to change the face of innovation to embrace change, agility and promote an innovation culture.
Friday, 24 October 2008
Be careful when you use a web server as a generation machine
Make sure that you have separate WEB-INF dirs. One with WEB-DEVELOPMENT on and one with WEB-DEVELOPMENT off. If you don't do this, your web server will start and run, but will not be able to launch UBEs. Trust me. Just create a GEN-WEB-INF dir as a copy of the WEB-INF dir and alter the gen.bat to point to that dir. You can then customise the generator jbdj.ini to make things faster!!
Java generation, oh how ye sucks
I seem to have a lot of problems with Java Generation. I'm trying to understand why...
Get this, my latest problem set.
So, for some reason (I'm going to find out, trust me). My PY812 f989999 was generated with an OID and UID with VARCHAR. So, all of the deletes had loads of spaces in the front, and they found no rows... then the inserts failed... Meanwhile, I've had a PY webserver down for 2 days and have been too scared to promote anything to production in case the same thing was going to occur.
No matter what I did, truncate F989999 & F989998 - generate to a different location... Nothing seemed to work. I was at the end of my tether and saw an ancient call (and remembered it when it first came out) about changing OID and UID to CHAR - not VARCHAR.
Of course when I looked at my PY812 F989999 they were NVARCHAR. I don't know how it happened, but it did happen!
Note that there is also an option in the jdbj.ini
disableOracleNcharTrimming
Man, if I had have looked at that a little closer!
Get this, my latest problem set.
So, for some reason (I'm going to find out, trust me). My PY812 f989999 was generated with an OID and UID with VARCHAR. So, all of the deletes had loads of spaces in the front, and they found no rows... then the inserts failed... Meanwhile, I've had a PY webserver down for 2 days and have been too scared to promote anything to production in case the same thing was going to occur.
No matter what I did, truncate F989999 & F989998 - generate to a different location... Nothing seemed to work. I was at the end of my tether and saw an ancient call (and remembered it when it first came out) about changing OID and UID to CHAR - not VARCHAR.
Of course when I looked at my PY812 F989999 they were NVARCHAR. I don't know how it happened, but it did happen!
Note that there is also an option in the jdbj.ini
disableOracleNcharTrimming
Man, if I had have looked at that a little closer!
Monday, 20 October 2008
WAS and ports and locks and stuff
Well, I've just spent the morning recovering from a doozie of a problem. The JAS.INI for a web server was changed to have the [WEB DEVELOPMENT] section inserted with the WebDevelopment=true line added too. Holy moly - what a f*ck up!. This had the affect of letting people in, but they could not run reports. There were errors in the logs about:
20 Oct 2008 10:03:51,979 [SEVERE] MOIRS - [METADATA] Cause exception com.jdedwards.database.base.JDBException: [DATABASE_CONNECT_FAILED] Database Connection failed for DataSource SPEC_MSDE.
20 Oct 2008 10:03:51,979 [SEVERE] MOIRS - [METADATA] JDESpec error code = JDBj_SELECT_FAILURE com.peoplesoft.pt.e1.base.metadata.dataAccess.JDESpecException: JDBj select to spec RDB table failed for Spec Type RDASPEC.
20 Oct 2008 10:03:51,995 [SEVERE] MOIRS - [JAS] SubmitUBE.launchUBE() : Exception thrown during UBE submission! | Report Name : R0010P, Version Name : XJDE0001, Server Name : null, User Name : MOIRS com.jdedwards.system.kernel.LaunchUBEException: JDBj select to spec RDB table failed for Spec Type RDASPEC.
com.jdedwards.system.kernel.LaunchUBEException: JDBj select to spec RDB table failed for Spec Type RDASPEC.
at com.jdedwards.jas.SubmitUBEXML.packageSpecsAndSubmit(Unknown Source)
at com.jdedwards.jas.SubmitUBE.launchUBE(Unknown Source)
at com.jdedwards.jas.JDEOWDirect.jdeOWDirect(Unknown Source)
at com.jdedwards.jas.JDEOWDirect.processServerRequest(Unknown Source)
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.jdedwards.jas.ServletProxy.callServerComponent(Unknown Source)
at com.jdedwards.jas.ServletProxy.servletProxy(Unknown Source)
at com.jdedwards.jas.ServletProxy.dispatch(Unknown Source)
at com.jdedwards.jas.net.NetConnection.callJAS(Unknown Source)
at com.jdedwards.jas.net.NetManager.processRequest(Unknown Source)
So, to find the problem I'm thinking, why is only this cluster member trying to load serialized objects from MSDE??? It could not be the manifest, it had to be the jdbj.ini (or jas.ini as in this case). I checked the [BOOTSTRAP] DS settings, I thought that it was going to be this, and it was not. I then stumbled on the JAS.INI and found the Web-Development setting.
Ok, great, I know why everything is f*cked, now.. Easy fix. Send everyone a SAW message. Restart the JVM - bing bang bong. The perfect crime...
But the instance would not start again, I kept getting the errors below:
[20/10/08 10:30:03:478 EST] 0000001f ChannelFramew E CHFW0029E: Error initializing chain DCS because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: Address already in use: bind
[20/10/08 10:30:03:509 EST] 0000001d TCPPort E TCPC0003E: TCP Channel TCP_5 initialization failed. The socket bind failed for host nsgshsjdnwb02.news.newslimited.local and port 9352. The port may already be in use.
[20/10/08 10:30:03:509 EST] 0000001d ChannelFramew E CHFW0029E: Error initializing chain DCS-Secure because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: Address already in use: bind
[20/10/08 10:30:08:494 EST] 0000001f TCPPort E TCPC0003E: TCP Channel TCP_5 initialization failed. The socket bind failed for host nsgshsjdnwb02.news.newslimited.local and port 9352. The port may already be in use.
[20/10/08 10:30:08:494 EST] 0000001f ChannelFramew E CHFW0029E: Error initializing chain DCS because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: Address already in use: bind
[20/10/08 10:30:08:525 EST] 0000001d TCPPort E TCPC0003E: TCP Channel TCP_5 initialization failed. The socket bind failed for host nsgshsjdnwb02.news.newslimited.local and port 9352. The port may already be in use.
So, I use the netstat command to find the pid that is locking the port:
netstat -b -v | findstr 9352
It tells me launchJVM.exe is doing this. Note that before being this smart, I tried restarting the nodeagent, then the network deployment node agent - of course none of this worked.
So, WTF??? This WEB-DEVELOPMENT section in the JAS.INI must control the LaunchJVM.exe process. This was locking all of my ports and making the machine a cluster f&ck. I did not want to bounce the entire machine, because half my users were happy in Prod.
Anyway, we are all happy now and I've got faith in windows netstat.
20 Oct 2008 10:03:51,979 [SEVERE] MOIRS - [METADATA] Cause exception com.jdedwards.database.base.JDBException: [DATABASE_CONNECT_FAILED] Database Connection failed for DataSource SPEC_MSDE.
20 Oct 2008 10:03:51,979 [SEVERE] MOIRS - [METADATA] JDESpec error code = JDBj_SELECT_FAILURE com.peoplesoft.pt.e1.base.metadata.dataAccess.JDESpecException: JDBj select to spec RDB table failed for Spec Type RDASPEC.
20 Oct 2008 10:03:51,995 [SEVERE] MOIRS - [JAS] SubmitUBE.launchUBE() : Exception thrown during UBE submission! | Report Name : R0010P, Version Name : XJDE0001, Server Name : null, User Name : MOIRS com.jdedwards.system.kernel.LaunchUBEException: JDBj select to spec RDB table failed for Spec Type RDASPEC.
com.jdedwards.system.kernel.LaunchUBEException: JDBj select to spec RDB table failed for Spec Type RDASPEC.
at com.jdedwards.jas.SubmitUBEXML.packageSpecsAndSubmit(Unknown Source)
at com.jdedwards.jas.SubmitUBE.launchUBE(Unknown Source)
at com.jdedwards.jas.JDEOWDirect.jdeOWDirect(Unknown Source)
at com.jdedwards.jas.JDEOWDirect.processServerRequest(Unknown Source)
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
at com.jdedwards.jas.ServletProxy.callServerComponent(Unknown Source)
at com.jdedwards.jas.ServletProxy.servletProxy(Unknown Source)
at com.jdedwards.jas.ServletProxy.dispatch(Unknown Source)
at com.jdedwards.jas.net.NetConnection.callJAS(Unknown Source)
at com.jdedwards.jas.net.NetManager.processRequest(Unknown Source)
So, to find the problem I'm thinking, why is only this cluster member trying to load serialized objects from MSDE??? It could not be the manifest, it had to be the jdbj.ini (or jas.ini as in this case). I checked the [BOOTSTRAP] DS settings, I thought that it was going to be this, and it was not. I then stumbled on the JAS.INI and found the Web-Development setting.
Ok, great, I know why everything is f*cked, now.. Easy fix. Send everyone a SAW message. Restart the JVM - bing bang bong. The perfect crime...
But the instance would not start again, I kept getting the errors below:
[20/10/08 10:30:03:478 EST] 0000001f ChannelFramew E CHFW0029E: Error initializing chain DCS because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: Address already in use: bind
[20/10/08 10:30:03:509 EST] 0000001d TCPPort E TCPC0003E: TCP Channel TCP_5 initialization failed. The socket bind failed for host nsgshsjdnwb02.news.newslimited.local and port 9352. The port may already be in use.
[20/10/08 10:30:03:509 EST] 0000001d ChannelFramew E CHFW0029E: Error initializing chain DCS-Secure because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: Address already in use: bind
[20/10/08 10:30:08:494 EST] 0000001f TCPPort E TCPC0003E: TCP Channel TCP_5 initialization failed. The socket bind failed for host nsgshsjdnwb02.news.newslimited.local and port 9352. The port may already be in use.
[20/10/08 10:30:08:494 EST] 0000001f ChannelFramew E CHFW0029E: Error initializing chain DCS because of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException: Address already in use: bind
[20/10/08 10:30:08:525 EST] 0000001d TCPPort E TCPC0003E: TCP Channel TCP_5 initialization failed. The socket bind failed for host nsgshsjdnwb02.news.newslimited.local and port 9352. The port may already be in use.
So, I use the netstat command to find the pid that is locking the port:
netstat -b -v | findstr 9352
It tells me launchJVM.exe is doing this. Note that before being this smart, I tried restarting the nodeagent, then the network deployment node agent - of course none of this worked.
So, WTF??? This WEB-DEVELOPMENT section in the JAS.INI must control the LaunchJVM.exe process. This was locking all of my ports and making the machine a cluster f&ck. I did not want to bounce the entire machine, because half my users were happy in Prod.
Anyway, we are all happy now and I've got faith in windows netstat.
Friday, 3 October 2008
Some more generic tech notes that I need on the web
The below script will generate owner rename statements in SQLServer. I use them all the time for data refreshes. Just do database backup, restore and then run these puppies for DTA and CTL!
select 'EXEC sp_changeobjectowner ' + '''' + 'JDE_CRP.PRODDTA.' + so.name +
'''' + ', ' + '''' + 'CRPDTA' + '''' + ';'
from sysobjects so, sysusers su
where so.name like 'F%'
and so.xtype = 'U'
and su.uid = so.uid
and su.name = 'PRODDTA'
Get your oracle version from the SQL command like:
select banner from v$version
Installing peoplebooks?
PSOL documentation code FFFFFFFFF1
start ftp on linux
service vsftpd start
service smb start
/etc/samba/smb.conf
find and delete all files that are older than 6 days
find . -mtime +6 -print | xargs -i rm -f {}
select 'EXEC sp_changeobjectowner ' + '''' + 'JDE_CRP.PRODDTA.' + so.name +
'''' + ', ' + '''' + 'CRPDTA' + '''' + ';'
from sysobjects so, sysusers su
where so.name like 'F%'
and so.xtype = 'U'
and su.uid = so.uid
and su.name = 'PRODDTA'
Get your oracle version from the SQL command like:
select banner from v$version
Installing peoplebooks?
PSOL documentation code FFFFFFFFF1
start ftp on linux
service vsftpd start
service smb start
/etc/samba/smb.conf
find and delete all files that are older than 6 days
find . -mtime +6 -print | xargs -i rm -f {}
Thursday, 2 October 2008
Create table with SELET statement in SQL Server
any other database is
CREATE TABLE XX AS SELECT * FROM YYY;
No worries, simple... works in DB2, UDB & oracle... But SQL Server needs:
select * into NEW from OLD where sdsudfut2 = 'PY812' ;
What a crock!
CREATE TABLE XX AS SELECT * FROM YYY;
No worries, simple... works in DB2, UDB & oracle... But SQL Server needs:
select * into NEW from OLD where sdsudfut2 = 'PY812' ;
What a crock!
RDP information
Do you ever get that message when you are RDP'ing to a client that it has too many open connections and you don't know what to do... well, here is a treat for you.
At the windows command line enter:
qwinsta /server:SERVERNAME
Will list all of the sessions, choose one that you can delete and then:
rwinsta /server:SERVERNAME ID_NUMBER
That'll get rid of the pesky session and let you log in - ripper!
remember to RDP to the console of a machine with the /console option after the machine name, that way you can share it with everyone (if you log in with the same user).
At the windows command line enter:
qwinsta /server:SERVERNAME
Will list all of the sessions, choose one that you can delete and then:
rwinsta /server:SERVERNAME ID_NUMBER
That'll get rid of the pesky session and let you log in - ripper!
remember to RDP to the console of a machine with the /console option after the machine name, that way you can share it with everyone (if you log in with the same user).
Subscribe to:
Posts (Atom)
-
There are a heap of instructions of what you need to change if you change the IP address of your weblogic server, but I find they are not co...
-
They have been around for quite some time, but it's nice to have a refresher on these types of things. 8.12 and 9.0 have have started...
-
I’m running windows 7 virtual on OVM with office 2010. Have E1 fat boy and oracle 11G client. I’m using this machine for some BIP prototyp...