sábado, 29 de septiembre de 2018

HINTS EXPLICACION

SELECT      /*+ hint --or-- text */    statement body  
            -- or --      
SELECT          --+ hint --or-- text      statement body

Where:
      • /*, */  -  These are the comment delimiters for multi-line comments
      • --  -  This is the comment delimiter for a single line comment (not usually used for hints)
      • +  -  This tells Oracle a hint follows, it must come immediately after the /*
      • hint  -  This is one of the allowed hints
      • text  -  This is the comment text

Oracle Hint
Meaning
+
Must be immediately after comment indicator, tells Oracle this is a list of hints.
ALL_ROWS
Use the cost based approach for best throughput.
CHOOSE
Default, if statistics are available will use cost, if not, rule.
FIRST_ROWS
Use the cost based approach for best response time.
RULE
Use rules based approach; this cancels any other hints specified for this statement.
Access Method Oracle Hints:

CLUSTER(table)
This tells Oracle to do a cluster scan to access the table.
FULL(table)
This tells the optimizer to do a full scan of the specified table.
HASH(table)
Tells Oracle to explicitly choose the hash access method for the table.
HASH_AJ(table)
Transforms a NOT IN subquery to a hash anti-join.
ROWID(table)
Forces a rowid scan of the specified table.
INDEX(table [index])
Forces an index scan of the specified table using the specified index(s). If a list of indexes is specified, the optimizer chooses the one with the lowest cost. If no index is specified then the optimizer chooses the available index for the table with the lowest cost.
INDEX_ASC (table [index])
Same as INDEX only performs an ascending search of the index chosen, this is functionally identical to the INDEX statement.
INDEX_DESC(table [index])
Same as INDEX except performs a descending search. If more than one table is accessed, this is ignored.
INDEX_COMBINE(table index)
Combines the bitmapped indexes on the table if the cost shows that to do so would give better performance.
INDEX_FFS(table index)
Perform a fast full index scan rather than a table scan.
MERGE_AJ (table)
Transforms a NOT IN subquery into a merge anti-join.
AND_EQUAL(table index index [index index index])
This hint causes a merge on several single column indexes. Two must be specified, five can be.
NL_AJ
Transforms a NOT IN subquery into a NL anti-join (nested loop).
HASH_SJ(t1, t2)
Inserted into the EXISTS subquery; This converts the subquery into a special type of hash join between t1 and t2 that preserves the semantics of the subquery. That is, even if there is more than one matching row in t2 for a row in t1, the row in t1 is returned only once.
MERGE_SJ (t1, t2)
Inserted into the EXISTS subquery; This converts the subquery into a special type of merge join between t1 and t2 that preserves the semantics of the subquery. That is, even if there is more than one matching row in t2 for a row in t1, the row in t1 is returned only once.
NL_SJ
Inserted into the EXISTS subquery; This converts the subquery into a special type of nested loop join between t1 and t2 that preserves the semantics of the subquery. That is, even if there is more than one matching row in t2 for a row in t1, the row in t1 is returned only once.
Oracle Hints for join orders and transformations:

ORDERED
This hint forces tables to be joined in the order specified. If you know table X has fewer rows, then ordering it first may speed execution in a join.
STAR
Forces the largest table to be joined last using a nested loops join on the index.
STAR_TRANSFORMATION
Makes the optimizer use the best plan in which a start transformation is used.
FACT(table)
When performing a star transformation use the specified table as a fact table.
NO_FACT(table)
When performing a star transformation do not use the specified table as a fact table.
PUSH_SUBQ
This causes nonmerged subqueries to be evaluated at the earliest possible point in the execution plan.
REWRITE(mview)
If possible forces the query to use the specified materialized view, if no materialized view is specified, the system chooses what it calculates is the appropriate view.
NOREWRITE
Turns off query rewrite for the statement, use it for when data returned must be concurrent and can't come from a materialized view.
USE_CONCAT
Forces combined OR conditions and IN processing in the WHERE clause to be transformed into a compound query using the UNION ALL set operator.
NO_MERGE (table)
This causes Oracle to join each specified table with another row source without a sort-merge join.
NO_EXPAND
 Prevents OR and IN processing expansion.
Oracle Hints for Join Operations:

USE_HASH (table)
This causes Oracle to join each specified table with another row source with a hash join.
USE_NL(table)
This operation forces a nested loop using the specified table as the controlling table.
USE_MERGE(table,[table, - ])
This operation forces a sort-merge-join operation of the specified tables.
DRIVING_SITE
The hint forces query execution to be done at a different site than that selected by Oracle. This hint can be used with either rule-based or cost-based optimization.
LEADING(table)
The hint causes Oracle to use the specified table as the first table in the join order.
Oracle Hints for Parallel Operations:

[NO]APPEND
This specifies that data is to be or not to be appended to the end of a file rather than into existing free space. Use only with INSERT commands.
NOPARALLEL (table
This specifies the operation is not to be done in parallel.
PARALLEL(table, instances)
This specifies the operation is to be done in parallel.
PARALLEL_INDEX
Allows parallelization of a fast full index scan on any index.
Other Oracle Hints:

CACHE
Specifies that the blocks retrieved for the table in the hint are placed at the most recently used end of the LRU list when the table is full table scanned.
NOCACHE
Specifies that the blocks retrieved for the table in the hint are placed at the least recently used end of the LRU list when the table is full table scanned.
[NO]APPEND
For insert operations will append (or not append) data at the HWM of table.
UNNEST
Turns on the UNNEST_SUBQUERY option for statement if UNNEST_SUBQUERY parameter is set to FALSE.
NO_UNNEST
Turns off the UNNEST_SUBQUERY option for statement if UNNEST_SUBQUERY parameter is set to TRUE.
PUSH_PRED
 Pushes the join predicate into the view.


/*+ ALL_ROWS */ Pone la consulta a costes y la optimiza para que consuma el menor número
de recursos posibles.
/*+ FIRST_ROWS */ Pone la consulta a costes la optimiza para conseguir el mejor tiempo de
respuesta.
/*+ CHOOSE */ Pone la consulta a costes.
/*+ RULE */ Pone la consulta a reglas.
/*+ INDEX( tabla índice ) */ Fuerza la utilización del índice indicado para la tabla indicada
/*+ ORDERED */ Hace que las combinaciones de las tablas se hagan en el mismo orden en
que aparecen en el join.

EJEMPLO

SQL> select /*+ index(t1) */ v1 from t1 where n1 >0;

Execution Plan
----------------------------------------------------------
Plan hash value: 1429545322

-------------------------------------------------------------------------------------
| Id  | Operation                   | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |       |  4000 |   566K|  2523   (1)| 00:00:13 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T1    |  4000 |   566K|  2523   (1)| 00:00:13 |
|*  2 |   INDEX RANGE SCAN          | T1_I1 |  4000 |       |    10   (0)| 00:00:01 |

jueves, 27 de septiembre de 2018

View Traces Actives DBA_ENABLED_TRACES - TRACES

View Enabled Traces for End to End Tracing

An Oracle Enterprise Manager report or the DBA_ENABLED_TRACES view can display outstanding traces. In the DBA_ENABLED_TRACES view, you can determine detailed information about how a trace was enabled, including the trace type. The trace type specifies whether the trace is enabled for client identifier, session, service, database, or a combination of service, module, and action.



while true; do ls -ltr | wc -l; sleep 3; done


martes, 18 de septiembre de 2018

BACKUP ARCHIVELOG ALL NOT BACKED UP


RMAN> backup archivelog all not backed up;

Starting backup at 18-SEP-18
current log archived
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=404 device type=DISK
skipping archived logs of thread 1 from sequence 5 to 32; already backed up
channel ORA_DISK_1: starting archived log backup set
channel ORA_DISK_1: specifying archived log(s) in backup set
input archived log thread=1 sequence=33 RECID=29 STAMP=987190933
channel ORA_DISK_1: starting piece 1 at 18-SEP-18
channel ORA_DISK_1: finished piece 1 at 18-SEP-18
piece handle=+FRA/ACME/BACKUPSET/2018_09_18/annnf0_tag20180918t194214_0.303.987190935 tag=TAG20180918T194214 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 18-SEP-18

Starting Control File and SPFILE Autobackup at 18-SEP-18
piece handle=+FRA/ACME/AUTOBACKUP/2018_09_18/s_987190935.304.987190937 comment=NONE
Finished Control File and SPFILE Autobackup at 18-SEP-18

RMAN>

Validate database | Restore Validate

RMAN> backup validate database;

Starting backup at 18-SEP-18
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00003 name=+DATA/ACME/DATAFILE/sysaux.257.848597951
input datafile file number=00001 name=+DATA/ACME/DATAFILE/system.258.848598015
input datafile file number=00002 name=+DATA/ACME/DATAFILE/example.266.848598231
input datafile file number=00004 name=+DATA/ACME/DATAFILE/undotbs1.260.848598093
input datafile file number=00006 name=+DATA/ACME/DATAFILE/users.259.848598091
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:26
List of Datafiles
=================
File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
1    OK     0              17641        101128          2022436 
  File Name: +DATA/ACME/DATAFILE/system.258.848598015
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              66131         
  Index      0              13902         
  Other      0              3446           

File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
2    OK     0              34100        45760           1889464 
  File Name: +DATA/ACME/DATAFILE/example.266.848598231
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              6779           
  Index      0              1219           
  Other      0              3662           

File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
3    OK     0              26868        102408          2022495 
  File Name: +DATA/ACME/DATAFILE/sysaux.257.848597951
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              19341         
  Index      0              12752         
  Other      0              43439         

File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
4    OK     0              129          9600            2022495 
  File Name: +DATA/ACME/DATAFILE/undotbs1.260.848598093
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              0             
  Index      0              0             
  Other      0              9471           

File Status Marked Corrupt Empty Blocks Blocks Examined High SCN
---- ------ -------------- ------------ --------------- ----------
6    OK     0              17           643             1767683 
  File Name: +DATA/ACME/DATAFILE/users.259.848598091
  Block Type Blocks Failing Blocks Processed
  ---------- -------------- ----------------
  Data       0              33             
  Index      0              5             
  Other      0              585           

channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
including current control file in backup set
including current SPFILE in backup set
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
List of Control File and SPFILE
===============================
File Type    Status Blocks Failing Blocks Examined
------------ ------ -------------- ---------------
SPFILE       OK     0              2             
Control File OK     0              612           
Finished backup at 18-SEP-18

RMAN>


RMAN> restore validate database;

Starting restore at 18-SEP-18
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=592 device type=DISK

channel ORA_DISK_1: starting validation of datafile backup set
channel ORA_DISK_1: reading from backup piece +FRA/ACME/BACKUPSET/2018_09_18/nnndf0_tag20180918t183159_0.296.987186719
channel ORA_DISK_1: piece handle=+FRA/ACME/BACKUPSET/2018_09_18/nnndf0_tag20180918t183159_0.296.987186719 tag=TAG20180918T183159
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: validation complete, elapsed time: 00:01:05
Finished restore at 18-SEP-18

RMAN>



jueves, 13 de septiembre de 2018

dbms_tdb Tips FORMATO ENDIAN

conn sys@ora11g as sysdba

Connected to Oracle 11g Enterprise Edition Release 11.1.0.6.0
conn / as sysdba

select
   *
from
   v$db_transportable_platform;

PLATFORM_ID PLATFORM_NAME                       ENDIAN_FORMAT
----------- ----------------------------------- --------------
          7 Microsoft Windows IA (32-bit)       Little
         10 Linux IA (32-bit)                   Little
          5 HP Tru64 UNIX                       Little
         11 Linux IA (64-bit)                   Little
         15 HP Open VMS                         Little
          8 Microsoft Windows IA (64-bit)       Little
         13 Linux x86 64-bit                    Little
         12 Microsoft Windows x86 64-bit        Little
         17 Solaris Operating System (x86)      Little
         19 HP IA Open VMS                      Little
         20 Solaris Operating System (x86-64)   Little
         21 Apple Mac OS (x86-64)               Little

Now execute the check_db function to get the results:

--Execute the check_db function
set serveroutput on
declare
    v_db_is_ok boolean;
    v_db_is_ok_1 boolean := TRUE;
    begin
   v_db_is_ok := dbms_tdb.check_db(
                  target_platform_name => 'Solaris Operating System (x86-64)',
                  skip_option => dbms_tdb.skip_none);

   if  v_db_is_ok = v_db_is_ok_1 then
     dbms_output.put_line('Database Ready to be transported!' );
   else
     dbms_output.put_line('Database not Ready to be transported!' );
   end if;
 end;
/

Database is not open in read-only mode. Open the database in read-only mode and retry.
Database not ready to be transported!


Next, execute the check_external function in order to list external objects that may exist.

--Execute the check_external function
set serveroutput on
declare
v_ext_exists boolean;
v_ext_exists_1 boolean;
begin
   v_ext_exists := dbms_tdb.check_external;
  if  v_ext_exists = v_ext_exists_1 then
    dbms_output.put_line('Database without external objects!' );           
  else
    dbms_output.put_line('Database have external objects!' );          
  end if;
  
end;
/

sábado, 8 de septiembre de 2018

UPTIME BASE DE DATOS ORACLE

select 
   'Hostname : ' || host_name
   ,'Instance Name : ' || instance_name
   ,'Started At : ' || to_char(startup_time,'DD-MON-YYYY HH24:MI:SS') stime
   ,'Uptime : ' || floor(sysdate - startup_time) || ' days(s) ' ||
   trunc( 24*((sysdate-startup_time) - 
   trunc(sysdate-startup_time))) || ' hour(s) ' ||
   mod(trunc(1440*((sysdate-startup_time) - 
   trunc(sysdate-startup_time))), 60) ||' minute(s) ' ||
   mod(trunc(86400*((sysdate-startup_time) - 
   trunc(sysdate-startup_time))), 60) ||' seconds' uptime
from 
   sys.v_$instance; 

jueves, 6 de septiembre de 2018

RESTORE UNTIL TIME - UNTIL SCN - SEQUENCE


Recovery Manager: Release 12.1.0.1.0 - Production on Thu Sep 6 21:24:48 2018

Copyright (c) 1982, 2013, Oracle and/or its affiliates.  All rights reserved.

connected to target database: ACME (DBID=2033062067, not open)

SET UNTIL SCN

RMAN> run
2> {
3> set until scn = 5352316;
4> restore database;
5> recover database;
6> }


RMAN> list incarnation;

using target database control file instead of recovery catalog

List of Database Incarnations
DB Key  Inc Key DB Name  DB ID            STATUS  Reset SCN  Reset Time
------- ------- -------- ---------------- --- ---------- ----------
1       1       ACME     2033062067       PARENT  1          2013-05-24:11:51:11
2       2       ACME     2033062067       PARENT  1720082    2014-05-26:17:42:12
3       3       ACME     2033062067       CURRENT 2285882    2018-09-06:21:30:30

UNTIL SEQUENCE

RMAN> run {
2> set until sequence=4;
3> restore database;
4> recover database;
5> }

RMAN>alter database open read only;

UNTIL TIME

export NLS_DATE_FORMAT="yyyy-mm-dd:hh24:mi:ss"

RMAN> shutdown immediate
RMAN> startup mount
RMAN> run
2> {
3> set until time="to_date('2020-12-04:19:07:32','yyyy-mm-dd:hh24:mi:ss')";
4> restore database;
5> recover database;
6> }

executing command: SET until clause

Starting restore at 04-DEC-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=21 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to /u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_hwjdb5xz_.dbf
channel ORA_DISK_1: restoring datafile 00002 to /u01/app/oracle/oradata/ORCL/datafile/o1_mf_example_hwjdb5y7_.dbf
channel ORA_DISK_1: restoring datafile 00003 to /u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_hwjdb5xv_.dbf
channel ORA_DISK_1: restoring datafile 00004 to /u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_9qwmf6kp_.dbf
channel ORA_DISK_1: restoring datafile 00005 to /u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_hwjdb5yc_.dbf
channel ORA_DISK_1: restoring datafile 00006 to /u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_9qwmf54t_.dbf
channel ORA_DISK_1: reading from backup piece /u01/app/oracle/fast_recovery_area/ORCL/backupset/2020_12_04/o1_mf_nnndf_TAG20201204T190331_hwomlo34_.bkp
channel ORA_DISK_1: piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2020_12_04/o1_mf_nnndf_TAG20201204T190331_hwomlo34_.bkp tag=TAG20201204T190331
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:55
Finished restore at 04-DEC-20

Starting recover at 04-DEC-20
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 265 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2020_12_04/o1_mf_1_265_hwomnodw_.arc
archived log for thread 1 with sequence 266 is already on disk as file /u01/app/oracle/fast_recovery_area/ORCL/archivelog/2020_12_04/o1_mf_1_266_hwomys3o_.arc
archived log file name=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2020_12_04/o1_mf_1_265_hwomnodw_.arc thread=1 sequence=265
archived log file name=/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2020_12_04/o1_mf_1_266_hwomys3o_.arc thread=1 sequence=266
media recovery complete, elapsed time: 00:00:00
Finished recover at 04-DEC-20

RMAN> alter database open resetlogs;

Statement processed

RMAN> exit