Wednesday, June 10, 2020

How to check DML operations oracle


check dml operations oracle



SQL> exec dbms_stats.gather_table_stats(ownname=>'TEST',tabname=>'TEST_1')

PL/SQL procedure successfully completed.

SQL> exec DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO;

SQL>
SQL>
SQL> select table_name,inserts,updates,deletes,truncated,timestamp from sys.dba_tab_modifications where table_owner='TEST' and table_name= 'TEST_1'
  2  ;

no rows selected

SQL>
SQL> insert  into test.test_1 select * from dba_objects;

73824 rows created.

SQL> /

73824 rows created.

SQL> commit;

Commit complete.

SQL> select table_name,inserts,updates,deletes,truncated,timestamp from sys.dba_tab_modifications where table_owner='TEST' and table_name= 'TEST_1';

TABLE_NAME                        INSERTS    UPDATES    DELETES TRU TIMESTAMP
------------------------------ ---------- ---------- ---------- --- ---------
TEST_1                             147648          0          0 NO

SQL>

Query to list Unindexed Foreign Keys



Query to get Unindexed Foreign Keys 


undefine schema_owner
set pagesize 5000
set linesize 350
column status format a10
column table_name format a30
column fk_name format a30
column fk_columns format a30
column index_name format a30
column index_columns format a30


select
      case
        when i.index_name is not null then
          'indexed'
        else
          'unindexed'
       end                  as status
      ,c.table_name         as table_name
      ,c.constraint_name    as fk_name
      ,c.fk_columns         as fk_columns
      ,i.index_name         as index_name
      ,i.index_columns      as index_columns
from
    (
      select  a.table_name
             ,a.constraint_name
             ,listagg(b.column_name, ' ' )
              within group (order by column_name) as fk_columns
      from
              dba_constraints a
             ,dba_cons_columns b
      where
              a.constraint_name = b.constraint_name
      and     a.constraint_type = 'R'
      and     a.owner           = b.owner
      and     a.owner           = '&&schema_owner'
      group by
              a.table_name
             ,a.constraint_name
    ) c
left outer join
  (
    select  table_name
           ,index_name
           ,cr
           ,listagg(column_name, ' ')
            within group (order by column_name) as index_columns
    from
        (
          select
                  table_name
                 ,index_name
                 ,column_position
                 ,column_name
                 ,connect_by_root(column_name) cr
          from
                  dba_ind_columns
          where
                  index_owner               = '&&schema_owner'
          connect
                 by prior column_position-1 = column_position
                 and prior index_name       = index_name
         )
    group by table_name
            ,index_name, cr
  ) i
      on c.fk_columns = i.index_columns
     and c.table_name = i.table_name;





SQL> undefine schema_owner
set pagesize 5000
set linesize 350
column status format a10
column table_name format a30
column fk_name format a30
SQL> SQL> SQL> SQL> SQL> SQL> column fk_columns format a30
column index_name format a30
column index_columns format a30


select
SQL> SQL> SQL> SQL> SQL>   2        case
        when i.index_name is not null then
          'indexed'
        else
          'unindexed'
       end                  as status
  3    4    5    6    7    8        ,c.table_name         as table_name
      ,c.constraint_name    as fk_name
      ,c.fk_columns         as fk_columns
      ,i.index_name         as index_name
      ,i.index_columns      as index_columns
  9   10   11   12   13  from
    (
      select  a.table_name
             ,a.constraint_name
             ,listagg(b.column_name, ' ' )
 14   15   16   17   18                within group (order by column_name) as fk_columns
      from
              dba_constraints a
 19   20   21               ,dba_cons_columns b
      where
              a.constraint_name = b.constraint_name
      and     a.constraint_type = 'R'
 22   23   24   25        and     a.owner           = b.owner
      and     a.owner           = '&&schema_owner'
 26   27        group by
 28                a.table_name
             ,a.constraint_name
    ) c
 29   30   31  left outer join
  (
    select  table_name
           ,index_name
           ,cr
 32   33   34   35   36             ,listagg(column_name, ' ')
            within group (order by column_name) as index_columns
    from
 37   38   39          (
 40            select
                  table_name
                 ,index_name
                 ,column_position
                 ,column_name
                 ,connect_by_root(column_name) cr
          from
 41   42   43   44   45   46   47                    dba_ind_columns
          where
                  index_owner               = '&&schema_owner'
          connect
                 by prior column_position-1 = column_position
                 and prior index_name       = index_name
 48           )
    group by table_name
            ,index_name, cr
 49   50   51   52   53   54   55   56    ) i
      on c.fk_columns = i.index_columns
     and c.table_name = i.table_name; 57   58
Enter value for schema_owner: HR
old  26:       and     a.owner           = '&&schema_owner'
new  26:       and     a.owner           = 'HR'
old  49:                   index_owner               = '&&schema_owner'
new  49:                   index_owner               = 'HR'

STATUS     TABLE_NAME                     FK_NAME                        FK_COLUMNS                     INDEX_NAME                     IN                       DEX_COLUMNS
---------- ------------------------------ ---------------  ------- ------------------------------ ----------------       ---------------        --------------                    
indexed    EMPLOYEES                      EMP_JOB_FK                     JOB_ID                         EMP_JOB_IX                     JO                       B_ID
indexed    EMPLOYEES                      EMP_MANAGER_FK                 MANAGER_ID                     EMP_MANAGER_IX                 MA                       NAGER_ID
indexed    EMPLOYEES                      EMP_DEPT_FK                    DEPARTMENT_ID                  EMP_DEPARTMENT_IX              DE                       PARTMENT_ID
indexed    LOCATIONS                      LOC_C_ID_FK                    COUNTRY_ID                     LOC_COUNTRY_IX                 CO                       UNTRY_ID
indexed    DEPARTMENTS                    DEPT_LOC_FK                    LOCATION_ID                    DEPT_LOCATION_IX               LO                       CATION_ID
indexed    JOB_HISTORY                    JHIST_JOB_FK                   JOB_ID                         JHIST_JOB_IX                   JO                       B_ID
indexed    JOB_HISTORY                    JHIST_EMP_FK                   EMPLOYEE_ID                    JHIST_EMPLOYEE_IX              EM                       PLOYEE_ID
indexed    JOB_HISTORY                    JHIST_DEPT_FK                  DEPARTMENT_ID                  JHIST_DEPARTMENT_IX            DE                       PARTMENT_ID
indexed    JOB_HISTORY                    JHIST_EMP_FK                   EMPLOYEE_ID                    JHIST_EMP_ID_ST_DATE_PK        EM                       PLOYEE_ID
unindexed  DEPARTMENTS                    DEPT_MGR_FK                    MANAGER_ID
unindexed  COUNTRIES                      COUNTR_REG_FK                  REGION_ID

11 rows selected.

SQL>

Tuesday, June 9, 2020

Import data in AWS Oracle RDS using datapump API




Import data in AWS Oracle RDS




copy dumpfile to s3 

[oracle@anurag dpdump]$
[oracle@anurag dpdump]$ pwd
/u01/oracle/admin/india/dpdump
[oracle@anurag dpdump]$
[oracle@anurag dpdump]$ aws s3 cp /u01/oracle/admin/india/dpdump/EXPDAT01-13_50_36.DMP s3://demodatapump
upload: ./EXPDAT01-13_50_36.DMP to s3://demodatapump/EXPDAT01-13_50_36.DMP
[oracle@anurag dpdump]$



download dumpfile from S3 to RDS instance


SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
p_bucket_name    =>  'demodatapump',  
p_directory_name =>  'DATA_PUMP_DIR')
AS TASK_ID FROM DUAL ;

1591366708566-339

check progress using log

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1591366708566-339.log'));



SQL> SELECT rdsadmin.rdsadmin_s3_tasks.download_from_s3(
p_bucket_name    =>  'demodatapump',
p_directory_name =>  'DATA_PUMP_DIR')
AS TASK_ID FROM DUAL ;  2    3    4

TASK_ID
--------------------------------------------------------------------------------
1591366708566-339

SQL>
SQL> SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','dbtask-1591366708566-339.log'));

TEXT
--------------------------------------------------------------------------------
2020-06-05 14:18:30.436 UTC [INFO ] This task is about to list the Amazon S3 obj
ects for AWS Region us-west-1, bucket name demodatapump, and prefix .

2020-06-05 14:18:30.519 UTC [INFO ] The task successfully listed the Amazon S3 o
bjects for AWS Region us-west-1, bucket name demodatapump, and prefix .

2020-06-05 14:18:30.536 UTC [INFO ] This task is about to download the Amazon S3
 object or objects in /rdsdbdata/datapump from bucket name demodatapump and key
EXPDAT01-13_50_36.DMP.

2020-06-05 14:18:30.745 UTC [INFO ] The task successfully downloaded the Amazon

TEXT
--------------------------------------------------------------------------------
S3 object or objects from bucket name demodatapump with key EXPDAT01-13_50_36.DM
P to the location /rdsdbdata/datapump.

2020-06-05 14:18:30.745 UTC [INFO ] The task finished successfully.

SQL>


check list of directory 

SQL> select * from table(RDSADMIN.RDS_FILE_UTIL.LISTDIR('DATA_PUMP_DIR')) order by mtime;

FILENAME                       TYPE         FILESIZE MTIME
------------------------------ ---------- ---------- ---------
sample_copied.dmp              file           352256 29-MAY-20
sample_imp.log                 file              835 29-MAY-20
test_schema.dmp                file           352256 29-MAY-20
datapump/                      directory        4096 05-JUN-20
EXPDAT01-13_50_36.DMP          file           724992 05-JUN-20

SQL>


import  HR schema


DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'EXPDAT01-13_50_36.DMP', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'impdp_hr_schema.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file);
DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''HR'')');
DBMS_DATAPUMP.START_JOB(hdnl);
END;
/




SQL> DECLARE
hdnl NUMBER;
BEGIN
hdnl := DBMS_DATAPUMP.OPEN( operation => 'IMPORT', job_mode => 'SCHEMA', job_name=>null);
  2    3    4    5  DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'EXPDAT01-13_50_36.DMP', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_dump_file);
DBMS_DATAPUMP.ADD_FILE( handle => hdnl, filename => 'impdp_hr_schema.log', directory => 'DATA_P  6  UMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file);
DBMS_DATAPUMP.METADATA_FILTER(hdnl,'SCHEMA_EXPR','IN (''HR'')');
DBMS_DATAPUMP.START_JOB(hdnl);
END;
/  7    8    9   10

PL/SQL procedure successfully completed.

SQL>
SQL>



check import log 


SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('DATA_PUMP_DIR','impdp_hr_schema.log'))


SQL> SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('DATA_PUMP_DIR','impdp_hr_schema.log'));

TEXT
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Master table "ADMIN"."SYS_IMPORT_SCHEMA_01" successfully loaded/unloaded
Starting "ADMIN"."SYS_IMPORT_SCHEMA_01":
Processing object type SCHEMA_EXPORT/USER
Processing object type SCHEMA_EXPORT/SYSTEM_GRANT
Processing object type SCHEMA_EXPORT/ROLE_GRANT
Processing object type SCHEMA_EXPORT/DEFAULT_ROLE
Processing object type SCHEMA_EXPORT/TABLESPACE_QUOTA
Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE
Processing object type SCHEMA_EXPORT/TABLE/TABLE
Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA
. . imported "HR"."EMPLOYEES"                            17.08 KB     107 rows
. . imported "HR"."LOCATIONS"                            8.437 KB      23 rows
. . imported "HR"."JOB_HISTORY"                          7.195 KB      10 rows
. . imported "HR"."JOBS"                                 7.109 KB      19 rows
. . imported "HR"."DEPARTMENTS"                          7.125 KB      27 rows
. . imported "HR"."COUNTRIES"                            6.367 KB      25 rows
. . imported "HR"."REGIONS"                              5.546 KB       4 rows
Processing object type SCHEMA_EXPORT/TABLE/COMMENT
Processing object type SCHEMA_EXPORT/PROCEDURE/PROCEDURE
Processing object type SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
Processing object type SCHEMA_EXPORT/VIEW/VIEW
Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
Processing object type SCHEMA_EXPORT/TABLE/TRIGGER
Processing object type SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type SCHEMA_EXPORT/STATISTICS/MARKER
Job "ADMIN"."SYS_IMPORT_SCHEMA_01" successfully completed at Fri Jun 5 14:22:36 2020 elapsed 0 00:00:19

30 rows selected.

SQL>

validate schema after import done
SQL> select owner,object_name ,object_type ,status from dba_objects where owner='HR';

OWNER                OBJECT_NAME                              OBJECT_TYPE             STATUS
-------------------- ---------------------------------------- ----------------------- ----------
HR                   DEPARTMENTS_SEQ                          SEQUENCE                VALID
HR                   EMPLOYEES_SEQ                            SEQUENCE                VALID
HR                   LOCATIONS_SEQ                            SEQUENCE                VALID
HR                   COUNTRIES                                TABLE                   VALID
HR                   COUNTRY_C_ID_PK                          INDEX                   VALID
HR                   DEPARTMENTS                              TABLE                   VALID
HR                   EMPLOYEES                                TABLE                   VALID
HR                   LOCATIONS                                TABLE                   VALID
HR                   REGIONS                                  TABLE                   VALID
HR                   JOBS                                     TABLE                   VALID
HR                   JOB_HISTORY                              TABLE                   VALID
HR                   SECURE_DML                               PROCEDURE               VALID
HR                   ADD_JOB_HISTORY                          PROCEDURE               VALID
HR                   EMP_DETAILS_VIEW                         VIEW                    VALID
HR                   DEPT_LOCATION_IX                         INDEX                   VALID
HR                   DEPT_ID_PK                               INDEX                   VALID
HR                   EMP_JOB_IX                               INDEX                   VALID
HR                   EMP_DEPARTMENT_IX                        INDEX                   VALID
HR                   EMP_MANAGER_IX                           INDEX                   VALID
HR                   EMP_EMP_ID_PK                            INDEX                   VALID
HR                   EMP_NAME_IX                              INDEX                   VALID
HR                   LOC_ID_PK                                INDEX                   VALID
HR                   LOC_COUNTRY_IX                           INDEX                   VALID
HR                   LOC_STATE_PROVINCE_IX                    INDEX                   VALID
HR                   LOC_CITY_IX                              INDEX                   VALID
HR                   REG_ID_PK                                INDEX                   VALID
HR                   JOB_ID_PK                                INDEX                   VALID
HR                   JHIST_EMP_ID_ST_DATE_PK                  INDEX                   VALID
HR                   JHIST_EMPLOYEE_IX                        INDEX                   VALID
HR                   JHIST_DEPARTMENT_IX                      INDEX                   VALID
HR                   JHIST_JOB_IX                             INDEX                   VALID
HR                   EMP_EMAIL_UK                             INDEX                   VALID
HR                   SECURE_EMPLOYEES                         TRIGGER                 VALID
HR                   UPDATE_JOB_HISTORY                       TRIGGER                 VALID

34 rows selected.


upload in S3

SELECT rdsadmin.rdsadmin_s3_tasks.upload_to_s3(
      p_bucket_name    =>  'demodatapump',       
      p_directory_name =>  'DATA_PUMP_DIR') 
   AS TASK_ID FROM DUAL;
   

check alert log in RDS

SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','alert_ORCL.log'));

Friday, June 5, 2020

How to install AWC CLI on Linux

Install  AWC CLI on Linux 


[root@anurag ~]#
[root@anurag ~]#
[root@anurag ~]# curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 31.4M  100 31.4M    0     0  71.7M      0 --:--:-- --:--:-- --:--:-- 71.7M
[root@anurag ~]# ls -lrt
total 33960
-rw-------. 1 root root     7325 Jun 18  2019 original-ks.cfg
-rw-------. 1 root root     7539 Jun 18  2019 anaconda-ks.cfg
-rw-r--r--  1 root root  1807342 Apr 14 11:16 get-pip.py
-rw-r--r--  1 root root 32945325 Jun  5 13:55 awscliv2.zip
[root@anurag ~]#
[root@anurag ~]# unzip awscliv2.zip
Archive:  awscliv2.zip
   creating: aws/
   creating: aws/dist/
  inflating: aws/THIRD_PARTY_LICENSES
  inflating: aws/install
  inflating: aws/README.md
   creating: aws/dist/_struct/
...............................
...............................
................................

  inflating: aws/dist/cryptography-2.8-py3.7.egg-info/top_level.txt
  inflating: aws/dist/cryptography-2.8-py3.7.egg-info/METADATA
  inflating: aws/dist/cryptography-2.8-py3.7.egg-info/LICENSE.APACHE
  inflating: aws/dist/cryptography-2.8-py3.7.egg-info/INSTALLER
  inflating: aws/dist/cryptography-2.8-py3.7.egg-info/WHEEL
[root@anurag ~]#
[root@anurag ~]#
[root@anurag ~]#
[root@anurag ~]# ls -lrt
total 33960
-rw-------. 1 root root     7325 Jun 18  2019 original-ks.cfg
-rw-------. 1 root root     7539 Jun 18  2019 anaconda-ks.cfg
-rw-r--r--  1 root root  1807342 Apr 14 11:16 get-pip.py
drwxr-xr-x  3 root root       78 Jun  4 22:49 aws
-rw-r--r--  1 root root 32945325 Jun  5 13:55 awscliv2.zip
[root@anurag ~]#
[root@anurag ~]#
[root@anurag ~]# ./aws/install
You can now run: /usr/local/bin/aws --version
[root@anurag ~]#
[root@anurag ~]#
[root@anurag ~]#
[root@anurag ~]# which aws
/usr/local/bin/aws
[root@anurag ~]#
[root@anurag ~]#


[root@anurag ~]# aws --version
aws-cli/2.0.19 Python/3.7.3 Linux/4.18.0-80.4.2.el8_0.x86_64 botocore/2.0.0dev23
[root@anurag ~]#


https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-linux.html