Few days back, an error was reported in the alert log which was due to no privileges on tablespace for auto execution of job as shown below.
ORA-12012: error on auto execute of job "ORAHOW"."DB_GROWTH_JOB"
ORA-01950: no privileges on tablespace 'ORA_DATA'
ORA-06512: at "ORAHOW.PROC_DB_GROWTH_INFO", line 4
After looking into it we found that user doesn't have privileges to allocate an extent in the specified tablespace. So using the below query we get the object type and the status of the object.
Now we will check the user default tablespace on which we need to give privileges.
As you can see that user ORAHOW is using default tablespace ORA_DATA, but we also need to check the amount of space allocated for that user on that tablespace using the below query.
Using the above query we can see that this user doesn't have access to this tablespace, so we will assign unlimited quota on this tablespace for this user.
Now will verify the above changes using the following query.
Finally, after assigning privileges on tablespace to the user we will execute the job.
ORA-12012: error on auto execute of job "ORAHOW"."DB_GROWTH_JOB"
ORA-01950: no privileges on tablespace 'ORA_DATA'
ORA-06512: at "ORAHOW.PROC_DB_GROWTH_INFO", line 4
After looking into it we found that user doesn't have privileges to allocate an extent in the specified tablespace. So using the below query we get the object type and the status of the object.
SQL> select owner,object_name,object_type,status from dba_objects where object_name='DB_GROWTH_JOB'; OWNER OBJECT_NAM OBJECT_TYPE STATUS -------- ---------- ------------------------------------ ORAHOW DB_GROWTH_ JOB JOB VALID
Now we will check the user default tablespace on which we need to give privileges.
SQL> select USERNAME, DEFAULT_TABLESPACE from dba_users where USERNAME='ORAHOW'; USERNAME DEFAULT_TABLESPACE ----------------------------------------------- ORAHOW ORA_DATA
As you can see that user ORAHOW is using default tablespace ORA_DATA, but we also need to check the amount of space allocated for that user on that tablespace using the below query.
SQL> select TABLESPACE_NAME,USERNAME,MAX_BYTES,BYTES from dba_ts_quotas where USERNAME='ORAHOW'; no rows selected
Using the above query we can see that this user doesn't have access to this tablespace, so we will assign unlimited quota on this tablespace for this user.
SQL> alter user ORAHOW DEFAULT TABLESPACE ORA_DATA quota unlimited on ORA_DATA; User altered.If you want you can assign limited quota to that user.
ALTER USER <username> QUOTA 100M ON <tablespace name> GRANT UNLIMITED TABLESPACE TO <username>
Now will verify the above changes using the following query.
SQL> select TABLESPACE_NAME,USERNAME,MAX_BYTES,BYTES from dba_ts_quotas where USERNAME='ORAHOW'; TABLESPACE_NAME USERNAME BYTES MAX_BYTES --------------------------------------------------------------- ORA_DATA ORAHOW 786432 -1
Finally, after assigning privileges on tablespace to the user we will execute the job.
SQL> exec DBREPORT.PROC_DB_GROWTH_INFO PL/SQL procedure successfully completed.
No comments:
Post a Comment