10g/11g
VIEWS WE QUERY IN
DATABASE
1} V$CONTROLFILE > Lists the
names and status of the control
files.
2}
V$DATABASE > Contains database information
from the control files.
3}
V$DATAFILE >Contains data file information from control file.
4}
V$INSTANCE >Displays the state of the current
instance.
5} V$PARAMETER > Lists parameters and values
currently in effect for
the
Session also status and location of all parameters.
6}
V$SESSION
>Lists session information for
each current session.
7}
V$SGA
>Contains summary information on
SGA.
8} V$SPPARAMETER > Lists the contents of SPFILE.
9} V$TABLESPACE > Displays tablespace
information from the control file.
10}
V$THREAD >Contains thread information
from control file.
11}
V$VERSION > Version numbers of core library components in oracle
server.
12} V$FIXED_TABLE >To find list of data dictionary views.
13}
V$CONTROLFILE_RECORD_SECTION > Provides information about the Control file
record section.
14}SHOW PARAMETER CONTROL_FILES
> Lists the name, status and
location of Control files.
15}V$THREAD >To
display the current redo log
group, the no. of online redo log groups and current sequence number.
16} V$LOGFILE >Displays each redo log
group, member and status of each Member.
17}
V$LOG
> Same as above.
18} V$DATABASE_PROPERTIES >Name of default tablespaces.
19}V$DBA_TABLESPACES >Complete information about
tablespaces.
20}V$DBA_DATA_FILES >Complete information of the
files present in the
Tablespaces.
21} V$DBA_TEMP_FILES >File’s information of temporary
tablespace.
22}
V$DBA_EXTENTS >To check the extents for a
given segment.
23} V$DBA_SEGMENTS >View to get number of
extents and blocks allocated
to a
Segment.
24} V$DBA_FREE_SPACE >Displays free extents in
tablespace.
25} V$DBA_ROLLBACK_SEGS >To obtain information about all
the undo segments In the
database.
{IMP*:-Information about undo
segments that are offline can be seen only in this view.}
26}V$ROLLSTAT &
V$ROLLNAME >Views
to obtain the statistics of the undo Segments currently used by the instance.
27} V$TRANSACTION &
V$SESSION >To check the use of a undo
segment by Currently active
transactions.
28}
V$DBA_TABLES à All the information about
tables can be obtained here.
29} V$DBA_OBJECTS >All the information about objects
in table can
be
Obtained here.
30} V$DBA_UNUSED_COL_TABS >To identify tables with unused columns.
31} V$DBA_PARTIAL_DROP_TABS >To identify tables that have
partially Completed DROP columns operations.
32}V$DBA_INDEXES
>Provides information on the indexes.
33}V$DBA_IND_COLUMNS >Provides information on the
columns indexed.
34}V$OBJECT
_USAGE >Provides information on the
usage of an index.
35}V$DBA_CONSTRAINTS >To obtain name, type and status
of all constraints.
36}V$DBA_CONS_COLUMNS >To obtain the columns in the
constraints on table.
37}V$DBA_USERS
>To obtain information about account status, default Tablespace for users.
38}V$DBA_PROPERTIES
>View to display passwd profile information.
39}V$DBA_TS_QUOTAS
>Amount of space a user can use
in tablespaces.
40}V$DBA_SYS_PRIVS
> Lists system privileges granted to users and roles.
41}
V$SESSION_PRIVS > Lists the privileges that are
currently available to user.
42}
V$DBA_TAB_PRIVS > Lists all grants on all objects in the database.
43}V$DBA_COL_PRIVS
>Describes all object grants in
the database.
44}V$DBA_ROLES
>All roles that exist in the
database.
45}V$DBA_ROLES_PRIVS >Roles granted to users and
roles.
46}V$ROLE_ROL_PRIVS
> Roles that are granted to
roles.
47}V$DBA_SYS_PRIVS
>System privileges granted to
users and roles.
48}V$ROLE_SYS_PRIVS
> System privileges granted to
roles.
49}V$ROLE_TAB_PRIVS >Object privileges granted to
roles.
50}V$SESSION_ROLES
>Roles that the user currently
has enabled.
creating a synonym
Database
links are notoriously slow, not an optimal solution for applications needing
real-time response.
Expect the database link to cause a delay in accessing the remote data.
Here is an example of creating a synonym for scott's database link.
SQL> create synonym rem_emp for emp@remotedb;
Synonym created.
SQL> select count(*) from rem_emp;
COUNT(*)
----------
14
The other method is to create a view on your remote database's data.
SQL> create view v_emp as select * from emp@remotedb;
View created.
SQL> select count(*) from v_emp;
COUNT(*)
----------
14
Expect the database link to cause a delay in accessing the remote data.
Here is an example of creating a synonym for scott's database link.
SQL> create synonym rem_emp for emp@remotedb;
Synonym created.
SQL> select count(*) from rem_emp;
COUNT(*)
----------
14
The other method is to create a view on your remote database's data.
SQL> create view v_emp as select * from emp@remotedb;
View created.
SQL> select count(*) from v_emp;
COUNT(*)
----------
14
How to drop a database link
Dropping a database link from your Oracle database is as easy as doing the following:
drop database link remotedb;
or
drop public database link remotedb;
You will need no other system privilege other than the 'create database link' privilege granted directly
to your username or granted via a role to drop your own database link.
It is not possible to drop a database link belonging to another user.
If you try to specify another schema's database link by qualifying it with a name,
Oracle will just look for a private database link in your schema with a name
which includes the other schema's name and will not find it.
To drop a public database link, you will need the system privilege 'drop public database link'.
For example:
SQL> connect / as sysdba
Connected.
SQL> drop database link scott.remotedb;
drop database link scott.remotedb
*
ERROR at line 1:
ORA-02024: database link not found
SQL> connect scott/tiger
Connected.
SQL> drop database link scott.remotedb;
drop database link scott.remotedb
*
ERROR at line 1:
ORA-02024: database link not found
SQL> drop database link remotedb;
Database link dropped.
how to create a db link
Once
a database link has been created
you are now ready to select your data from the remote database referenced by the db link.
The syntax is :
select from @;
For example:
SQL> select * from dept@remotedb;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
The database link is opened during the select (or other DML transaction) and remains open for the duration of the session.
After you close a session, the links that were active in the session are automatically closed.
Close a db link
To explicitly close the database link , use the command below:
SQL> alter session close database link remotedb;
Session altered.
Using db links in other DML statements
You can use insert/update/delete statements just as easily with database links
SQL> select * from dept@remotedb;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> insert into dept@remotedb (deptno,dname,loc)
2 values (50,'MARKETING','BOISE');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from dept@remotedb;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 MARKETING BOISE
SQL> update dept@remotedb set loc = 'LONDON'
where deptno = 50;
1 row updated.
SQL> commit;
Commit complete.
SQL> select * from dept@remotedb;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 MARKETING LONDON
SQL> delete from dept@remotedb
where dname = 'MARKETING';
1 row deleted.
SQL> commit;
Commit complete.
SQL> select * from dept@remotedb;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
Note that DDL operations are not allowed through a database link:
SQL> alter table dept@remotedb
add column (manager varchar2(30));
alter table dept@remotedb add column
(manager varchar2(30))
*
ERROR at line 1:
ORA-02021: DDL operations are not allowed
on a remote database
you are now ready to select your data from the remote database referenced by the db link.
The syntax is :
select
For example:
SQL> select * from dept@remotedb;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
The database link is opened during the select (or other DML transaction) and remains open for the duration of the session.
After you close a session, the links that were active in the session are automatically closed.
Close a db link
To explicitly close the database link , use the command below:
SQL> alter session close database link remotedb;
Session altered.
Using db links in other DML statements
You can use insert/update/delete statements just as easily with database links
SQL> select * from dept@remotedb;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> insert into dept@remotedb (deptno,dname,loc)
2 values (50,'MARKETING','BOISE');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from dept@remotedb;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 MARKETING BOISE
SQL> update dept@remotedb set loc = 'LONDON'
where deptno = 50;
1 row updated.
SQL> commit;
Commit complete.
SQL> select * from dept@remotedb;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
50 MARKETING LONDON
SQL> delete from dept@remotedb
where dname = 'MARKETING';
1 row deleted.
SQL> commit;
Commit complete.
SQL> select * from dept@remotedb;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
Note that DDL operations are not allowed through a database link:
SQL> alter table dept@remotedb
add column (manager varchar2(30));
alter table dept@remotedb add column
(manager varchar2(30))
*
ERROR at line 1:
ORA-02021: DDL operations are not allowed
on a remote database
******************************************************************************
Oracle Tablespace:-
create, add a file, remove a file, drop, rename
Tablespaces & Datafiles: Overview
Data for Oracle tables, indexes, etc is stored in data files, but never when an object is defined, the object is associated with a file directly. All the time the Oracle objects are “located” in the tablespaces. The “tablespaces” are logical concepts and each tablespace is in relation with one or more physical file. So, when an object is created in a tablespace, the data will be stored automatically in the file(s) associated with this tablespace. Tablespace creation
=> Data tablespace (created for data objects like tables, materialized view, indexes) CREATE TABLESPACE DATA_1_TBS
DATAFILE ‘C:\oradata\data_1.dbf’
SIZE 20M AUTOEXTEND ON;
This tablespace named DATA_1_TBS has allocated 20M space on the file data_1.dbf and the size of the file will increase if the tablespace will need more space on the disk.
Data for Oracle tables, indexes, etc is stored in data files, but never when an object is defined, the object is associated with a file directly. All the time the Oracle objects are “located” in the tablespaces. The “tablespaces” are logical concepts and each tablespace is in relation with one or more physical file. So, when an object is created in a tablespace, the data will be stored automatically in the file(s) associated with this tablespace. Tablespace creation
=> Data tablespace (created for data objects like tables, materialized view, indexes) CREATE TABLESPACE DATA_1_TBS
DATAFILE ‘C:\oradata\data_1.dbf’
SIZE 20M AUTOEXTEND ON;
This tablespace named DATA_1_TBS has allocated 20M space on the file data_1.dbf and the size of the file will increase if the tablespace will need more space on the disk.
=> Temporary tablespace (keep temporary data for sort, join operations)
CREATE TEMPORARY TABLESPACE temp_1
TEMPFILE ‘c:\temp01.dbf’ SIZE 5M AUTOEXTEND ON;
This tablespace named “temp_1″ has allocated 5M space on the file temp01.dbf and the size of the file will increase if the tablespace will need more space on the disk. However, in general, the temporary tablespaces are not set to be “autoextend off”, but have enough room for the database needs.
TEMPFILE ‘c:\temp01.dbf’ SIZE 5M AUTOEXTEND ON;
This tablespace named “temp_1″ has allocated 5M space on the file temp01.dbf and the size of the file will increase if the tablespace will need more space on the disk. However, in general, the temporary tablespaces are not set to be “autoextend off”, but have enough room for the database needs.
=> UNDO tablespace (keep
the old values for the transactions which are not commited)
CREATE UNDO
TABLESPACE undo1
DATAFILE ‘c:\oradata\undo1.dbf’ SIZE 10M AUTOEXTEND ON
RETENTION GUARANTEE;
If you use the “RETENTION GUARANTEE” clause Oracle guarantees that whatever retention period you have set will be honored.
DATAFILE ‘c:\oradata\undo1.dbf’ SIZE 10M AUTOEXTEND ON
RETENTION GUARANTEE;
If you use the “RETENTION GUARANTEE” clause Oracle guarantees that whatever retention period you have set will be honored.
NOTES:
§ EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K; –> creates a locally
managed tablespace in which every extent is
128K
§ EXTENT MANAGEMENT
LOCAL SEGMENT SPACE MANAGEMENT AUTO;
–> creates a tablespace with automatic segment-space
management (ASSM).
Add a file to the tablespace
ALTER
TABLESPACE DATA_1_TBS
ADD DATAFILE ‘c:\oradata\data_file2.dbf’ SIZE 30M AUTOEXTEND OFF;
ADD DATAFILE ‘c:\oradata\data_file2.dbf’ SIZE 30M AUTOEXTEND OFF;
To get more
information on the files which are associated with a tablespace the following
query could be used:
SELECT TABLESPACE_NAME, FILE_NAME, FILE_ID,
AUTOEXTENSIBLE, ONLINE_STATUS
FROM DBA_DATA_FILES ORDER BY 1;
Remove a file from a tablespace (Resizing a tablespace)
Removing a file from a tablespace cannot be done directly. First, the objects must be moved in another tablespace, the initial tablespace will be dropped and recreated. After that the objects could be moved again in the tablespace which was resized. If the reason you wanted to drop the file is because you mistakenly created the file of the wrong size, then consider using the RESIZE command.
FROM DBA_DATA_FILES ORDER BY 1;
Remove a file from a tablespace (Resizing a tablespace)
Removing a file from a tablespace cannot be done directly. First, the objects must be moved in another tablespace, the initial tablespace will be dropped and recreated. After that the objects could be moved again in the tablespace which was resized. If the reason you wanted to drop the file is because you mistakenly created the file of the wrong size, then consider using the RESIZE command.
Add more space to a tablespace without adding a new file
ALTER DATABASE DATAFILE ‘C:\oradata\data_1.dbf’ RESIZE 25M;
ALTER DATABASE DATAFILE ‘C:\oradata\data_1.dbf’ RESIZE 25M;
Dropping a tablespace
DROP TABLESPACE DATA_1_TBS; (if the tablespace is empty)
DROP TABLESPACE DATA_1_TBS INCLUDING CONTENTS; (if the objects in the tablespace are no longer needed)
However the files must be deleted from the OS level
DROP TABLESPACE DATA_1_TBS; (if the tablespace is empty)
DROP TABLESPACE DATA_1_TBS INCLUDING CONTENTS; (if the objects in the tablespace are no longer needed)
However the files must be deleted from the OS level
Rename a tablespace
(in 10g)
ALTER TABLESPACE DATA_1_TBS RENAME TO DATA_10_TBS;
(in 9i)
1. Create a new tablespace NEW_TBLS. 2. Copy all objects from OLD_TBLS to NEW_TBLS.
(in 10g)
ALTER TABLESPACE DATA_1_TBS RENAME TO DATA_10_TBS;
(in 9i)
1. Create a new tablespace NEW_TBLS. 2. Copy all objects from OLD_TBLS to NEW_TBLS.
3. Drop tablespace OLD_TBLS.
Moving the tablespace files
=> for Data files, Log files:
1) Shutdown the database.
2) Rename the physical file on the OS. ==> Win: SQL> HOST MOVE file1.dbf file2.dbf
3) Start the database in MOUNT mode.
ALTER DATABASE RENAME FILE ‘C:\OHOME_9I\ORADATA\DB9\REDO01.LOG’ TO ‘C:\ORACLE\data\REDO01.LOG’;
2) Rename the physical file on the OS. ==> Win: SQL> HOST MOVE file1.dbf file2.dbf
3) Start the database in MOUNT mode.
ALTER DATABASE RENAME FILE ‘C:\OHOME_9I\ORADATA\DB9\REDO01.LOG’ TO ‘C:\ORACLE\data\REDO01.LOG’;
ALTER
DATABASE RENAME FILE ‘C:\OHOME_9I\ORADATA\DB9\REDO02.LOG’ TO
‘C:\ORACLE\data\REDO02.LOG’;
ALTER
DATABASE RENAME FILE ‘C:\OHOME_9I\ORADATA\DB9\REDO03.LOG’ TO
‘C:\ORACLE\data\REDO03.LOG’;
ALTER
DATABASE OPEN;
=> for Control
File (SPFILE is used)
1) Alter control_files initialisation parameter in SPFILE
ALTER SYSTEM SET
control_files = ‘C:\NEW_PATH\RENAME_CONTROL01.CTL’,
‘C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\CONTROL02.CTL’,
‘C:\ORACLE\PRODUCT\10.1.0\ORADATA\DB10G\CONTROL03.CTL’
SCOPE = SPFILE;
2)
Shutdown the database.
3) Rename the physical Controle file on the OS. ==> Win: SQL> HOST MOVE file1.ctl file2.ctl
4) Start the database.
=> for TEMP files
3) Rename the physical Controle file on the OS. ==> Win: SQL> HOST MOVE file1.ctl file2.ctl
4) Start the database.
=> for TEMP files
1) CREATE TEMPORARY TABLESPACE
TEMP1 TEMPFILE ‘…\temp_temp1.dbf’ SIZE 2M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
2) ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP1;
3) DROP TABLESPACE TEMP INCLUDING CONTENTS; – TEMP = 1st temporary tablespace
4) CREATE TEMPORARY TABLESPACE TEMP TEMPFILE ‘…\temp01.dbf’ SIZE 2G
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100M;
5) ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;
6) DROP TABLESPACE TEMP1 INCLUDING CONTENTS;
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
2) ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP1;
3) DROP TABLESPACE TEMP INCLUDING CONTENTS; – TEMP = 1st temporary tablespace
4) CREATE TEMPORARY TABLESPACE TEMP TEMPFILE ‘…\temp01.dbf’ SIZE 2G
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 100M;
5) ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;
6) DROP TABLESPACE TEMP1 INCLUDING CONTENTS;
What a database job is?
All the time we need some PL/SQL scripts to run at a specific period of time regularly. This is done by scheduling the database jobs to run following some rules. A job define what we have to run, when and at which interval. When a job is created (submitted), the job is put in a queue. The queue is monitored by a coordinator job queue (CJQ0) background process. The coordinator (CJQ0) periodically selects jobs that are ready to run from the jobs shown in the DBA_JOBS view. The time interval the coordinator looks for new jobs to start is establish by JOB_QUEUE_INTERVAL initialization parameter. JOB_QUEUE_INTERVAL set to 60 means that the CJQ0 will look at every minutes to see if is any job scheduled to run at this time. When CJQ0 find a job which must start, CJQ0 spawns a Jnnn processes to run the selected jobs. Each Jnnn process executes one of the selected jobs. The number of jobs which can run simultaneously is fixed by JOB_QUEUE_PROCESSES initialization parameter. If the JOB_QUEUE_PROCESSES parameter is equal to 10, only 10 Jnnn processes could run simultaneously, so only 10 jobs could run in the same time.
If JOB_QUEUE_PROCESSES = 0 no jobs could be scheduled for that database.
All the time we need some PL/SQL scripts to run at a specific period of time regularly. This is done by scheduling the database jobs to run following some rules. A job define what we have to run, when and at which interval. When a job is created (submitted), the job is put in a queue. The queue is monitored by a coordinator job queue (CJQ0) background process. The coordinator (CJQ0) periodically selects jobs that are ready to run from the jobs shown in the DBA_JOBS view. The time interval the coordinator looks for new jobs to start is establish by JOB_QUEUE_INTERVAL initialization parameter. JOB_QUEUE_INTERVAL set to 60 means that the CJQ0 will look at every minutes to see if is any job scheduled to run at this time. When CJQ0 find a job which must start, CJQ0 spawns a Jnnn processes to run the selected jobs. Each Jnnn process executes one of the selected jobs. The number of jobs which can run simultaneously is fixed by JOB_QUEUE_PROCESSES initialization parameter. If the JOB_QUEUE_PROCESSES parameter is equal to 10, only 10 Jnnn processes could run simultaneously, so only 10 jobs could run in the same time.
If JOB_QUEUE_PROCESSES = 0 no jobs could be scheduled for that database.
How to create a job?
To create a job we have to use the DBMS_JOB.SUBMIT procedure.
To create a job we have to use the DBMS_JOB.SUBMIT procedure.
declare
vnu_job NUMBER;
begin
DBMS_JOB.SUBMIT (vnu_job,’scott.Procedure_A;’, sysdate,’sysdate+3/(24*60)’);
end;
vnu_job NUMBER;
begin
DBMS_JOB.SUBMIT (vnu_job,’scott.Procedure_A;’, sysdate,’sysdate+3/(24*60)’);
end;
In
this example, the procedure Procedure_A is scheduled to run at every 3 minutes
starting from “sysdate”.
How to run a job?
begin
DBMS_JOB.RUN(vnu_job);
end;
/
This PL/SQL block run the previous job at this moment.
begin
DBMS_JOB.RUN(vnu_job);
end;
/
This PL/SQL block run the previous job at this moment.
How to change the execution
time for a job?
begin
DBMS_JOB.INTERVAL(vnu_job, ‘NULL’);
end;
/
In this example, the job will not run again after it successfully executes and it will be deleted from the job queue.
begin
DBMS_JOB.INTERVAL(vnu_job, ‘NULL’);
end;
/
In this example, the job will not run again after it successfully executes and it will be deleted from the job queue.
How to remove a job from the
database ?
begin
DBMS_JOB.REMOVE(vnu_job);
end;
/
begin
DBMS_JOB.REMOVE(vnu_job);
end;
/
View the status of the running
jobs
select * from DBA_JOBS_RUNNING;
select * from DBA_JOBS_RUNNING;
View more information about the
database jobs
select * from DBA_JOBS;
select * from DBA_JOBS;
SQL> ALTER USER scott identified by scott;
How to enforce strict password
control?
By default, Oracle will allow users to choose single character passwords and passwords that match their names and userids. Also, by default the password will not expire. However, Oracle manage passwords through profiles. Some of the things that we can restrict:
FAILED_LOGIN_ATTEMPTS – failed login attempts before the account is locked
PASSWORD_LIFE_TIME – limits the number of days the same password can be used for authentication
PASSWORD_GRACE_TIME – number of days after the grace period begins during which a warning is issued and login is allowed
PASSWORD_LOCK_TIME – number of days an account will be locked after maximum failed login attempts
PASSWORD_REUSE_TIME – number of days before a password can be reused
PASSWORD_REUSE_MAX – number of password changes required before the current password can be reused
PASSWORD_VERIFY_FUNCTION – password complexity verification script
By default, Oracle will allow users to choose single character passwords and passwords that match their names and userids. Also, by default the password will not expire. However, Oracle manage passwords through profiles. Some of the things that we can restrict:
FAILED_LOGIN_ATTEMPTS – failed login attempts before the account is locked
PASSWORD_LIFE_TIME – limits the number of days the same password can be used for authentication
PASSWORD_GRACE_TIME – number of days after the grace period begins during which a warning is issued and login is allowed
PASSWORD_LOCK_TIME – number of days an account will be locked after maximum failed login attempts
PASSWORD_REUSE_TIME – number of days before a password can be reused
PASSWORD_REUSE_MAX – number of password changes required before the current password can be reused
PASSWORD_VERIFY_FUNCTION – password complexity verification script
Example:
Create the Profile
SQL> CREATE PROFILE profile_A LIMIT FAILED_LOGIN_ATTEMPTS 3;
Associate the profile with an user:
SQL> ALTER USER scott PROFILE profile_A;
Create the Profile
SQL> CREATE PROFILE profile_A LIMIT FAILED_LOGIN_ATTEMPTS 3;
Associate the profile with an user:
SQL> ALTER USER scott PROFILE profile_A;
How to connect as sys without
knowing his password?
If an administrative OS users belongs to the “dba” group on Unix or to the “ORA_DBA” (ORA_sid_DBA) group on NT, we can connect to oracle like this:
SQL> connect / as sysdba
SQL> show user
If an administrative OS users belongs to the “dba” group on Unix or to the “ORA_DBA” (ORA_sid_DBA) group on NT, we can connect to oracle like this:
SQL> connect / as sysdba
SQL> show user
We
can use show user command to verify that we are connected as SYS.
How to connect as a regular user without knowing his password
How to connect as a regular user without knowing his password
1)
Select the encrypted password value
SQL> SELECT password FROM dba_users WHERE username=’SCOTT’;
PASSWORD
————————–
D794344J35502S67
SQL> SELECT password FROM dba_users WHERE username=’SCOTT’;
PASSWORD
————————–
D794344J35502S67
2)
Change Scott’s password (temporarily)
SQL> ALTER USER scott identified by new_pass;
SQL> ALTER USER scott identified by new_pass;
3)
Connect using this new password
SQL> connect scott/new_pass;
SQL> connect scott/new_pass;
4)
Connect as SYS (or SYSTEM)
SQL> connect / as sysdba
SQL> connect / as sysdba
5)
re-enable the first Scott’s password
SQL> ALTER USER scott identified by values ‘D794344J35502S67′;
SQL> ALTER USER scott identified by values ‘D794344J35502S67′;
Allowing/ Removing
SELECT, DELETE, UPDATE, INSERT privileges on tables
SQL> GRANT select, update, delete, insert on SCOTT.EMP to sonu ;
SQL> REVOKE select, update, delete, insert on SCOTT.EMP FROM sonu ;
“ sonu ” could be a user (schema) or a role.
Allowing/ Removing EXECUTE privileges on procedures, functions, packages
grant EXECUTE on SCOTT.F1 to sonu ; ( sonu will be able to run (execute) scott.F1 function )
revoke EXECUTE on SCOTT.F1 from sonu ;
SQL> GRANT select, update, delete, insert on SCOTT.EMP to sonu ;
SQL> REVOKE select, update, delete, insert on SCOTT.EMP FROM sonu ;
“ sonu ” could be a user (schema) or a role.
Allowing/ Removing EXECUTE privileges on procedures, functions, packages
grant EXECUTE on SCOTT.F1 to sonu ; ( sonu will be able to run (execute) scott.F1 function )
revoke EXECUTE on SCOTT.F1 from sonu ;
Using Roles
Sometimes,
the same object, system privileges must be granted to many users. For this
purpose we can create a ROLE, grant all the privileges we want to this role and
after that we can grant the role to a user or many users.
1)
Create the role (named “ROLE1″ in this example)
SQL> CREATE ROLE role1;
SQL> CREATE ROLE role1;
2)
Grant privileges to this role
SQL> GRANT select, update, delete, insert on SCOTT.EMP to ROLE1;
grant EXECUTE on SCOTT.F1 to ROLE1;
SQL> GRANT select, update, delete, insert on SCOTT.EMP to ROLE1;
grant EXECUTE on SCOTT.F1 to ROLE1;
3)
Grant the Role to an user
SQL> GRANT role1 TO sonu;
SQL> GRANT role1 TO sonu;
REMOTE_LOGIN_PASSWORDFILE
parameter
This
parameter is used for managing the SYS authentication.
If REMOTE_LOGIN_PASSWORDFILE='NONE',
Oracle will not check for a
password file (we can input any user name, any password, we will be connected
as SYS).If REMOTE_LOGIN_PASSWORDFILE='SHARED'
(or ‘EXCLUSIVE’ in 9i),
Oracle will check for a password file and we can connect as SYS only if the
password is the good one. (RECOMMENDED)
REMOTE_OS_AUTHENT parameter
The
REMOTE_OS_AUTHENT parameter lets the Oracle database decide if the authentication
can be performed by the remote operating system or if it must be performed by
the database.
REMOTE_OS_AUTHENT
= TRUE => Authentication just on the remote OS and no authentication
on the database side.
REMOTE_OS_AUTHEN
= FALSE => Only database authentication is available from these remote
systems. (RECOMMENDED)
SQL> select j.sid,
s.spid,
s.serial#,
j.log_user,
j.job,
j.broken,
j.failures,
j.last_date||’:'||j.last_sec last_date,
j.this_date||’:'||j.this_sec this_date,
j.next_date||’:'||j.next_sec next_date,
j.next_date – j.last_date interval,
j.what
from ( select djr.SID, dj.LOG_USER, dj.JOB, dj.BROKEN, dj.FAILURES, dj.LAST_DATE, dj.LAST_SEC, dj.THIS_DATE, dj.THIS_SEC, dj.NEXT_DATE, dj.NEXT_SEC, dj.INTERVAL, dj.WHAT
from dba_jobs dj, dba_jobs_running djr
where dj.job = djr.job ) j,
(select p.spid, s.sid, s.serial#
from v$process p, v$session s
where p.addr = s.paddr ) s
where j.sid = s.sid;
2. Mark the job as Broken
SQL> begin
DBMS_JOB.BROKEN(job#,TRUE);
commit;
end;
SQL> begin
DBMS_JOB.BROKEN(job#,TRUE);
commit;
end;
3. Kill the Oracle Session
SQL>
ALTER SYSTEM KILL SESSION ‘sid, serial#’;
NOTE: In many situations the session is marked
‘KILLED’ but is not killed.
4. Kill the O/S Process
For UNIX:
kill -9 spid
kill -9 spid
For Windows at the DOS
Prompt:
orakill sid spid
orakill sid spid
Database ARCHIVELOG mode:
Overview
An Oracle database could be in ARCHIVELOG or NON ARCHIVELOG mode. When the database is in ARCHIVELOG mode one or more ARC process(es) are taking backups of the redo log files when the redo logs are full or switched. That assures that all the database operations are kept in 2 places (in data files and in archive log files). Having the database in ARCHIVELOG mode assure us that the data will not be lost even if the original data (from datafiles) will become inaccessible or will be deleted accidentally.
An Oracle database could be in ARCHIVELOG or NON ARCHIVELOG mode. When the database is in ARCHIVELOG mode one or more ARC process(es) are taking backups of the redo log files when the redo logs are full or switched. That assures that all the database operations are kept in 2 places (in data files and in archive log files). Having the database in ARCHIVELOG mode assure us that the data will not be lost even if the original data (from datafiles) will become inaccessible or will be deleted accidentally.
Is my database in ARCHIVELOG
mode ?
To
see if the database is in archivelog mode the following command could be used:
SQL>
select NAME, LOG_MODE, ARCHIVELOG_CHANGE# from v$database;
How could I enable the
ARCHIVELOG mode ?
In Oracle 9i
3) assure that we have the following parameters in init.ora:
log_archive_dest_1=’location=C:\Ohome_9i\ARC’
obsolete for 10g and higher.àlog_archive_start=TRUE
3) assure that we have the following parameters in init.ora:
log_archive_dest_1=’location=C:\Ohome_9i\ARC’
obsolete for 10g and higher.àlog_archive_start=TRUE
2)
startup mount
3) alter database archivelog; (enable automatic archiving)
alter database archivelog MANUAL; (ALTER SYSTEM ARCHIVE LOG ALL; must be run to archive the log files)
In Oracle 10g
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> select NAME, LOG_MODE, ARCHIVELOG_CHANGE# from v$database;
3) alter database archivelog; (enable automatic archiving)
alter database archivelog MANUAL; (ALTER SYSTEM ARCHIVE LOG ALL; must be run to archive the log files)
In Oracle 10g
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> select NAME, LOG_MODE, ARCHIVELOG_CHANGE# from v$database;
How could I disable the
ARCHIVELOG mode ?
SQL> shutdown immediate
SQL> startup mount
SQL> alter database noarchivelog;
SQL> alter database open;
SQL> select NAME, LOG_MODE, ARCHIVELOG_CHANGE# from v$database;
SQL> shutdown immediate
SQL> startup mount
SQL> alter database noarchivelog;
SQL> alter database open;
SQL> select NAME, LOG_MODE, ARCHIVELOG_CHANGE# from v$database;
Automatic/ Manual Archiving
ARCHIVE LOG LIST; -> Show the Status of Automatic Archiving.
ARCHIVE LOG START; -> Start Automatic Archiving.
ARCHIVE LOG STOP; -> Stop Automatic Archiving.
ARCHIVE LOG LIST; -> Show the Status of Automatic Archiving.
ARCHIVE LOG START; -> Start Automatic Archiving.
ARCHIVE LOG STOP; -> Stop Automatic Archiving.
Views used in managing database ARCHIVELOG mode
V$ARCHIVE_DEST
-> Show the places where the archive logs are shipped.
V$ARCHIVED_LOG -> Show the history of archived log files
V$ARCHIVE_PROCESSES -> Show information about the current archiving process
V$ARCHIVED_LOG -> Show the history of archived log files
V$ARCHIVE_PROCESSES -> Show information about the current archiving process
No comments:
Post a Comment