Database Corrupt Block?
Nov 12, 2012am learning about database block corruption and it's recovery. for practice purpose can we corrupt the block manually. i.e. can we do logical corruption.
View 8 Repliesam learning about database block corruption and it's recovery. for practice purpose can we corrupt the block manually. i.e. can we do logical corruption.
View 8 Repliesi have an error with block corruption
Error: Corrupt block relative dba: 0x01c12a58 (file 7, block 76376)
What all the ,methods I can go for if we are working on a production environment with out any down time.
I can go for dbms repair package and restore and recover
have a repeatable technique for damaging a datafile block?
I need to demonstrate and contrast various recovery techniques, such as dbms_repair, RMAN block recovery, and Data Guard automatic block repair.
I'll end up with a shell script (or batch file) where I can enter a file number and block number, and wipe out that block.
how can i corrupt a block to mock up BMR (block media recovery) workaround , I want to corrupt some block of Oracle seeded table "emp" within scott schema.
View 1 Replies View RelatedI'm using database 11g & restore backup from another location.
RMAN> RESTORE CONTROLFILE FROM '/u01/RMAN/forstandby_0acekubq_1_1';
RMAN> catalog start with '/u01/RMAN/';
RMAN> restore database;
channel ORA_DISK_1: reading from backup piece /u01/RMAN/forstandby_09ceku8r_1_1
channel ORA_DISK_1: ORA-19870: error while restoring backup piece /u01/RMAN/forstandby_09ceku8r_1_1
ORA-19599: block number 782 is corrupt in backup piece /u01/RMAN/forstandby_09ceku8r_1_1
failover to previous backup
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 10/23/2012 19:24:11
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore
I couldn't take backup of the RAC database archivelog.
RMAN> BACKUP VALIDATE DATABASE ARCHIVELOG ALL;
Starting backup at 24-MAR-13
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=+DG1/kvxcprd/datafile/system.260.777756857
input datafile fno=00003 name=+DG1/kvxcprd/datafile/sysaux.268.777756857
input datafile fno=00002 name=+DG1/kvxcprd/datafile/undotbs1.263.777756857
input datafile fno=00005 name=+DG1/kvxcprd/datafile/undotbs2.264.777756983
input datafile fno=00004 name=+DG1/kvxcprd/datafile/users.267.777756857
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
channel ORA_DISK_1: starting archive log backupset
channel ORA_DISK_1: specifying archive log(s) in backup set
input archive log thread=2 sequence=17 recid=26 stamp=810915691
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 03/24/2013 14:37:11
ORA-19599: block number 1985 is corrupt in archived log +FG/kvxcprd/archivelog/2013_03_24/thread_2_seq_17.269.810915689
RMAN> backup archivelog all;
Starting backup at 24-MAR-13
current log archived
using channel ORA_DISK_1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 03/24/2013 14:39:52
ORA-19563: header validation failed for file
i am using oracle 9i database.i want to retrieve data from corrupt windows xp.but i do not know what i do for that.
View 2 Replies View RelatedI've recently moved jobs and am doing a lot of the normal things getting familiar with my new company's databases.I was checking through our production backup logs and came across something that looks a little funny. From the last two days backups, I see:
select completion_time, marked_corrupt, media_corrupt, logically_corrupt
from v$backup_datafile
where controlfile_type = 'B'
order by completion_time desc
COMPLETION_TIME MARKED_CORRUPT MEDIA_CORRUPT LOGICALLY_CORRUPT
01/12/2011 11:27:252011 1201 2
01/12/2011 11:26:180 0 0
01/12/2011 11:25:242011 1201 1
01/12/2011 11:15:562011 1201 0
01/12/2011 01:40:100 0 0
30/11/2011 11:23:482011 1130 2
30/11/2011 11:22:440 0 0
30/11/2011 11:21:562011 1130 1
30/11/2011 11:13:002011 1130 0
30/11/2011 01:41:010 0 0
The 01:40 record will come from our nightly command:
BACKUP INCREMENTAL LEVEL=0 FILESPERSET=20 FORMAT 'full_%d_%t_%s_%p'
DATABASE INCLUDE CURRENT CONTROLFILE
The 11AM records will come from the command:
BACKUP INCREMENTAL LEVEL=0 FORMAT 'ctl_%t_%s_%p' CURRENT CONTROLFILE;
(I know backups shouldn't still be running at 11am and we don't need level 0 backups every night, that's a seperate issue I'll be addressing! ) I see there's been a similar entry here in v$backup_datafile for all backups that there's records for. The database is up and running just fine. There are no unusual errors being reported by the database in OEM or the alert log.I tried looking at both our control files (yes, should have 3 - something else I've listed to change!) with dbverify which showed no issues - though I'm not sure if this is designed to work with control files.
If so, how could I confirm whether it's an issue with a specific controlfile (I'm assuming it's not an issue with the backup to tape itself, as it's reporting the same corruption every day)?I'd obviously like to diagnose this now while the db is up and running, rather than at 4am some morning during a crash and finding out my backup control files are no good!
don't know if I can repeat it. It occured while converting a database to archivelog mode, after completing a Data Pump export/import upgrade from 11.1.0.7. I fixed it like this: juno> startup mount;
ORACLE instance started.
Total System Global Area 1.7108E+10 bytes
Fixed Size 2175440 bytes
Variable Size 8858373680 bytes
Database Buffers 8220835840 bytes
Redo Buffers 26886144 bytes
Database mounted.
juno> alter database archivelog; alter database archivelog
ERROR at line 1: ORA-19821: an intentionally corrupt log file was found
juno> recover database until cancel; Media recovery complete.
juno> alter database open resetlogs;
Database altered.
juno> shu immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
juno> startup mount;
ORACLE instance started.
[code]...
In Oracle 9i
I know that db_block_size defines the standard/default block size for my datafiles.
I know db_cache_size defines the size of the my default database buffer of the size of my standard/default block size.
db_block_size = 8192 (8k)
db_cache_size = 200Mo of 8k block
Is there any needs for the other buffer cache
db_16k_cache_size
db_4k_cache_size
db_32k_cache_size
and so on?
If I have NO datafiles other than of the default block size, would I need to define a size for those other buffer pool? Is there any process that would benifit of these pools?
I am using a block the problem is I am unable to fetch the data into the block when I have entered the execute_query even tried with the pre-block trigger but not getting the message which is in pre-block how to over come with this..struggling since two days but unable to resolve it
View 2 Replies View RelatedI have a form which contains two canvas.In the first canvas, i have a data block which contains two columns(database item of both are no). In second canvas i have a list item.
My problem is how to pass the value(s) of this data block to the item list which is present in second canvas.
The requirement user has given is such that the user will enter different categories, and in the second canvas where the main datablock is present, will contain a list item in data block which should show the data entered by the user.
I am modifying an existing form and wanted to do this with less number of modifications. The existing form has one checkbox item ( displayed and attached to database)..and its not in use ( was created for some enhancement that never implemented but code is there)..and in the form at several places its mentioned/calculated based on Updatabale/Enable/Queryable/Insert..all properties.
Since I want to use the same position of this check box so ..i simply detached the canvas from this item..it compiles fine but when login into application it gives al those errors like..FRM--item not update able.etc etc..
Is there any property to just hide an item inspite having related codes in the form ?
FRM-30425: Summarized database item must reside in a block with Query All Records or Precompute Summaries set to Yes.
Item: TOTAL
Block: SALE_DETAIL
FRM-30085: Unable to adjust form for output.
What can i do ?
I want to change Database Data Block Property at runtime.
View 4 Replies View RelatedSQL> select block_size from v$controlfile;
BLOCK_SIZE
----------
16384
SQL> show parameter db_block_size;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_block_size integer 8192
the 2 can have difference block size?
The main qn is in the subject line.
I have used the following code
GO_BLOCK('CHILD_BLK');
FIRST_RECORD;
LOOP
IF NVL(:CHILD_BLK.SELECT_FLAG,'N')='Y' THEN
V_REC_NO := GET_BLOCK_PROPERTY('CHILD_BLK',CURRENT_RECORD);
SET_ITEM_INSTANCE_PROPERTY('CHILD_BLK.ASSET_DESC',
V_REC_NO,
[code]....
All the analysis till now on our system proves that our system is clearly I/O bound and db sequential read is the biggest culprit.
We have even identified the index which is being affected by sequential read. I am thinking of creating a new tablespace with 32K blocksize (currently all table spaces are 8k) and migrate this index to the new space. That way, Oracle will have to do less number of reads to get the required data.
But is there anything wrong in having just one tablespace with a differnt block size? Or is there anything that I have to be watchful about while doing it?
Version information:
Forms [32 Bit] Version 10.1.2.3.0 (Production)
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
When an user enters a value in a field of a Screen, I want to query up the next screen records based on that user input value in the previous screen.The previous screen is based on a control block i.e.
Q_EMP
items- Q_EMP.emp_id, Q_EMP.FY, Q_EMP.hire_flag.
i have multi data block filed. and checkbox field which based on control block...My task is when i check checkbox only one field should enabled and my mouse goes to that field
e.g
item11 item21 item31 chkbox1
item12 item22 item32 chkbox2
Scenario like this :
My item field based on data block and checkbox based on control block,while i checked chkbox1 , only item31 on that current record should be enabled and i changed value only on that field
when i checked chkbox1 , my cursor goes to item31...not item32
i want to insert a record in table when one of item in database block is filled..from which property i knw my one of field in block is filled or not.
View 2 Replies View Relatedi have a master detail form, In Master block we have one field cheque amount and in Detail block we have field receiveable amount invoice wise. if company paid us a cheque amount we will enter this amount in Master block field Cheque amount and in detail block there will be invoice wise receivable amounts. i want to distribute the cheque amount in detail block invoice wise for example
Cheque amount in master block = 291
Invoice wise receiveable amount is as follows
Invoice No , receivable amount , Received amount
10, 196 , 0
20 , 95 , 0
30 , 54 , 0
Result should be as follows:
Invoice No , receivable amount , Received amount
10, 196, 196
20 , 95 , 95
30 , 54, 0
Received amount field should be distributed according to the receivable amount when recevied amount = cheque amount then remaining will be 0.
I have a multi record control block (basically a text item displaying 6 records) where user enters values and I want to process the values using pre-insert trigger.
I want to read value in each record and then do some tasks using a pre-insert trigger before I commit the values. To navigate between the records I was using first_record, next_record, clear_record built-ins but it gives errors like "40737-illegalrestricted procedure next_record in pre-insert trigger".
i written this code i m facing ORA-04030: out of process memory when trying to allocate 16408 bytes error
/* Formatted on 2011/11/26 11:52 (Formatter Plus v4.8. */
DECLARE
row_id varchar2(50);
v_batch_id temp.batch_id%TYPE;
v_slab_id temp.slab_id%TYPE;
flag NUMBER (2);
num varchar2(50) := &row_id;
[code].....
I am running the stand alone pl/sql block. it opens the for cursor and the updating the table. select value in the cursor having 3 lack records. the server output is returning junk values. Why i am getting this junk value here.
below is the format:
SET SERVEROUTPUT ON
BEGIN
FOR cursor name select
LOOP
UPDATE table_name
END LOOP;
[code].....
From plan I would expect the delete command to be processed very quickly, however it does huge amounts of db block gets. I assume this is because of deleting the row from other structures (indexes, foreign keys in tables etc.) How can I find out which object scan caused the db block gets ?
SQL> delete from messages2 where id = 11004240718;
1 row deleted.
Elapsed: 00:00:03.79
Execution Plan
----------------------------------------------------------
Plan hash value: 140582024
[code]....
I want to execute a procedure and view its output. The procedurename is GET_clnts which has one of the parameters as clob where i am passing xmltype data to it.How can i execute the procedure to view the output. i can execute the SQL statement by itself, but not sure how to call a procedure from a plsql block..
DECLARE
clientid NUMBER;
OUT_RESULTSET clob;
BEGIN
GET_clnts ( clientid, OUT_RESULTSET);
DBMS_OUTPUT.Put_Line('');
END;
[code]...
How do I loop through a Input parameter (varchar_table) and pass the input value to a select query.
Procedure Test
(
param1 IN dbms_sql.varchar2_table
)
[Code]....
1. How do I define temp_tbl and is it a best practice to use temporary table - if not what is the best method to do the same.
I created one table with out primary key like well_1 .in that table have have more than 30 columns.
SQL> select uwi,analysis_obs_no,fluid_type,top,base,date_sampled from well_1
2 where uwi ='1000 and base =2871.5;
UWI obs_NO F TOP BASE
---------------- ---- ------ ----- - -----------------------------
1000 1 G 2870.5 2871.5
1000 3 G 2516 2871.5
1000 4 G 2870.5 2871.5
1000 2 G 2870.5 2871.5
1000 6 G 2516 2871.5
1000 5 G 2516 2871.5
1000 7 G 2516 2871.5
1000 1 L 2516 2871.5
1000 2 L 2516 2871.5
7 rows selected.
i did code like this in from in search panel. in taht form i will enter uwi and base values and iwill click search button.then it will display all record values in master block .after taht i will click next button then it will display next values(all values).
i am getting all values (1 G to 7 G values).but iam not getting last 2 records when i click next button (1 L to 2 L values ).
next button
select analysis_obs_no,fluid_type
into :ctrl1.OBS_NO,:ctrl1.fluid_type
from well_gas_anal
where analysis_obs_no =(select min(analysis_obs_no)
from well_gas_anal
[code].....
i tried in SQL*PLUS like this :
select rowid,analysis_obs_no,fluid_type,rownum
2 from well_gas_anal
3 where rowid=(select min(rowid)
4 from well_gas_anal
5 where analysis_obs_no > &a
6 and uwi ='1000' and base =2871.5 )
7 and uwi ='1000' and base =2871.5
8* and fluid_type is not null
SQL> /
AS of we know that we can get the number of blocks occupied by data in a table by querying the user_tables Data Dictionary.
My questions are,
1.)how to know if i want the each block size ?(i.e each block size either it is 4kb or 8kb or 16kb..)?
2.) Is the block size is same for all blocks in a table and in Database or it varies?
3.)The block size is DB dependent or Table dependent or Machine dependent(32-bit, 64-bit and OS)?