Friday, February 17, 2017

Could not reserve enough space for object heap

During oracle 12C agent installation i got below,, here is fix , i will add more detail on this ..

Unzipping the agentcoreimage.zip to /export/apps/oradba/XXXX/agent125c_new ....
12.1.0.5.0_PluginsOneoffs_23.zip
Executing command : /export/apps/oradba/XXXX/agent125c/unzip -o /export/apps/oradba/XXXX/agent125c/12.1.0.5.0_PluginsOneoffs_23.zip -d /export/apps/oradba/XXXX/agent125c_new
Successfully unzipped /export/apps/oradba/XXXX/agent125c/12.1.0.5.0_PluginsOneoffs_23.zip to /export/apps/oradba/XXXX/agent125c_new !
mv: cannot rename /export/apps/oradba/XXXX/agent125c_new/sbin_new to /export/apps/oradba/XXXX/agent125c_new/sbin/sbin_new: File exists
Executing command : /export/apps/oradba/XXXX/agent125c_new/core/12.1.0.5.0/jdk/bin/java  -d64 -classpath /export/apps/oradba/XXXX/agent125c_new/core/12.1.0.5.0/oui/jlib/OraInstaller.jar:/export/apps/oradba/XXXX/agent125c_new/core/12.1.0.5.0/oui/jlib/xmlparserv2.jar:/export/apps/oradba/XXXX/agent125c_new/core/12.1.0.5.0/oui/jlib/srvm.jar:/export/apps/oradba/XXXX/agent125c_new/core/12.1.0.5.0/oui/jlib/emCfg.jar:/export/apps/oradba/XXXX/agent125c_new/core/12.1.0.5.0/jlib/agentInstaller.jar:/export/apps/oradba/XXXX/agent125c_new/core/12.1.0.5.0/oui/jlib/share.jar oracle.sysman.agent.installer.AgentInstaller /export/apps/oradba/XXXX/agent125c_new/core/12.1.0.5.0 /export/apps/oradba/XXXX/agent125c /export/apps/oradba/XXXX/agent125c_new /export/apps/oradba/XXXX/agent125c_new/agent_inst AGENT_BASE_DIR=/export/apps/oradba/XXXX/agent125c_new
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

After export below parameter my agent went fine..  

export _JAVA_OPTIONS='-Xms64M -Xmx128m'

Tuesday, September 23, 2014

How to recover apps password in R12.


In R12 , apps password is not hardcoded, still few workarounds may work for you.
1. if sqlplus , than u need to set it back to old value and continue to work. you can also use 'identified by value' option instead of giving password.

2. if FNDCPASS , than
a. You  can change it back to old value...no loss.
b. if you have any custom program which has apps password hardcoded u can check from there.
c. if you have any custom script in cron or so where apps password is hardcoded u can check from there.
d. check bash_history for last FNDCPASS command.
   e.
Decrypting APPS password in R12 :
SQL> show user
USER is "SYS"
SQL> create FUNCTION apps.decrypt_pin_func(in_chr_key IN VARCHAR2,in_chr_encrypted_pin IN VARCHAR2)
RETURN VARCHAR2
AS
LANGUAGE JAVA NAME 'oracle.apps.fnd.security.WebSessionManagerProc.decrypt(java.lang.String,java.lang.String) return java.lang.String';
/ 2 3 4 5

Function created.

SQL> select ENCRYPTED_FOUNDATION_PASSWORD from apps.fnd_user where USER_NAME='GUEST';

ENCRYPTED_FOUNDATION_PASSWORD
--------------------------------------------------------------------------------
ZG1040180FF7A514EB0209759D297661E8E28DD99460D28850C00D783E24843FC44BCB81BD289305AA4FCFF468533FBBBB72


SQL> SELECT apps.decrypt_pin_func('GUEST/ORACLE','ZG1040180FF7A514EB0209759D297661E8E28DD99460D28850C00D783E24843FC44BCB81BD289305AA4FCFF468533FBBBB72') from dual;

APPS.DECRYPT_PIN_FUNC('GUEST/ORACLE','ZG1040180FF7A514EB0209759D297661E8E28DD994
--------------------------------------------------------------------------------
S2MUL8TION

SQL> conn apps/S2MUL8TION
Connected.
SQL>

SQL> drop function apps.decrypt_pin_func;

Function dropped.

Monday, September 8, 2014

Installing and configuring CSSCAN

Below are high label steps for Installing and configuring CSSCAN  in Oracle 10G and 11G .

select value from NLS_DATABASE_PARAMETERS where parameter='NLS_CHARACTERSET';

Note 745809.1 Installing and configuring CSSCAN in 10g and 11g

3) Installing Csscan
Run csminst.sql using these commands and SQL statements:

cd $ORACLE_HOME/rdbms/admin
set oracle_sid=<your SID>
sqlplus /nolog
SQL>conn / as sysdba
SQL>set TERMOUT ON
SQL>set ECHO ON
SQL>spool csminst.log
SQL> START csminst.sql

select owner,  object_type, status, object_name from dba_objects where status ='INVALID';



csscan  full=y userid=sys "/as sysdba"  FROMCHAR=UTF8 TOCHAR=AL32UTF8 LOG=UTF8_TO_UTF8_17_april CAPTURE=Y ARRAY=1000000 PROCESS=2


conn / as sysdba
SELECT OWNER, ORIGINAL_NAME, OBJECT_NAME, TYPE from dba_recyclebin order by 1,2;


conn / as sysdba
PURGE DBA_RECYCLEBIN;

csscan FULL=Y  userid=csmig/S0l_ut10n FROMCHAR=UTF8 TOCHAR=AL32UTF8 LOG=dbcheck CAPTURE=N ARRAY=1000000 PROCESS=2


csscan  full=y userid=csmig/S0l_ut10n FROMCHAR=UTF8 TOCHAR=AL32UTF8 LOG=post_drop CAPTURE=Y ARRAY=1000000 PROCESS=2

Tuesday, September 2, 2014

Changing the NLS_CHARACTERSET to AL32UTF8 / UTF8



Changing the NLS_CHARACTERSET to AL32UTF8 / UTF8 (Unicode) in 8i, 9i , 10g and 11g (Doc ID 260192.1)
Note 788156.1 AL32UTF8 / UTF8 (Unicode) Database Character Set Implications
What languages are supported in an Unicode (UTF8/AL32UTF8) database? (Doc ID 1051824.6)

From SR

your existing database has a lot of LOSSY data that needs to be fixed.
But this can be fixed after moving to the new character set also .
( Path: you can export data, truncate table, convert characterset and then import data back into tables in new characterset).

But the problem here, you have a lot of LOSSY data. Both using fromchar=WE8ISO8859P1, tochar=WE8ISO8859P1 as well as fromchar=WE8ISO8859P1, tochar=AL32UTF8.

We shall see if there is an intermediate way to do this and bringdown lossy data.
Please provide below details:

1. Please run Csscan FROMCHAR=<WE8ISO8859P1> TOCHAR=<WE8MSWIN1252> and upload the csscan results.
2.
SELECT DUMP(COUNTRY_REMARK, 1016) FROM DW.TB_COM02190_DIM_GEOGRAPHY
where rowid='AACfPpABEAAADDqABV';
SELECT DUMP(SUPPLIER_NAME_CITY_CODE, 1016) FROM DW.BUF_SRC_DLV_MET_SUPP_PLNT_LK_1
where rowid='AACfPpABEAAADDqABV';
3.

select distinct(nls_charset_name(charsetid)) CHARACTERSET,
decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKNOWN'),
9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKNOWN'),
96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKNOWN'),
8, decode(charsetform, 1, 'LONG', 'UNKNOWN'),
112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKNOWN')) TYPES_USED_IN
from sys.col$ where charsetform in (1,2) and type# in (1, 8, 9, 96, 112)
order by CHARACTERSET, TYPES_USED_IN

Wednesday, August 13, 2014

Migration from Oracle to MySQL

Exporting Data from Oracle

Exporting the existing data from Oracle is often one of the cheapest forms of migration, but it can involve more manual input and can be slower than using a migration tool. One of the most popular tools for exporting data from Oracle is Oracle SQL Developer. The Oracle SQL Developer tool is capable of exporting data from Oracle tables in numerous formats, like Excel, SQL insert statements, SQL loader format, HTML, XML, PDF, TEXT, Fixed text, etc.

You can use SQL*Plus to select and format your data and then spool it to a file. This example spools out a CSV (comma separated values) file that could either be imported via LOAD DATA INFILE or by creating a CSV table for immediate access.

set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on
spool oradata.txt
select col1 || ',' || col2 || ',' || col3
  from tab1
  where col2 = 'XYZ';
spool off

You can also use the "set colsep" command if you don't want to put the commas in by hand. This saves a lot of typing. Example:

set colsep ','
set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on
spool oradata.txt
select col1, col2, col3
  from tab1 where col2 = 'XYZ';
spool off

Using PL/SQL

PL/SQL's UTL_FILE package can also be used to unload data. Example:

declare
  fp utl_file.file_type;
begin
  fp := utl_file.fopen('c:\oradata','tab1.txt','w');
  utl_file.putf(fp, '%s, %sn', 'TextField', 55);
  utl_file.fclose(fp);
end;
/


Importing Data into MySQL

Once the data has been exported from Oracle into a flat file, then it can be loaded into MySQL. This step continues with the expectation that an identical schema structure was created in the MySQL database to accept the data.

The most common method to read a flat file into MySQL is using the LOAD DATA INFILE command. This is of the form:

LOAD DATA INFILE 'data.txt'   INTO TABLE tbl_name   FIELDS TERMINATED BY ','  ENCLOSED BY '"'
   LINES TERMINATED BY '\r\n'
   IGNORE 1 LINES;
This will read the exported data from the 'data.txt' file into the table 'tbl_name' using the specified separators.

There is also the LOAD XML INFILE if the exported data is in XML format.


Another method that may be even quicker for load is to use the CSV storage engine capabilities. This requires the table to again be created with the appropriate schema and the storage engine specified as CSV. For example:

CREATE TABLE mytable (
   name varchar(50)  NOT NULL,
   address varchar(100) NOT NULL,
   zipcode CHAR(5) NOT NULL
) ENGINE=CSV;
Once the table is created, a .csv file will appear in the data directory corresponding to the table ready to store data. Copy the exported CSV file over the existing 'mytable.csv' data file and execute a FLUSH TABLES to update the table information. Now you have access to the data and can use a INSERT INTO new_table ... SELECT to read data quickly from the CSV table into a more appropriate table for your production system.


Migration Tools
Depending on the setup you use, the following may be interest in your migration tasks:

There are a host of third party tools, some of which are open source. For example:
http://kettle.pentaho.com/
http://www.convert-in.com/ora2sql.htm
http://www.ispirer.com/products/oracle-to-mysql-migration


Saturday, July 19, 2014

Oracle Database Corruption



Master Note for Handling Oracle Database Corruption Issues (Doc ID 1088018.1). This will help you in case if you get future issues, please take a look at it.

How to perform ORACLE_HOME/binaries backup

Oracle binaries backup is needed when we are doing any OS  label upgrade like
OEL upgrade .

1. (Suggested but not mandatory) Shutdown databases, listeners, or any other processes related to the ORACLE_HOME which you are taking backup.

2. cd to the directory where ORACLE_HOME is located for example:

cd /u01/app/oracle/product/11.2

3. backup the ORACLE_HOME for example:

tar -pcvf /u01/app/oracle/backup/oracle_home_bkup.tar db1

In the above example, ORACLE_HOME is /u01/app/oracle/product/11.2/db1 and backup the directory is /u01/app/oracle/backup/

Below is an example of restoring the ORACLE_HOME:

1. (This step would be mandatory in the case of restore) Shutdown databases, listeners, or any other processes related to the ORACLE_HOME which you are restoring.

2. Go to the directory where ORACLE_HOME is located for example:

cd /u01/app/oracle/product/11.2

3. Rename or move the current ORACLE_HOME for example:

mv db1 db1_bkup

3. Restore the ORACLE_HOME for example:

tar -pxvf /u01/app/oracle/backup/oracle_home_bkup.tar

Make sure that is enough enough free disk space before doing the backup.