Skip to Main Content

ODP.NET

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

OracleDataAdapter, no command timeout and fill method hang.

User_7NXUZJun 9 2021

I have a VB program using .NET Framework 3.5 and ODP.NET managed driver (Oracle.DataAccess.dll 2.112.3.0) that connects to a remote server (pooling is default) to query data.
I have assigned CommandTimeout to 5 seconds and tried to query data that takes about 10 seconds to finish. But OracleDataAdapter does not throw SQL time out error when connect to a remote server. Meanwhile OracleDataAdapter do throw SQL time out error when connect to a local database. It looks like the CommandTimeout did not work to a remote server. How to make CommandTimeout work to a remote server?
Another problem is program stuck in the fill method when internet connection lost during execution of method. Setting the CommandTimeout to 60 seconds did not work. Why CommandTimeout no working when connection lost during query data?
Included code:
Dim connection As OracleConnection = New OracleConnection(connectionstring)
Dim oracleDataAdapter As New OracleDataAdapter(connection.CreateCommand())
Dim dataset as New DataSet
Try
oracleDataAdapter.SelectCommand.AddToStatementCache = False
oracleDataAdapter.SelectCommand.NotificationAutoEnlist = False
oracleDataAdapter.SelectCommand.CommandTimeout = 60
oracleDataAdapter.SelectCommand.CommandText = str_SQL
Dim int_Count As Integer = oracleDataAdapter.Fill(dataset, table)
Return int_Count
Catch
Throw
Finally
Dataset.Dispose()
oracleDataAdapter.Dispose()
End Try

Comments

EdStevens

orasiya wrote:

Dear Friends,

I need bash example (good & effective rman bash example) of rman backup for my production database , simple but effective that

1- it does level 0 backup of database including the control file , spfile every week on saturdays

2- it does incremental level 1 backup everyday

3- it does archivelog backup everyday

for review

----------------------------- level 0

run

{

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk1/FULL_%U';

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk2/FULL_%U';

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk1/FULL_%U';

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk2/FULL_%U';

.....

backup as backupset incremental level 0 section size 32g database tag 'RMAN/FULL_L0' plus archivelog not backed up 2 times;

#control file backup

allocate channel ch_cntl device type disk format '/ZFS/DB_PRO/disk1/cf_%U';

backup as backupset CURRENT CONTROLFILE channel ch_cntl;

#spfile backup

allocate channel ch_sp device type disk format '/ZFS/DB_PRO/disk1/sp_%U';

backup as backupset SPFILE channel ch_sp;

DELETE NOPROMPT OBSOLETE;

}

----------------------------- level 1

run

{

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk1/INC_%U';

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk2/INC_%U';

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk1/INC_%U';

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk2/INC_%U';

.....

backup as backupset incremental level 1 section size 32g database tag 'RMAN/LEVEL_L1' plus archivelog not backed up 2 times;

DELETE NOPROMPT OBSOLETE;

}

------------------------------

-------------------- archivelog backup

run

{

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk1/ARC_%U';

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk2/ARC_%U';

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk1/ARC_%U';

allocate channel ch01 device type disk format '/ZFS/DB_PRO/disk2/ARC_%U';

backup archivelog all not backed up 2 times;

delete noprompt archivelog until time '(sysdate-30)';

}

--------some rman configuration setting

RMAN> show all;

RMAN configuration parameters for database with db_unique_name DB_PRO are:

CONFIGURE RETENTION POLICY TO REDUNDANCY 5;

CONFIGURE BACKUP OPTIMIZATION OFF; # default

CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default

CONFIGURE CONTROLFILE AUTOBACKUP ON;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ZFS/DB_PRO/disk1/auto/%F';

CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default

CONFIGURE MAXSETSIZE TO UNLIMITED; # default

CONFIGURE ENCRYPTION FOR DATABASE OFF; # default

CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default

CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE;

CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default

CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default

CONFIGURE SNAPSHOT CONTROLFILE NAME TO '+REC1/DB_PRO/snapcf_DB_PRO.f';

Why do you allocate different directories for the level 0 backup than for the level 1 backups? This is needless complexity.

YOu don't need separate run blocks for archivelogs and/or controlfile/spfile.  This is needless complexity

I accomplish everything you want with a single shell script.  Here's the core of it:

#!/bin/sh

ORACLE_SID=$1

inclvl=$2

logfile=$3
ORAENV_ASK=NO

source oraenv

rman target /  <<EOF >> $logfile

set echo on

delete force noprompt obsolete;

backup as compressed backupset incremental level $inclvl database tag ${ORACLE_SID}_db_bkup plus archivelog delete all input /

tag ${ORACLE_SID}_arch_bkup;

list backup;

EOF

1 - 1

Post Details

Added on Jun 9 2021
17 comments
1,900 views