Windows 10 | Uninstall pre-installed/bundled software & apps

Windows 10 comes with a number of apps, usually we call them as bloatware in the mobile phones segments. Today we will see how to get rid of most of those pre-installed or bundled apps and a method to re-install the Microsoft Store app. By uninstalling the bundled software, trust me, you are going to save hell loads of bandwidth and storage.

Prerequisites: I am expecting you to have moderate experiences with Windows OS, as the below instructions might require you to open PowerShell as an administrator. For a fail safe situation, I will ask you to have minimum one more user account created and signed on prior you try to remove the pre-installed apps from your user account.

Once PowerShell console opens, you should able to see something like this on top of the console window “Administrator: Windows PowerShell”.

Before uninstalling the pre-installed apps, that includes “Microsoft Store”, we have to make a note of the Store application package name. Please note, the package name changes between builds, hence you must run the below command from your own Windows 10 machine, ie, do not copy from this post.

Get-AppxPackage -AllUsers -Name "Microsoft.WindowsStore"

So for my Windows 10 box, I need to copy the value for “PackageFullName”, that is

Microsoft.WindowsStore_12011.1001.1.0_x64__8wekyb3d8bbwe

Side note: Please give extra attention to “PackageUserInformation”. This element lists all the user accounts those already have the “Microsoft Store” app installed. My work laptop (this machine) has four User accounts (default Administrator account disabled) including the domain user account. For my local and domain accounts, the store app is already installed and for other two accounts the app has been staged. Ie, not yet installed.

Please copy the “PackageFullName” element value to a notepad and save the file on the desktop with a name that you could remember.

In the same PowerShell console issue the below command

Get-AppxPackage -AllUsers | Remove-AppxPackage

This is going to start uninstalling the pre-installed apps. There will be some funny Red color texts, highlighted bars over the PowerShell prompt. Don’t get panicked. Based on the resources available this might take a while to finish. Once the PowerShell prompt returned, you will see that all the pre-installed apps are gone… for good!

However we need the Microsoft Store app back for downloading the most essential apps like Calculator, Mail client & few other. In the same PowerShell console, construct a command like below. Please make sure you will replace the package name with the one you have copied to the text file earlier.

Add-AppxPackage -register "C:\Program Files\WindowsApps\Microsoft.WindowsStore_12011.1001.1.0_x64__8wekyb3d8bbwe\appxmanifest.xml" –DisableDevelopmentMode

Microsoft Store app should be installed instantly and you can proceed with installing your essential apps from the store now.

Like all other times, I ask you not to proceed, if you don’t know what you are going to end up with!

One much detailed information you can find here [Guide] How to Uninstall and Remove All Built-in Apps in Windows 10 – AskVG

VirtualBox | Windows 10 Guests too slow

I’m a huge fan of Oracle VirtualBox. Actually I have almost 10 different VMs (many of them were never used over years) scattered everywhere within my home network. Then I had this Windows 10 VM, that always had troubles.

Environment: HOST (HP PROBOOK 440 G7

Windows 10 Pro 64Bit, i7-10th Generation Processor with 8 CPUs, 32GB RAM, NVMe disk for OS and Crucial MX500 series 1TB SSD for data/Virtual Machines & Windows 10 guest has the configurations as seen with the image.

In addition to, for the VDI with fixed size, I have exclusively set “Solid-state Drive” flag. If you have a keen observation, I have selected “Hyper-V Paravirtualization” for “Acceleration” and I don’t have Hyper-V enabled :). Well, I didn’t hear any complaints (yet)!

After reviewing many posts and answers over VirtualBox forum, I have made few changes those I felt could make some differences, and I feel my VM responds much better after those changes.

Disable Transparency. This makes your Windows 10 VM respond much faster (not just “seems faster®” ;) )

Setup your box for best performance.

Reboot the Virtual Machine. I have seen slight gains with the booting time, however once logged in the VM is snappier than ever. I cannot help you, if you are using VM for something fancy that depends upon the Graphic processing. For a server side software like Oracle database where the performance matters, I think this is the only one go with current VirtualBox/Windows 10 setup.

If you are interested to see how long it takes for my VM to finally let me log in, watch the below video.

Leave me your comments!

Oracle Forms & Reports 12c | Publishing a sample application

After a long break, I am going to post about deploying Oracle Forms & Reports based application using Weblogic Server 12c (12.2.1.4).

With my previous posts about Weblogic 12c & Oracle Forms & Reports, I have provided most of the details about configuring the Forms and Reports environments for deploying Forms & Reports based application(S). Well, for a beginner this could post a challenge.

So the post is for beginners and those trying to setup an environment using Weblogic Server for the first time. Please note, you must adjust the paths listed below according to your installation/naming conversions.

To start with, I always install Weblogic Server & Oracle Forms & Reports software on the same HOME. Example: D:\Weblogic\Middleware\Oracle_Home

The advantage of following the same name throughout installations (of same version) is, I can copy the fine tuned configuration files from an existing installation and later use them when I am forced to remove and reconfigure the complete infrastructure.

To host Oracle forms and reports based applications, we need to make few changes with existing configuration files for both Forms and Reports. Prior making those changes, let us run a quick errand for mandatory elements for successful deployment of applications.

HOST Name (aka your computer name). Make sure you have a meaningful name for your computer. If you have installed and configured Weblogic and other software components against a name that looks like a joke, then redo the installation and configurations against a new computer name (eg: RAJESH-PC, JOHN, MARTHA, ORASERVER or anything that is short and could easily be identified). Refer documents those explain you how to change your computer name.

You must have a STATIC IP address for your computer that is going to host your Forms & Reports application. If your computer is part of domain network & supported by a DNS server, you might take a risk of not having STATIC IP, however, please note, Oracle insists for a STATIC IP for the box on which you install database & other server software. Usually at home/small networks, you are connected to a wireless router/router or a computer that issues dynamic IP addresses. If you are at home, you may assign a IP address outside of DHCP scope for you computer. Please google for more details to know how to setup STATIC IP address. If you are new to these basic networking elements, consult someone who could help you.

HOST File modifications. As we are talking about Windows environments, regardless whether client or Server OS, you will find the HOST file under:

C:\Windows\System32\drivers\etc

You can use Notepad to open up this file and add an entry like below. If you are on Windows 7 or later, make sure that you are opening Notepad as Administrator (The whole exercises you have read until were only tested on Windows 10):

Where 192.168.1.65 is the STATIC IP address assigned to my computer, erp-prod.my.home is the fully qualified domain name(FQDN) and erp-prod is the hostname.

At home you don’t need the FQDN, unless you have a DNS configured or you fancy a computer name like “mycomputer.mydomain.com” instead of just “mycomputer”

The above were the least amount of network related settings those you insure to make sure that your application can be accessed from your computer (and your network). Please note, you have to open port 7777 (default OHS) through the firewall so that other computers on the network can access your application. For local testing, you may skip this.

So, I guess we are good with the above mentioned and will move to setting up “stuffs” for our first application. I already have an application that was developed using 11g Forms & Reports and will be using the same for the rest of explanations.

Setup TNS Names. If you are not using environment variable TNS_ADMIN, you should set up the TNS names exclusively for your application deployment.

So, I said I always install Weblogic and other software components in the same place “D:\Weblogic\Middleware\Oracle_Home”. After configuring for a classic domain for Forms & Reports, I can find the tnsnames.ora file under the path:

D:\Weblogic\Middleware\Oracle_Home\user_projects\domains\base_domain\config\fmwconfig

Where “base_domain” is the default domain name Oracle suggests during the configurations.

I suggest you to make a copy of your tnsnames.ora file prior making changes to the file. The best is, copy the tnsnames.ora file from your database network admin folder after renaming the existing tnsnames.ora file.

Once the TNS names are set, we can quickly setup “formsweb.cfg” file within which our application specific configurations will be defined.

Based on my installation path and classic domain naming, I should find the formsweb.cfg & default.env files under:

D:\Weblogic\Middleware\Oracle_Home\user_projects\domains\base_domain\config\fmwconfig\servers\WLS_FORMS\applications\formsapp_12.2.1\config

Please make sure that each and every other configuration file that you are going to edit/alter is backed up, so that you can rollback to default configuration easily by replacing the wrongly configured files. I usually put “.original” by the end of backed up files!

Below is a sample configuration for my application & trust me, you need more than half of the parameters listed below

[balaji]
# 
# Entries from source Oracle FMW Domain
# added by the Forms Upgrade Assistant Plugin.
baseHTML=base.htm
baseHTMLjpi=basejpi.htm
HTMLdelimiter=%
envFile=default.env
serverArgs=%escapeparams% module=%form% userid=%userid% debug=%debug% host=%host% port=%port% %otherparams%
escapeparams=true
form=LOGIN.fmx
userid=APPS/APPS@orcl
debug=no
host=
port=
digitSubstitution=context
otherparams=obr=%obr% record=%record% tracegroup=%tracegroup% log=%log% term=%term% ssoProxyConnect=%ssoProxyConnect%
obr=no
record=
tracegroup=
log=
term=
HTMLbodyAttrs=
HTMLbeforeForm=
HTMLafterForm=
serverURL=/forms/lservlet
codebase=/forms/java
imageBase=codebase
mediaBase=codebase
width=750
height=600
separateFrame=true
splashScreen=false
allowAlertClipboard=true
disableValidateClipboard=false
highContrast=false
background=
lookAndFeel=Oracle
colorScheme=swan
customColorScheme=
logo=
guiMode=0
restrictedURLparams=pageTitle,HTMLbodyAttrs,HTMLbeforeForm,HTMLafterForm,log
formsMessageListener=
recordFileName=
serverApp=
archive=frmall.jar
networkRetries=0
java_version=1.7+
legacy_lifecycle=false
ssoDynamicResourceCreate=true
ssoErrorUrl=
ssoCancelUrl=
ssoMode=false
ssoProxyConnect=no
ssoLogOut=false
ssoLogOutRedirect=
logoutTargetURLParamname=
allow_debug=false
allowNewConnections=true
EndUserMonitoringEnabled=false
EndUserMonitoringURL=
applet_name=
enableJavascriptEvent=true
JavaScriptBlocksHeartBeat=false
idleTimeout=
separate_jvm=false

You will learn which parameters are not necessary over the long run. Just make sure that you will create all the new configurations by the dead end of “formsweb.cfg” file to avoid confusions. Please give extreme attention to the parameter “java_version=1.7+”. This means, you can only use JRE versions 1.7 and above (JRE7, 8 and other certified)

Once the formsweb.cfg is saved, we can proceed with editing/altering default.env file, that is in the same path. You can tell the forms runtime to look in this file to locate the forms runtimes. For example, I’ve all the compiled runtimes available at D:\12c folder for the application that I am trying to deploy/publish. The FORMS_PATH is pointed to it & other paths wherever I have applications (eg: mapped path \\RT04\OPMAN12C\main). Make sure each path is separated using a “;”

FORMS_PATH=D:\Weblogic\Middleware\Oracle_Home\forms;D:\Weblogic\Middleware\Oracle_Home\user_projects\domains\base_domain\config\fmwconfig\components\FORMS\instances\forms1;D:\12c;\\RT04\OPMAN12C\main;\\RT04\OPMAN12C\OPMAN

Finally we have to edit/alter one more file, “Registry.dat” which controls how the LOVs appear/behave and many other values for the runtime. We will only configure LOV appearance and required field background color settings this time.

You should able to find “Registry.dat” file here:

D:\Weblogic\Middleware\Oracle_Home\user_projects\domains\base_domain\config\fmwconfig\servers\WLS_FORMS\applications\formsapp_12.2.1\config\oracle\forms\registry
#
# Application level settings to control UI features
#
# app.ui.lovButtons=false
app.ui.lovButtons=true
# app.ui.requiredFieldVA=false
app.ui.requiredFieldVA=true
#    The background color is specified as an RGB triple.
# app.ui.requiredFieldVABGColor=255,0,0
app.ui.requiredFieldVABGColor=255,242,203

Please note, you can make these whole changes using Weblogic EM console. For me this is the fastest way.

Once whole these changes are made, you can start Weblogic server, start Weblogic FORMS server and try to run the application by entering the following URL on Microsoft Internet Explorer. Please note, no browsers other than Internet Explorer allow you to load JRE NPAPI client. We will discuss about using Java Webstart method by the end of this post.

One most important element you should cross verify at this point is whether the JRE installed is 32Bit or 64Bit. If you have installed the complete JDK before Weblogic setup, you should uninstall the JRE 8/higher version that is installed and install JRE 32Bit 7 or higher. Internet explorer will not load 64Bit JRE

http://<hostname>:7777/forms/frmservlet?config=balaji
http://rt04:7777/forms/frmservlet?config=balaji

Now, we will see how to get reports from the application. If you are planning to migrate from Developer 6i to 12c, there is going to be a huge effort involved. I am working with Oracle Applications R12 from last 11 years and have adapted much of the ideas from the application (menu architecture, report submission and many other). You will have to design a totally new approach for your reports, to cut it short. Plus, 12.2.1.4 is the last version of Oracle Reports (according to sources). Hence please start planning for Oracle BI or Crystal Reports integration for your reporting requirements in the future.

If you are switching from Forms/Reports 6i, please note, you will start using Web.Show_Document method for calling reports from Forms. With the given example, I am allowing users to select a report from list of values and storing the report executable value in to :CTRL.REPORT_NAME column and the calling “Web.Show_Document” method.

if (:CTRL.REPORT_NAME IS NOT NULL) then
Web.Show_Document('/reports/rwservlet?usr&desformat=PDF&destype=cache&report='||:CTRL.REPORT_NAME||'&paramform=Yes','_new');

else
	NULL;
end if;

You can pass the report name (‘ABCD.rdf’) for example for the parameter report within the url specified in Web.show_document method.

How to OPEN Forms Developer and Reports 12c??

While Oracle Forms 12c is available within the menu

accessing Report Developer may not be that straight forward. Basically report builder windows executable is wrapped inside multiple windows batch files & you will find the rwbuilder.bat file here:

D:\Weblogic\Middleware\Oracle_Home\user_projects\domains\base_domain\reports\bin

I suggest you not to try to open the executable, as the wrapper setup environment for the executable to run. Interested, the .bat file has the following content:

@REM
@REM Copyright (c) 1999, 2008, Oracle and/or its affiliates.
@REM All rights reserved. 
@REM

@echo off 
@echo Starting Reports 12c Builder...
setlocal

set DOMAIN_HOME=D:\Weblogic\Middleware\Oracle_Home\user_projects\domains\base_domain

call %DOMAIN_HOME%\reports\bin\reports.bat

set COMPONENT_NAME=rptools1
set COMPONENT_CONFIG_PATH=%DOMAIN_HOME%\config\fmwconfig\components\ReportsToolsComponent\%COMPONENT_NAME%

set REPORTS_INSTANCE=%COMPONENT_CONFIG_PATH%
set CA_GPREFS=%COMPONENT_CONFIG_PATH%\tools\admin
set CA_UPREFS=%COMPONENT_CONFIG_PATH%\tools\admin


@echo on
start %ORACLE_HOME%\bin\rwbuilder.exe %*

@echo off
endlocal
@echo on

I think I’ve made a decent attempt to make it easier for a sample application deployment using Weblogic Server 12.2.1.4 & always ready to develop and provide a sample application for entirely newbies using Oracle’s sample schemas. Feel free to let me know through the comments 🙏

RVTPT-020: Subroutine rvtoe_RmaPushApi() – EQuantity cannot be greater than original ordered quantity. returned error

A single music track, movie, event, product… changes the life for many & in my case it was a single API by Oracle!

“oe_order_pub.process_order” that comes with Oracle Applications (We are using EBS R12)

The firm for which I work is using an inhouse developed module for the complete retailing & I take the credit of developing the full solution using this ONE API/around this API.

From a mere “Oracle Forms & Reports” developer with some knowledge about Oracle database, developing around this single API to facilitate Sales Orders and Returns (RMA) slowly shaped me in to whatever I am today.

We are using this custom module from last 11 years and I wouldn’t say there were no issues. We’ve many sales outlets and most of them are connected to the datacenter using ADSL data lines. Sometimes the connections caused, other times code caused, few other times some internal bugs caused problems were there, however against the volume of sales transactions those we make yearly, limited to numbers those could be counted in fingers.

So, recently I was contacted by the sales team, to resolve an issue with a sales return, with lines stuck “Awaiting Return” status. While inspecting the transaction, I realized that the salesmen tried to return this SO multiple times and instead of 2 lines against the sales order, there were 20 lines (10 attempts). I cleared whole those lines with errors and tried to receive the materials once again, bringing up the error:

RVTPT-020: Subroutine rvtoe_RmaPushApi() - EQuantity cannot be greater than original ordered quantity. returned error
 Cause:        Subroutine rvtoe_RmaPushApi() - EQuantity cannot be greater than original ordered quantity. returned an in

Eventually, I landed upon the Oracle support document “RMA Receipt Error:RVTPT-020: Subroutine rvtoe_RmaPushApi() – EQuantity Cannot Be Greater Than Original Ordered Quantity (Doc ID 2409611.1)” & according to the document, this situation arises when there are multiple transactions trying to do a RMA against the same quantities! So I ran couple of quick queries like below:

Select * from oe_order_lines_all where header_id  = (Select header_id from oe_order_headers_all where order_number='18016698');

Fetched all the line ids from the lines table against the order number & then tried to see where exactly the line ids were refernced. Whenever a RMA is facilitated the lines table fills in the columns “REFERENCE_HEADER_ID” and “REFERENCE_LINE_ID” with the header_id and line_id values from the original sales order. All I had to make sure that the line ids were referenced multiple times.

Select * from oe_order_lines_all where reference_line_id IN (4656844, 4656845);

As expected, I was able to find four lines (expected 2 lines only) and was able to track down the 2nd RMA that was automatically created by the API due to some unknown reasons (I said there were few problems using the API)

Based on the suggestions available with the support document, I cancelled the duplicate RMA transaction (Actually another Sales Order with the next immediate document number) & created a new receipt for the Sales Order that was stuck with lines having “Awaiting Return” flow status.

Hope this helps few out there.

rajesh

EBS R12 Cloned Instance | opatch

Not being a DBA has it’s own perks ;) Freedom to try to fix everything that do not look “legit” from all angles.

My last attempt was to rebuild “Central Inventory” for a cloned instance of Oracle Applications R12 (EBS 12.0.6) on Linux. This instance was cloned from a certified platform, to a totally unsupported platform. In addition to, the DBAs those migrated from 10g R2 to 11g R2 left much of the post clone activities pending immediately once after the instance came online.

So, trying to patch Oracle database 11gR2(11.2.0.4) brought me to a situation that never existed:

  • “opatch” was “not” recognized as a command!
  • “opatch lsinventory” run always screamed about corrupt/missing central inventory location.

The “opatch” not being recongized as a command was due to $ORACLE_HOME/OPatch path missing, easily fixed by adding the path to the existing $PATH environment variable for the Oracle user.

One of the other issues you might face up with 11.2.0.4 could be the unsupported opatch version. You need to replace the current opatch version with the latest supported. Please refer to patch #6880880 & Install the patch marked in the below image

Please read the “README” to know how to replace the existing version with the latest supported.

Once the opatch stack taken care of, we still need to fix the central inventory, that keeps reported as being missing.

[oratest@bak clone]$ opatch lsinventory
 Oracle Interim Patch Installer version 11.2.0.3.25
 Copyright (c) 2020, Oracle Corporation.  All rights reserved.
 Oracle Home       : /u01/oratest/TEST/db/tech_st/11.2.0
 Central Inventory : /u01/oratest/TEST/db/tech_st/11.2.0/inventory
    from           : /u01/oratest/TEST/db/tech_st/11.2.0/oraInst.loc
 OPatch version    : 11.2.0.3.25
 OUI version       : 11.2.0.4.0
 Log file location : /u01/oratest/TEST/db/tech_st/11.2.0/cfgtoollogs/opatch/opatch2020-11-11_10-35-04AM_1.log
 LsInventorySession failed: OPatch failed to locate Central Inventory.
 Possible causes are:
     The Central Inventory is corrupted
     The oraInst.loc file specified is not valid.
 OPatch failed with error code 73

Let us see how to rebuild the Central Inventory for the EBS R12 cloned instance now.

If your current server (the one that has the cloned instance of the application) never had an Oracle installation executed from the same, will not have /etc/oraInst.loc file, instead the file must be available under $ORACLE_HOME & the file MUST BE pointing towards the source server paths. For example, my cloned instance oraInst.loc contents are like below:

>cat oraInst.loc
 inventory_loc=/u05/oraprod/oraInventory
 inst_group=oinstall

where inventory_loc path wrong for the current server.

You may create something equivalent to what already exists with the oraInst.loc file, for example (in my case) a path like /u01/oratest/oraInventory as “Oracle” user.

So, you need to amend the oraInst.loc file that is available with $ORACLE_HOME path like below

>cat oraInst.loc
 inventory_loc=/u01/oratest/oraInventory
 inst_group=oinstall

Now you can proceed building the Central Inventory.

logon as Oracle user

SHUTDOWN THE DATABASE & ALL OTHER ORACLE DATABASE RELATED SERVICES

  1. source the environment
  2. switch to $ORACLE_HOME/appsutil/clone
  3. execute ouicli.pl (./ouicli.pl)

Now, We will attach the current ORACLE_HOME with the Central Inventory. Many things could go wrong here, so make sure that you refer the document “How to create, update or rebuild the Central Inventory for Applications R12” in case if you are stuck for reasons those are not mentioned in this post.

As Oracle user

switch to $ORACLE_HOME/oui/bin

Execute

./runInstaller -ignoreSysPrereqs -silent -attachHome -invPtrLoc $ORACLE_HOME/oraInst.loc \
 ORACLE_HOME=$ORACLE_HOME ORACLE_HOME_NAME=""

Example:

./runInstaller -ignoreSysPrereqs -silent -attachHome -invPtrLoc $ORACLE_HOME/oraInst.loc \
 ORACLE_HOME=$ORACLE_HOME ORACLE_HOME_NAME="TEST_Oracle_HOME"

If there are no issues, you should get ” ‘AttachHome’ was successful ” confirmation once after the installer finishes the execution.

Test opatch once again

>opatch lsinventory

The above should provide you an output like below:

[oratest@bak bin]$ opatch lsinventory
 Oracle Interim Patch Installer version 11.2.0.3.25
 Copyright (c) 2020, Oracle Corporation.  All rights reserved.
 Oracle Home       : /u01/oratest/TEST/db/tech_st/11.2.0
 Central Inventory : /u01/oratest/oraInventory
    from           : /u01/oratest/TEST/db/tech_st/11.2.0/oraInst.loc
 OPatch version    : 11.2.0.3.25
 OUI version       : 11.2.0.4.0
 Log file location : /u01/oratest/TEST/db/tech_st/11.2.0/cfgtoollogs/opatch/opatch2020-11-11_10-42-05AM_1.log
 Lsinventory Output file location : /u01/oratest/TEST/db/tech_st/11.2.0/cfgtoollogs/opatch/lsinv/lsinventory2020-11-11_10-42-
 Local Machine Information::
 Hostname: bak.localdomain.com
 ARU platform id: 0
 ARU platform description::
 There are no Interim patches installed in this Oracle Home.
 
 OPatch succeeded.

That’s all folks. You can proceed with your patching for the database now! Hope this helps few certified DBAs out there ;)

rajesh

FRM-41826: Cannot Replace Group;columns Don’t Match Lov

I was trying to revamp a “fully functional” custom module for our Oracle EBS R12 Order Management & came across “FRM-41826: Cannot Replace Group;columns Don’t Match Lov” while a new record group was set for an existing LOV during runtime based on the user choice.

I was pretty sure that the query is flawless as all I did was to removing some UNIONs and thus stripping off rows from the result set!.

After spending almost hour time, Finally I decided to check the columns returned by the record group. My first record group has the below SQL

select CUSTOMER_ID party_id, CUSTOMER_NUMBER, CUSTOMER_NUMBER ACCOUNT_NUMBER, CUSTOMER_NAME, null CASH_CUSTOMER_ID
from OMS_SHIPTO_ADDRESS_V where org_id = :PARAMETER.ORG_ID
AND CUSTOMER_ID NOT IN (Select account_id from OMS_ORGS_CASH_ACCOUNTS where organization_id = :PARAMETER.ORG_ID)
UNION ALL
SELECT oocc.account_id party_id, occ.PHONE_1 CUSTOMER_NUMBER, TO_CHAR(oocc.ACCOUNT_NUMBER) ACCOUNT_NUMBER, occ.CUSTOMER_NAME, occ.CUSTOMER_ID CASH_CUSTOMER_ID FROM OMS_CASH_CUSTOMERS occ, OMS_ORGS_CASH_ACCOUNTS oocc
WHERE occ.PHONE_1 IS NOT NULL
AND occ.ORGANIZATION_ID = :PARAMETER.ORG_ID
AND oocc.organization_id = occ.ORGANIZATION_ID
AND PRINT_PHONE_1 = 'Y'
UNION ALL
SELECT oocc.account_id party_id, occ.PHONE_2 CUSTOMER_NUMBER, TO_CHAR(oocc.ACCOUNT_NUMBER) ACCOUNT_NUMBER, occ.CUSTOMER_NAME, occ.CUSTOMER_ID CASH_CUSTOMER_ID FROM OMS_CASH_CUSTOMERS occ, OMS_ORGS_CASH_ACCOUNTS oocc
WHERE occ.PHONE_2 IS NOT NULL
AND occ.ORGANIZATION_ID = :PARAMETER.ORG_ID
AND oocc.organization_id = occ.ORGANIZATION_ID
AND PRINT_PHONE_2 = 'Y'
ORDER BY 2

while the 2nd record group has the below SQL

select CUSTOMER_ID party_id, CUSTOMER_NUMBER, CUSTOMER_NUMBER ACCOUNT_NUMBER, CUSTOMER_NAME, null CASH_CUSTOMER_ID
from OMS_SHIPTO_ADDRESS_V where org_id=:PARAMETER.ORG_ID ORDER BY 2

As simple as it is.

After wasting almost an hour time to figure out what went wrong, finally I decided to go through the record group columns, hoping some kind of mismatch between the columns returned by both SQL blocks! (Just hoping)

First RG

Second RG

The first SQL block was returning Customer ID values, which were numeric and the 2nd SQL block was returning NULL, mapping the datatype as Character!

and this was causing FRM-41826.

I fixed it by change the NULL to 0 with my second block.

select CUSTOMER_ID party_id, CUSTOMER_NUMBER, CUSTOMER_NUMBER ACCOUNT_NUMBER, CUSTOMER_NAME, 0 CASH_CUSTOMER_ID
from OMS_SHIPTO_ADDRESS_V where org_id=:PARAMETER.ORG_ID ORDER BY 2

If you ever get stuck with such situation, do a quick analysis on the Column Specification & insure that both record groups are returning the columns with same datatypes!

regards,

rajesh

OneDrive isn’t signed in

Updated on: 23rd November 2020

Well, it looks like the bug that Microsoft is dealing with is not something simple. Yesterday I was forced to change the password for my account, which has Administrator privileges due to some “too much gaming” by my 6 years old ;)

Immediately after the password change and restart, I started getting the message “OneDrive isn’t signed in” & one more thing I noticed was Microsoft Edge’s Sync profile account signed off. I always had a feeling that Microsoft Edge has something to do with the entire mess & I am not sure whether observing the above has any relevance as I am using individual apps to sign in, than using the live account globally.

The one positive thing until is, the entered credentials are still holding up & I was not asked to enter them once again today morning after cold reboot. It looks like Microsoft has messed up the Windows Credential Manager thingy little too deep this time!

**23rd November Update end***

“OneDrive isn’t signed in Please enter your sign-in info to start syncing again.” One of the little annoyances I had to live with post Windows 10, 2004 update.

After long “Googling” I came across multiple suggestions, none of which truly resolved my issues with OneDrive “automatic” signing in. Following couple of leads, I landed on to “Windows Credentials” and found that the OneDrive credentials were missing after a long shutdown & reboot.

This helped me to start finding details about cached credentials being “Expired” after a long interval between shutdown and reboot. I couldn’t find anything very specific explaining about this behavior until this moment.

Then I decided to uninstall OneDrive for a fresh installation. I uninstalled OneDrive, rebooted the box, reinstalled the software and tried various combinations like rebooting, cold reboots for next couple of hours to insure that the cached credentials were holding up. Started this thread and went to sleep the same night & next morning found that the cached credentials were once again missing!

While we were migrating from Windows XP to Windows 7, initial days the OS was plagued with unexplained bugs, causing this blogosphere :). One of the major issues we dealt with was corrupt profile for domain users, those required us to drop and recreate them on client machines!

I applied the same with this case, and did the following:

  • Enabled the “Administrator” account (You need minimum one account with Administrator privileges to carryout below)
  • Made necessary backups for the user account from which I was having OneDrive sign on issues. Please note, by deleting the user folder, you might lose some valuable data. So make sure adequate backups are made prior you delete the user account and related folders
  • Deleted the user account
  • Restarted & deleted the user folder (mandatory)
  • Re-created the user profile with same username!

Now Windows Credential Manager is holding up OneDrive credentials after 72 hours & I think this could be one of the possible fixes among many others!

regards,

rajesh

iPhone 11 stuck in the boot loop

Things go wrong, iPhones get in the boot loop & I had a nightmare two days back with the new iPhone 11 64GB, that was given to me as a corporate contract device.

As I don’t use Apple devices, I decided to exchange it with Wife’s Samsung Galaxy M30s. I setup up the device & came the menace. She had years long Whatsapp chats & asked the “Computer Guy” the question that hurts “You can’t do it right?!”

I bought iTransor & managed to “successfully migrate” the messages from Android to iPhone. The device restarted and that’s it. It got stuck in the boot loop, a partially eaten White Apple flashing againt a dark dark background. (iTransor is a pretty celebrated migration software & I believe things could get complicated at certain times & do not blame their software for the troubles I had. After all, I also develop software those act weird at times ;) )

I watched few YouTube videos, referred few articles etcetera and finally downloaded an app that claimed it would fix any boot related issues with iPhones and over 250 Apple devices. Following their neat instructions, connected the iPhone to my Windows Laptop using the provided cable & I reached to an instruction that asked me to:

  • Press volume up
  • Press volume down
  • Press and hold the Side button (right side single button on iPhone 11) “long”, even after the screen goes blank and Apple logo re-appears. Well in my case, after 10+ seconds, the iPhone screen shown me connect to PC image on the screen & finally I breathed. I was worried that I have to go back to my HR, get hold a copy of the invoice, approach a service center, wait for weeks until they “fix” the unit and returned to me..(Please watch the below video for a demonstration)

Once the connect to PC image appeared, I knew that I don’t need another paid software to “Fix” the unit. I repeated the cycle, this time with iTunes opened. iTunes immediately reported that the iPhone has an issue and to resolve, either the device should be updated or restored. Update failed, restore succeeded. My wife didn’t dare to challenge the computer guy once again and agreed that she would sacrifice her Whatsapp chats for the device.

So if you are ever stuck with an iPhone, have access to a computer & could follow few simple instructions, give the above a try. You may save some real bucks or end up with a truly bricked device ;)

regards,

rajesh

RSAT: Remote Server Administration Tools for Windows 10

The last standalone package for Remote Server Administration Tools was released for Windows 10 Version 1803 & the same was integrated into Windows 10 as optional packages with later versions of Windows.

There are many detailed installation instructions floating over dozens of tech blogs and sites, explaining how to enable/install RSAT on Windows 10. Today we will go through a quick how to without breaking much sweat & details.

As a Windows Domain Administrator, I need the following features at times:

  1. Active Directory Users and Computers
  2. DNS Manager

For the rest, usually I use the remote desktop connection to domain controllers.

Please note, with each version of Windows 10, there might be minor changes with the way software is installed. Hence, make sure that you double check your version of Windows 10 before attempting the below instructions. These instructions are valid for Windows 10, Version 2004 with September 2020 cumulative updates.

Open Add or remove programs (Modern App management console)

Click on “Optional Features”

Click on “Add Feature” that will open up a list of available optional features. Remote Server Administration Tools or RSAT could be filtered by entering RSAT in the search area.

As I needed only “Active Directory users and computers” and “DNS Server” components, I chose them. You might need more components to be available to carry out your server administration. Choose everything that applies to your requirements & Press the “Install” button.

That’s all. Now you can access the features those were installed based on your selection from the start menu or by searching for them in the taskbar search box.

regards,

rajesh

Linux multipath partitions unavailable after cold restart

Yesterday I shutdown one of our legacy system Linux servers after a long interval. May be almost after 1.5 years. Once restarted, I started getting alert emails from cronjobs which were using those mount points. After a quick checking I found that few the UUIDs I have used with fstab were missing when I issued “blkid” command…

Please note, I am not at all a Linux/Storage expert. I consider “finding” this solution as a blind shot as my immediate technical support guys were too busy to answer the calls. You are asked not to copy these to a production instance! I took the risk because the data, the server itself is NOT significant for us and we had the freedom to rebuild it as and when we needed it.

Linux Server IBM x3560 running OEL 6 & the storage device is DS3200 that uses HBA interface to the physical server.

Doing a fdisk -l listed the following for me:

Disk /dev/mapper/mpathb: 644.2 GB, 644245094400 bytes
255 heads, 63 sectors/track, 78325 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 

             Device Boot      Start         End      Blocks   Id  System

Disk /dev/mapper/mpathc: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 
			
			 Device Boot      Start         End      Blocks   Id  System

and I remembered that earlier I had listings like the below

Disk /dev/mapper/mpathb: 644.2 GB, 644245094400 bytes
255 heads, 63 sectors/track, 78325 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 

             Device Boot      Start         End      Blocks   Id  System
/dev/mapper/mpathbp1               1       78325   629145531   83  Linux

Disk /dev/mapper/mpathc: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 

             Device Boot      Start         End      Blocks   Id  System
/dev/mapper/mpathcp1               1       26108   209712478+  83  Linux

In addition to, I have noticed that there were two devices /dev/sdd, /dev/sde with the same size of the multipath sizes, however without any paritions.

After rebooting twice, I decided to create new partitions under /dev/sdd & /dev/sde which succeeded. However, when I tried to format these newly created partitions, I started getting “/dev/sdd1 is apparently in use by the system; will not make a filesystem here” and “/dev/sde1 is apparently in use by the system; will not make a filesystem here”, that forced me to restart the server once again.

To my utter surprises, once the machine booted up, all my mount points were back online once again without doing anything else.

[root@xyz multipath]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdk2              59G   11G   46G  20% /
tmpfs                  10G  228K   10G   1% /dev/shm
/dev/sdk1             2.0G  330M  1.5G  18% /boot
/dev/sdk5             738G  632G   69G  91% /u01
/dev/mapper/mpathbp1  591G  332G  229G  60% /u02
/dev/mapper/mpathcp1  197G  134G   54G  72% /u03
/dev/sdg1             591G   70M  561G   1% /u04
/dev/sdj1             269G   59M  256G   1% /u05
/dev/sda1             917G  765G  107G  88% /usbdrive
/dev/sdb1             1.8T  642G  1.1T  37% /RDX
Disk /dev/sdd: 644.2 GB, 644245094400 bytes
255 heads, 63 sectors/track, 78325 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00035652

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1               1       78325   629145531   83  Linux

Disk /dev/sde: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002b47b

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1               1       26108   209712478+  83  Linux

Disk /dev/mapper/mpathb: 644.2 GB, 644245094400 bytes
255 heads, 63 sectors/track, 78325 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00035652

             Device Boot      Start         End      Blocks   Id  System
/dev/mapper/mpathbp1               1       78325   629145531   83  Linux

Disk /dev/mapper/mpathc: 214.7 GB, 214748364800 bytes
255 heads, 63 sectors/track, 26108 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002b47b

             Device Boot      Start         End      Blocks   Id  System
/dev/mapper/mpathcp1               1       26108   209712478+  83  Linux

Prior deciding to create the partitions once again, I cross verified that multipath daemon was loaded and I can see the information. For a primarily a Windows OS person, the whole thing looked like a messed up “File Allocation Table”

[root@erp-prodbak ~]# multipath -ll
mpathc () dm-1 IBM,1726-2xx  FAStT
size=200G features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=6 status=active
| `- 2:0:0:2  sde 8:64  active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 3:0:0:2  sdi 8:128 active ghost running
mpathb () dm-0 IBM,1726-2xx  FAStT
size=600G features='1 queue_if_no_path' hwhandler='1 rdac' wp=rw
|-+- policy='round-robin 0' prio=6 status=active
| `- 2:0:0:1  sdd 8:48  active ready running
`-+- policy='round-robin 0' prio=1 status=enabled
  `- 3:0:0:1  sdh 8:112 active ghost running

I have confirmed that the ids in use were same as /etc/multipath/wwids and bindings files.

Well, may be I was truly lucky to “get it done” this time without understanding what actually went wrong. You may not apply this solution to production environment in case if you are dealing with important data!

regards,

rajesh