Just a note on DBA_JOBS so I don't forget - pain when looking for DBA_JOBS in google and all you get is actual oracle jobs.
To show broken jobs.
1* select JOB,BROKEN,FAILURES,SCHEMA_USER,LAST_DATE,LAST_SEC,INTERVAL from DBA_JOBS e.g. job 11 has failed 121 times.
SQL> /
JOB B FAILURES SCHEMA_USE LAST_DATE LAST_SEC INTERVAL
---------- - ---------- ---------- --------- -------------------------------- --------------------------------------------------
9 N 0 EDW 31-OCT-18 05:00:10 TRUNC(SYSDATE+1) + 5/24
10 N 0 DW_MAIN 31-OCT-18 23:42:39 SYSDATE + 5/1440
8 N 0 EDW 31-OCT-18 04:00:29 TRUNC(SYSDATE+1) + 4/24
11 N 121 DW_MAIN 31-OCT-18 09:34:24 SYSDATE + 5/1440
850 N DW_MAIN NEXT_RUN_TIME ('Update Card Statuses')
Read only users
See also - https://stackoverflow.com/questions/7502438/oracle-how-to-create-a-readonly-user
[oracle@collabn1 ~]$ cat read_only.sh
export ORACLE_SID=emrep
sqlplus -silent /nolog<<EOF
connect / as sysdba
set pagesize 0 linesize 32767 trimspool on echo off feedback on termout off colsep "" verify off
set serveroutput on size unlimited
alter session set nls_date_format='dd-Mon-yyyy hh24:mi:ss';
DECLARE
sql_text varchar2(200) := '';
exist_count number := 0;
BEGIN
for usr in (select username from all_users where username = 'RUSSELL') loop
select count (*) into exist_count from dba_roles where role = usr.username || '_READONLY';
if exist_count = 0 then
sql_text := 'create role ' || usr.username || '_READONLY NOT IDENTIFIED';
execute immediate sql_text;
dbms_output.put_line(sql_text);
for obj in (select object_name from all_objects where owner = usr.username and object_type in ('TABLE','VIEW')) loop
sql_text := 'grant select on ' || usr.username || '.' || obj.object_name || ' to ' || usr.username || '_READONLY';
BEGIN
execute immediate sql_text;
EXCEPTION
WHEN OTHERS then null;
END;
end loop;
end if;
end loop;
END;
/
exit
EOF
SQL> l
1* select * from dba_tab_privs where grantee = 'RUSSELL_READONLY'
1* select * from dba_tab_privs where grantee = 'RUSSELL_READONLY'
SQL> /
GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE GRA HIE COM TYPE INHERITED
------------------------------ --------------- -------------- ------------------------------ --------------- --- --- --- ----- ----------
RUSSELL_READONLY RUSSELL TEST RUSSELL SELECT NO NO NO TABLE NO
------------------------------ --------------- -------------- ------------------------------ --------------- --- --- --- ----- ----------
RUSSELL_READONLY RUSSELL TEST RUSSELL SELECT NO NO NO TABLE NO
SQL> l
1* select * from dba_role_privs where grantee = 'IAN'
1* select * from dba_role_privs where grantee = 'IAN'
SQL> /
GRANTEE GRANTED_ROLE ADM DEL DEF COM INHERITED
------------------------------ -------------------- --- --- --- --- ----------
IAN RUSSELL_READONLY NO NO YES NO NO
------------------------------ -------------------- --- --- --- --- ----------
IAN RUSSELL_READONLY NO NO YES NO NO
1* select a.grantee, a.granted_role, b.owner, b.privilege from dba_role_privs a, dba_tab_privs b where a.granted_role = b.grantee and a.granted_role = 'RUSSELL_READONLY'
SQL> /
GRANTEE GRANTED_ROLE OWNER PRIVILEGE
------------------------------ -------------------- --------------- ---------------
IAN RUSSELL_READONLY RUSSELL SELECT
SYS RUSSELL_READONLY RUSSELL SELECT
------------------------------ -------------------- --------------- ---------------
IAN RUSSELL_READONLY RUSSELL SELECT
SYS RUSSELL_READONLY RUSSELL SELECT
#!/bin/bash
create_ro()
{
#use the -s to suppress output, to spool to file use <<EOF >> output.txt
sqlplus -s system/………….@...........scan:1521/.....SVC <<EOF
set serveroutput on;
set verify off;
set echo off;
set pagesize 0;
set head off;
DECLARE
v VARCHAR2(150);
w VARCHAR2(150);
CURSOR c is select 'grant select on $FROMUSR.'||table_name|| ' to $TOUSR;' from dba_tables where owner='$FROMUSR';
CURSOR d is select 'grant select on $FROMUSR.'||view_name|| ' to $TOUSR;' from dba_views where owner='$FROMUSR';
BEGIN
OPEN c;
LOOP
FETCH c into v;
EXIT WHEN c%NOTFOUND;
dbms_output.put_line(v);
END LOOP;
CLOSE c;
OPEN d;
LOOP
FETCH d into w;
EXIT WHEN d%NOTFOUND;
dbms_output.put_line(w);
END LOOP;
CLOSE d;
END;
/
EOF
}
# Main processing
[ $# -eq 0 ] && { echo "Usage: supply the 2 users to clone from / to"; exit 1; }
FROMUSR=$1; export FROMUSR
TOUSR=$2; export TOUSR
echo " "
echo "Run output against " $2
echo "----------------------------------"
create_ro
exit
Identify ASM disk to physical disk
Identify ASM disk on ASM instance :
SQL>
select g.name disk_group
,d.DISK_NUMBER
,d.name disk_name
,d.PATH
,d.TOTAL_MB
,d.header_status
from v$asm_disk d,
v$asm_diskgroup g
where d.GROUP_NUMBER = g.GROUP_NUMBER (+)
order by g.name, d.disk_numberSQL> 2 3 4 5 6 7 8 9 10
11 /
select g.name disk_group
,d.DISK_NUMBER
,d.name disk_name
,d.PATH
,d.TOTAL_MB
,d.header_status
from v$asm_disk d,
v$asm_diskgroup g
where d.GROUP_NUMBER = g.GROUP_NUMBER (+)
order by g.name, d.disk_numberSQL> 2 3 4 5 6 7 8 9 10
11 /
DISK_GROUP DISK_NUMBER DISK_NAME
------------------------------ ----------- ------------------------------
PATH
--------------------------------------------------------------------------------
TOTAL_MB HEADER_STATU
---------- ------------
DATA 0 DATA_0000
/dev/oracleasm/disks/NYCOEMDATA00
306176 MEMBER
------------------------------ ----------- ------------------------------
PATH
--------------------------------------------------------------------------------
TOTAL_MB HEADER_STATU
---------- ------------
DATA 0 DATA_0000
/dev/oracleasm/disks/NYCOEMDATA00
306176 MEMBER
[oracle@oem01
etc]$ cd /dev/oracleasm
[oracle@oem01
oracleasm]$ cd disks
[oracle@oem01
disks]$ ls
OEMDATA00
[oracle@oem01
disks]$ ls -la
total 0
drwxr-xr-x. 1
root root 0 May 29 15:04 .
drwxr-xr-x. 4
root root 0 May 29 15:04 ..
brw-------. 1
oracle oinstall 8, 49 Sep 28 09:06 OEMDATA00
[oracle@oem01
disks]$ oracleasm listdisks
OEMDATA00
[oracle@oem01
disks]$ oracleasm querydisk -d OEMDATA00
Disk
"OEMDATA00" is a valid ASM disk on device [8,49]
[oracle@oem01
disks]$ ls -l /dev/* | grep 8, | grep 49
brw-rw----. 1
root disk 8, 49 May 29 15:41 /dev/sdd1
From fdisk -l command :
Disk /dev/sdd: 322.1 GB, 322122547200 bytes, 629145600 sectors
Subscribe to:
Posts (Atom)