ORA-00202: controlfile: ‘C:\ORACLE\ORADATA\ORACLE91\CONTROL02.CTL’

ORA-27091: skgfqio: unable to queue I/O

ORA-27070: skgfdisp: async read/write failed

OSD-04006: ReadFile() failure, unable to read from file

O/S-Error: (OS 23) Data error (cyclic redundancy check).

i find this problem on one of my server database. this problem will make oracle fail to mount and open. if you try to connect via sqlplus, you will get error message : Oracle is on initialization startup/shutdown. so you can not enter the database.

below is the step that i do, to resolve the problem.(oracle ver 9i and higher)

1. connect to database using sqlplus with SYS as SYSDBA

2. shutdown immediate the database.

3. create a backup copy of all control file(usually consist of 3 control file with extension CTL) on folder ORADATA\

4. rename CONTROL02.CTL (corrupt control file) to CONTROL02.bak

5. rename one of working control file to become CONTROL02.CTL and then copy this file to folder ORADATA\

6.then startup the database via sqlplus using SYS as SYSDBA

this step only working if one of controlfile is corrupt and need to be replace. and also your controlfile is multiplex. Make sure that the error message is exactly the same with what is written above.


Minh Tran


Tutorial :: Using AT commands to Send and Receive SMS
This AT command tutorial is written to support our Teltonika T-ModemUSB, a USB2.0 GSM modem based on the Nokia 12i GSM module – fast EDGE technology is supported. Some of the most popular applications are SMS based telemetry, security and news broadcasting.

Steps using AT commands to send and receive SMS using a GSM modem from a computer

1. Setting up GSM modem
2. Using the HyperTerminal
3. Initial setup AT commands
4. Sending SMS using using AT commands
5. Receiving SMS using using AT commands
6. Using a computer program to send and receive SMS

After succesfully sending and receiving SMS using AT commands via the HyperTerminal, developers can ‘port’ the ASCII instructions over to their programming environment, eg. Visual Basic, C/C++ or Java and also programmically parse ASCII messages from modem.

1. Setting up your GSM modem

Most GSM modems comes with a simple manual and necessary drivers. To setup your T-ModemUSB, download the USB GSM Modem Quick Start ( Windows ) guide (460kB PDF). You would be able to send SMS from the Windows application and also setup GPRS connectivity. The GSM modem will map itself as a COM serial port on your computer.

T-ModemUSB Windows Control Tool and SMS sending application
Windows based control panel to setup GSM modem, GPRS and send SMS

2. Using the HyperTerminal

Hint :: By developing your AT commands using HyperTerminal, it will be easier for you to develop your actual program codes in VB, C, Java or other platforms.

Go to START\Programs\Accessories\Communications\HyperTerminal (Win 2000) to create a new connection, eg. “My USB GSM Modem”. Suggested settings ::

– COM Port :: As indicated in the T-Modem Control Tool
– Bits per second :: 230400 ( or slower )
– Data Bits : 8
– Parity : None
– Stop Bits : 1
– Flow Control : Hardware

You are now ready to start working with AT commands. Type in “AT” and you should get a “OK”, else you have not setup your HyperTerminal correctly. Check your port settings and also make sure your GSM modem is properly connected and the drivers installed.

3. Initial setup AT commands

We are ready now to start working with AT commands to setup and check the status of the GSM modem.

AT Returns a “OK” to confirm that modem is working
AT+CPIN=”xxxx” To enter the PIN for your SIM ( if enabled )
AT+CREG? A “0,1” reply confirms your modem is connected to GSM network
AT+CSQ Indicates the signal strength, 31.99 is maximum.

4. Sending SMS using AT commands

We suggest try sending a few SMS using the Control Tool above to make sure your GSM modem can send SMS before proceeding. Let’s look at the AT commands involved ..

AT+CMGF=1 To format SMS as a TEXT message
AT+CSCA=”+xxxxx” Set your SMS center’s number. Check with your provider.

To send a SMS, the AT command to use is AT+CMGS ..

AT+CMGS=”+yyyyy” <Enter>
> Your SMS text message here <Ctrl-Z>

The “+yyyyy” is your receipent’s mobile number. Next, we will look at receiving SMS via AT commands.

5. Receiving SMS using AT commands

The GSM modem can be configured to response in different ways when it receives a SMS.

a) Immediate – when a SMS is received, the SMS’s details are immediately sent to the host computer (DTE) via the +CMT command

AT+CMGF=1 To format SMS as a TEXT message
AT+CNMI=1,2,0,0,0 Set how the modem will response when a SMS is received

When a new SMS is received by the GSM modem, the DTE will receive the following ..

+CMT :  “+61xxxxxxxx” , , “04/08/30,23:20:00+40”
This the text SMS message sent to the modem

Your computer (DTE) will have to continuously monitor the COM serial port, read and parse the message.

b) Notification – when a SMS is recieved, the host computer ( DTE ) will be notified of the new message. The computer will then have to read the message from the indicated memory location and clear the memory location.

AT+CMGF=1 To format SMS as a TEXT message
AT+CNMI=1,1,0,0,0 Set how the modem will response when a SMS is received

When a new SMS is received by the GSM modem, the DTE will receive the following ..

+CMTI: “SM”,3 Notification sent to the computer. Location 3 in SIM memory
AT+CMGR=3 <Enter> AT command to send read the received SMS from modem

The modem will then send to the computer details of the received SMS from the specified memory location ( eg. 3 ) ..

+CMGR: “REC READ”,”+61xxxxxx”,,”04/08/28,22:26:29+40″
This is the new SMS received by the GSM modem

After reading and parsing the new SMS message, the computer (DTE) should send a AT command to clear the memory location in the GSM modem ..

AT+CMGD=3 <Enter>   To clear the SMS receive memory location in the GSM modem

If the computer tries to read a empty/cleared memory location, a +CMS ERROR : 321 will be sent to the computer.

6. Using a computer program to send and receive SMS

Once we are able to work the modem using AT commands, we can use high-level programming ( eg. VB, C, Java ) to send the AT ASCII commands to and read messages from the COM serial port that the GSM modem is attached to.

Developer Tip : To speed up development of your solution, download trial versions of SerialTools for C# and VB.NET or SerialTools ActiveX for Windows – with sample serial port ( modem ) reading and writing samples.

When exporting data from Oracle DB 9i, encountered by the error:

. exporting pre-schema procedural objects and actions
. exporting foreign function library names for user QLNS
. exporting PUBLIC type synonyms
. exporting private type synonyms
. exporting object type definitions for user QLNS
EXP-00008: ORACLE error 942 encountered
ORA-00942: table or view does not exist
EXP-00024: Export views not installed, please notify your DBA
EXP-00000: Export terminated unsuccessfully


Run catalog.sql,catproc.sql and catexp.sql ( logged in as sys).

Then you should export as normal.


Minh Tran

1. To get currently used character set, issue:

SELECT * FROM nls_database_parameters WHERE parameter LIKE ‘%CHARACTERSET%’.

nls_database_parameters is a view.

2. Check and update, for example, to set nls_characterset = UTF8,nls_nchar_characterset = UTF8, use table props$:



There you go…

Minh Tran

Products of the year

Posted: March 7, 2009 in Uncategorized

“It is worth noting that in the past Sun has been able to dominate many categories, but it took multiple products to achieve that distinction. This year one product, NetBeans, dominated the categories by winning five out of twelve.” – Developer.com

Congratulations to NetBeans! They won following categories.

* Development Tool – NetBeans Platform
* Development Utilities – NetBeans Profiler
* Wireless/Mobile – NetBeans Mobility Pack for Connected Device Configuration (CDC) 5.5
* Java Tool – NetBeans IDE
* Open Source – NetBeans

I’m using NetBeans and find that it is a good IDE for Java development although I prefer JDeveloper. However the developers voted therefore it’s their choice. Here is the link to the post:

* Winners of the Developer.com Product of the Year 2009 Are Announced

If you want to change the IAS_Admin password, you need to delete the <credentials> line associated with ias_admin in the jazn_data.xml file. However, you would need to shut down the EMWebsite prior to doing this.

.Edit the following file and locate the line that defines the credentials property for use the ias_admin user:


The following example shows the section of jazn-data.xml with the credentials entry in boldface type:


2.Remove the entire line that contains the <credentials> property from jazn-data.xml.

3.Enter the following command from DOS Command window:

%ORACLE_HOME%\bin\emctl set password reset <new password>

The steps outlined in the previous lines work, BUT you have to reboot the machine in order for you to pick up the new password. You can’t simply stop/restart the server, because when you try that, it will ask you for the ias_admin password. But a shutdown/restart will work. Been there and survived!

Actually, you can do an emctl restart since emctl stop asks for the password, but start and restart do not

Be happy administrator

^ ^
Minh Tran

ORA-39700: database must be opened with UPGRADE option
Cause: A normal database open was attempted, but the database has not been upgraded to the current server version.
Action: Use the UPGRADE option when opening the database to run catupgrd.sql (for database upgrade), or to run catalog.sql and catproc.sql (after initial database creation).
Complete the following sections to upgrade an Oracle Database 10g release 10.2.0.x to Oracle Database 10g release
1. {Run the Pre-Upgrade Information Tool}
2. {Upgrading a Release 10.2 Database}
3. {Missing Components When Upgrading} Run the Pre-Upgrade Information Tool

If you are upgrading database manually, then you should analyze it by running the Pre-Upgrade Information Tool.

The Pre-Upgrade Information Tool is a SQL script that ships with Oracle Database 10.2. Complete the following procedure to run the Pre-Upgrade Information Tool:
1. Start the database in the UPGRADE mode:
2. Set the system to spool results to a log file for later analysis:
SQL> SPOOL upgrade_info.log
3. Run the Pre-Upgrade Information Tool:
SQL> @?/rdbms/admin/utlu102i.sql
4. Turn off the spooling of script results to the log file:
Check the output of the Pre-Upgrade Information Tool in the upgrade_info.log file. The following is an example of the output generated by the Pre-Upgrade Information Tool:

here exemple output

and then

After you install the patch set, you must perform the following steps on every database associated with the upgraded Oracle home:

If you do not run the catupgrd.sql script as described in this section and you start up a database for normal operation, then ORA-01092: ORACLE instance terminated. Disconnection forced errors will occur and the error ORA-39700: database must be opened with UPGRADE option will be in the alert log.
1. Log in with administrator privileges.
2. For Oracle RAC installations, start listener on each node of the cluster as follows:
C:\> ORACLE_BASE\ORACLE_HOME\bin\srvctl start listener -n node
3. If you are using Automatic Storage Management, start the Automatic Storage Management instance.
4. For single-instance installations, start the listener as follows:
C:\> lsnrctl start
5. For single-instance installations, use SQL*Plus to log in to the database as the SYS user with SYSDBA privileges:
C:\> sqlplus /NOLOG
Enter password:SYS_password
Users of single-instance installations now proceed to step 7.
6. For Oracle RAC installations:
1. Use SQL*Plus to log in to the database as the SYS user with SYSDBA privileges:
C:\> sqlplus /NOLOG
Enter password: SYS_password
2. Set the CLUSTER_DATABASE initialization parameter to FALSE:
3. Shut down the database:
7. Enter the following SQL*Plus commands:
SQL> SPOOL patch.log
SQL> @ORACLE_BASE\ORACLE_HOME\rdbms\admin\catupgrd.sql
8. Review the patch.log file for errors and inspect the list of components that is displayed at the end of catupgrd.sql script.

This list provides the version and status of each SERVER component in the database.
9. If necessary, rerun the catupgrd.sql script after correcting any problems.
10. Restart the database:
11. Run the utlrp.sql script to recompile all invalid PL/SQL packages now instead of when the packages are accessed for the first time. This step is optional but recommended.
SQL> @ORACLE_BASE\ORACLE_HOME\rdbms\admin\utlrp.sql

When the patch set is applied to an Oracle Database 10g Standard Edition database, there may be 54 invalid objects after the utlrp.sql script runs. These objects belong to the unsupported components and do not affect the database operation.