VIEWS WE QUERY IN DATABASE
50}V$SESSION_ROLES >Roles that the user currently has enabled.
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.
******************************************************************************
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.
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 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
******************************************************************************
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.
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.
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
‘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
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;
Manage Oracle Database Jobs
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;
Managing Data Security in Oracle
How to change the password for an user?
SQL> ALTER USER scott identified by scott;
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)
Kill an Oracle process / jobs from OS (Linux, AIX,UNIX)
1. Find the job we what to kill and the session associated with the job
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;
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
Oracle Database ARCHIVELOG mode
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’
log_archive_start=TRUE obsolete for 10g and higher.
3) assure that we have the following parameters in init.ora:
log_archive_dest_1=’location=C:\Ohome_9i\ARC’
log_archive_start=TRUE obsolete for 10g and higher.
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.
Oracle Maintenance Task
1. What is the current version/ maintenance release of the database I use?
To check the Oracle database version from the SQL*Plus prompt, you can issue following sql:
To check the Oracle database version from the SQL*Plus prompt, you can issue following sql:
SQL> SELECT banner FROM v$version WHERE banner LIKE ‘Oracle%’;
Or
SQL> SELECT version FROM product_component_version WHERE product LIKE ‘Oracle%’;
Or
SQL> SELECT version FROM product_component_version WHERE product LIKE ‘Oracle%’;
2. How could I interpret the Oracle version digits?
Example: Oracle version 10.2.0.5.0
Example: Oracle version 10.2.0.5.0
1st Digit: “10” is a major version database number. This is a major new
edition of the software, which usually contains significant new
functionalities.
2nd Digit: “2” is the database maintenance release number. The
maintenance release number increases when bug fixes or new features to
existing programs become available.
3rd Digit: “0” is the patch set number. A patch release contains fixes
for serious bugs that cannot wait until the next maintenance release.
4th/ 5th Digit: “5.0” identifies a release level specific to a
component/OS. This is used to identify a particular emergency patch
release of a software product on that operating system.
3. How could I know if my database is 32-bit or 64-bit version?
From the sqlplus prompt you can run :
SQL> SELECT banner FROM v$version;
SQL> SELECT banner FROM v$version;
One line will tell you if the database is 32-bit or 64-bit.
Example:
“TNS for 32-bit Windows: Version 10.2.0.5.0 – Production” means that the database is 32-bit.
Example:
“TNS for 32-bit Windows: Version 10.2.0.5.0 – Production” means that the database is 32-bit.
On Unix/Solaris/Linux:
cd $ORACLE_HOME/bin
file oracl*
cd $ORACLE_HOME/bin
file oracl*
This will display the file type of your oracle binaries. If you are running 64-bit binaries, the output should look like this:
oracle: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped
oracleO: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped
oracle: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped
oracleO: ELF 64-bit MSB executable SPARCV9 Version 1, dynamically linked, not stripped
If your binaries are 32-bit, the output will look like this:
oracle: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped
oracle: ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped
4. How could I know if my OS is 32-bit or 64-bit version?
On Solaris:
From the command line (as root or not) run this command:
On Solaris:
From the command line (as root or not) run this command:
$ /usr/bin/isainfo -kv
If your OS is 64-bit, you will see output like:
64-bit sparcv9 kernel modules
64-bit sparcv9 kernel modules
If your OS is 32-bit, you will get this output:
32-bit sparc kernel modules
32-bit sparc kernel modules
On Linux, use uname –a
$ uname -a
Linux linux2 2.6.9-22.ELsmp #1 SMP Sat Oct 8 19:11:43 CDT 2005 i686 i686 i386 GNU/Linux
$ uname -a
Linux linux2 2.6.9-22.ELsmp #1 SMP Sat Oct 8 19:11:43 CDT 2005 i686 i686 i386 GNU/Linux
That means 32-bit.
A 64-bit would be
Linux linux2 2.6.9-22.ELsmp #1 SMP Sat Oct 8 19:11:43 CDT 2005 x86_64 x86_64 x86_64 GNU/Linux
Linux linux2 2.6.9-22.ELsmp #1 SMP Sat Oct 8 19:11:43 CDT 2005 x86_64 x86_64 x86_64 GNU/Linux
On HP-UX
$ getconf KERNEL_BITS
64
$ getconf KERNEL_BITS
64
On Microsoft Windows Server 2003
1. Click Start, click Run, type sysdm.cpl, and then click OK.
2. Click the General tab. The operating system appears as follows:
1. Click Start, click Run, type sysdm.cpl, and then click OK.
2. Click the General tab. The operating system appears as follows:
For a 64-bit version operating system: Microsoft Windows Server 2003 Enterprise x64 Edition appears under System.
For a 32-bit version operating system: Microsoft Windows Server 2003 Enterprise Edition appears under System.
For a 32-bit version operating system: Microsoft Windows Server 2003 Enterprise Edition appears under System.
5. What UNIX-type Operating System I use ?
$ uname -a
SunOS hostname 5.8 Generic_117350-41 sun4u sparc SUNW,Sun-Fire
$ uname -a
SunOS hostname 5.8 Generic_117350-41 sun4u sparc SUNW,Sun-Fire
In this case is the OS is Sun Solaris SPARC version 8.
6. Which is the last Oracle database patch set available for a particular major version ?
a) Login to Metalink: https://support.oracle.com/CSP/ui/flash.html
a) Login to Metalink: https://support.oracle.com/CSP/ui/flash.html
b) Find the Document ID 730365.1 : Oracle Database Upgrade Path Reference List
* ACMS
(atomic control file to memory service) per-instance process is an
agent that contributes to ensuring a distributed SGA memory update is
either globally committed on success or globally aborted in the event of
a failure in an Oracle RAC environment.
* DBRM (database resource manager) process is responsible for setting resource plans and other resource manager related tasks.
* DIA0 (diagnosability process 0) (only 0 is currently being used) is responsible for hang detection and deadlock resolution.
* DIAG (diagnosability) process performs diagnostic dumps and executes global oradebug commands.
* EMNC (event monitor coordinator) is the background server process used for database event management and notifications.
* FBDA
(flashback data archiver process) archives the historical rows of
tracked tables into flashback data archives. Tracked tables are tables
which are enabled for flashback archive. When a transaction containing
DML on a tracked table commits, this process stores the pre-image of the
rows into the flashback archive. It also keeps metadata on the current
rows.
FBDA is also responsible for automatically managing the flashback data archive for space, organization, and retention and keeps track of how far the archiving of tracked transactions has occurred.
FBDA is also responsible for automatically managing the flashback data archive for space, organization, and retention and keeps track of how far the archiving of tracked transactions has occurred.
* GTX0-j (global
transaction) processes provide transparent support for XA global
transactions in an Oracle RAC environment. The database autotunes the
number of these processes based on the workload of XA global
transactions. Global transaction processes are only seen in an Oracle
RAC environment.
* KATE performs proxy I/O to an ASM metafile when a disk goes offline.
* MARK marks ASM allocation units as stale following a missed write to an offline disk.
* SMCO
(space management coordinator) process coordinates the execution of
various space management related tasks, such as proactive space
allocation and space reclamation. It dynamically spawns slave processes
(Wnnn) to implement the task.
* VKTM (virtual keeper of time) is responsible for providing a wall-clock time (updated every second) and reference-time counter (updated every 20 ms and available only when running at elevated priority).
*******************************************************************************
Oracle Data Pump Exports/Imports
Oracle Data Pump is a newer, faster and more flexible alternative to
the "exp" and "imp" utilities used in previous Oracle versions. In
addition to basic import and export functionality data pump provides a
PL/SQL API and support for external tables.
- Getting Started
- Table Exports/Imports
- Schema Exports/Imports
- Database Exports/Imports
- INCLUDE and EXCLUDE
- Network Exports/Imports (NETWORK_LINK)
- Miscellaneous Information
- Data Pump API
- External Tables
- Help
Getting Started
For the examples to work we must first unlock the SCOTT account and
create a directory object it can access. The directory object is only a
pointer to a physical directory, creating it does not actually create
the physical directory on the file system.
CONN / AS SYSDBA ALTER USER scott IDENTIFIED BY tiger ACCOUNT UNLOCK; CREATE OR REPLACE DIRECTORY test_dir AS '/u01/app/oracle/oradata/'; GRANT READ, WRITE ON DIRECTORY test_dir TO scott;
Existing directories can be queried using the
ALL_DIRECTORIES
view.Table Exports/Imports
The
TABLES
parameter is used to specify the tables that
are to be exported. The following is an example of the table export and
import syntax.expdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR
dumpfile=EMP_DEPT.dmp logfile=expdpEMP_DEPT.log impdp scott/tiger@db10g tables=EMP,DEPT directory=TEST_DIR
dumpfile=EMP_DEPT.dmp logfile=impdpEMP_DEPT.log
For example output files see expdpEMP_DEPT.log and impdpEMP_DEPT.log.
The
TABLE_EXISTS_ACTION=APPEND
parameter allows data to be imported into existing tables.Schema Exports/Imports
The
OWNER
parameter of exp has been replaced by the SCHEMAS
parameter which is used to specify the schemas to be exported. The
following is an example of the schema export and import syntax.expdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log impdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR dumpfile=SCOTT.dmp logfile=impdpSCOTT.log
For example output files see expdpSCOTT.log and impdpSCOTT.log.
Database Exports/Imports
The
FULL
parameter indicates that a complete database export is required. The following is an example of the
full database export and import syntax.expdp system/password@db10g full=Y directory=TEST_DIR
dumpfile=DB10G.dmp logfile=expdpDB10G.log impdp system/password@db10g full=Y directory=TEST_DIR
dumpfile=DB10G.dmp logfile=impdpDB10G.log
For an example output file see expdpDB10G.log.
INCLUDE and EXCLUDE
The
INCLUDE
and EXCLUDE
parameters can be used to limit the export/import to specific objects. When the INCLUDE
parameter is used, only those objects specified by it will be included in the export/import. When the EXCLUDE
parameter is used, all objects except those specified by it will be
included in the export/import. The two parameters are mutually
exclusive, so use the parameter that requires the least entries to give
you the result you require. The basic syntax for both parameters is the
same.INCLUDE=object_type[:name_clause] [, ...] EXCLUDE=object_type[:name_ clause] [, ...]
The following code shows how they can be used as command line parameters.
expdp scott/tiger@db10g schemas=SCOTT include=TABLE:"IN
('EMP', 'DEPT')" directory=TEST_DIR dumpfile=SCOTT.dmp
logfile=expdpSCOTT.log expdp scott/tiger@db10g schemas=SCOTT exclude=TABLE:"= 'BONUS'"
directory=TEST_DIR dumpfile=SCOTT.dmp logfile=expdpSCOTT.log
If the parameter is used from the command line, depending on your OS,
the special characters in the clause may need to be escaped, as
follows. Because of this, it is easier to use a parameter file.
include=TABLE:\"IN (\'EMP\', \'DEPT\')\"
A single import/export can include multiple references to the
parameters, so to export tables, views and some packages we could use
either of the following approaches.
INCLUDE=TABLE,VIEW,PACKAGE:"LIKE '%API'" or INCLUDE=TABLE INCLUDE=VIEW INCLUDE=PACKAGE:"LIKE '%API'"
The valid object type paths that can be included or excluded can be displayed using the
DATABASE_EXPORT_OBJECTS
, SCHEMA_EXPORT_OBJECTS
, and TABLE_EXPORT_OBJECTS
views.Network Exports/Imports (NETWORK_LINK)
The
NETWORK_LINK
parameter identifies a database link to
be used as the source for a network export/import. The following
database link will be used to demonstrate its use.CONN / AS SYSDBA GRANT CREATE DATABASE LINK TO test; CONN test/test CREATE DATABASE LINK remote_scott CONNECT TO scott IDENTIFIED BY tiger
USING 'DEV';
In the case of exports, the
NETWORK_LINK
parameter
identifies the database link pointing to the source server. The objects
are exported from the source server in the normal manner, but written to
a directory object on the local server, rather than one on the source
server. Both the local and remote users require the EXP_FULL_DATABASE
role granted to them.expdp test/test@db10g tables=SCOTT.EMP network_link=REMOTE_SCOTT
directory=TEST_DIR dumpfile=EMP.dmp logfile=expdpEMP.log
For imports, the
NETWORK_LINK
parameter also identifies
the database link pointing to the source server. The difference here is
the objects are imported directly from the source into the local server
without being written to a dump file. Although there is no need for a DUMPFILE
parameter, a directory object is still required for the logs associated
with the operation. Both the local and remote users require the IMP_FULL_DATABASE
role granted to them.impdp test/test@db10g tables=SCOTT.EMP network_link=REMOTE_SCOTT
directory=TEST_DIR logfile=impdpSCOTT.log remap_schema=SCOTT:TEST
Miscellaneous Information
Unlike the original exp and imp utilities all data pump ".dmp" and
".log" files are created on the Oracle server, not the client machine.
All data pump actions are performed by multiple jobs (server
processes not DBMS_JOB jobs). These jobs are controlled by a
master control process which uses Advanced Queuing. At runtime an
advanced queue table, named after the job name, is created and used by
the
master control process. The table is dropped on completion of the data
pump job. The job and the advanced queue can be named
using the
JOB_NAME
parameter. Cancelling the client process
does not stop the associated data pump job. Issuing "ctrl+c"
on the client during a job stops the client output and presents a
command prompt. Typing "status" at this prompt allows you to monitor the
current job.Export> status Job: SYS_EXPORT_FULL_01 Operation: EXPORT Mode: FULL State: EXECUTING Bytes Processed: 0 Current Parallelism: 1 Job Error Count: 0 Dump File: D:\TEMP\DB10G.DMP bytes written: 4,096 Worker 1 Status: State: EXECUTING Object Schema: SYSMAN Object Name: MGMT_CONTAINER_CRED_ARRAY Object Type: DATABASE_EXPORT/SCHEMA/TYPE/TYPE_SPEC Completed Objects: 261 Total Objects: 261
Data pump performance can be improved by using the
PARALLEL
parameter. This should be used in conjunction with the "%U" wildcard in the DUMPFILE
parameter to allow multiple dumpfiles to be created or read.expdp scott/tiger@db10g schemas=SCOTT directory=TEST_DIR parallel=4
dumpfile=SCOTT_%U.dmp logfile=expdpSCOTT.log
The
DBA_DATAPUMP_JOBS
view can be used to monitor the current jobs.system@db10g> select * from dba_datapump_jobs; OWNER_NAME JOB_NAME OPERATION ------------------------------ ------------------------------------- JOB_MODE STATE DEGREE ATTACHED_SESSIONS ------------------------------ ------------------------- ----------------- SYSTEM SYS_EXPORT_FULL_01 EXPORT FULL EXECUTING 1
Data Pump API
Along with the data pump utilities Oracle provide an PL/SQL API. The
following is an example of how this API can be used to perform a schema
export.
SET SERVEROUTPUT ON SIZE 1000000 DECLARE l_dp_handle NUMBER; l_last_job_state VARCHAR2(30) := 'UNDEFINED'; l_job_state VARCHAR2(30) := 'UNDEFINED'; l_sts KU$_STATUS; BEGIN l_dp_handle := DBMS_DATAPUMP.open( operation => 'EXPORT', job_mode => 'SCHEMA', remote_link => NULL, job_name => 'EMP_EXPORT', version => 'LATEST'); DBMS_DATAPUMP.add_file( handle => l_dp_handle, filename => 'SCOTT.dmp', directory => 'TEST_DIR'); DBMS_DATAPUMP.add_file( handle => l_dp_handle, filename => 'SCOTT.log', directory => 'TEST_DIR', filetype => DBMS_DATAPUMP.KU$_FILE_TYPE_LOG_FILE); DBMS_DATAPUMP.metadata_filter( handle => l_dp_handle, name => 'SCHEMA_EXPR', value => '= ''SCOTT'''); DBMS_DATAPUMP.start_job(l_dp_ handle); DBMS_DATAPUMP.detach(l_dp_ handle); END; /
Once the job has started the status can be checked using.
system@db10g> select * from dba_datapump_jobs;
External Tables
Oracle have incorporated support for data pump technology into
external tables. The ORACLE_DATAPUMP access driver can be used to unload
data to data pump export files and subsequently reload it. The unload of
data occurs when the external table is created using the "AS" clause.
CREATE TABLE emp_xt ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY test_dir LOCATION ('emp_xt.dmp') ) AS SELECT * FROM emp;
The data can then be queried using the following.
SELECT * FROM emp_xt;
The syntax to create the external table pointing to an existing file is similar, but without the "AS" clause.
DROP TABLE emp_xt; CREATE TABLE emp_xt ( EMPNO NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7,2), COMM NUMBER(7,2), DEPTNO NUMBER(2)) ORGANIZATION EXTERNAL ( TYPE ORACLE_DATAPUMP DEFAULT DIRECTORY test_dir LOCATION ('emp_xt.dmp') ); SELECT * FROM emp_xt;
Help
The
HELP=Y
option displays the available parameters.expdp
expdp help=y Export: Release 10.1.0.2.0 - Production on Tuesday, 23 March, 2004 8:33 Copyright (c) 2003, Oracle. All rights reserved. The Data Pump export utility provides a mechanism for transferring data objects between Oracle databases. The utility is invoked with the following command: Example: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp You can control how Export runs by entering the 'expdp' command followed by various parameters. To specify parameters, you use keywords: Format: expdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN) Example: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott or TABLES=(T1:P1,T1:P2), if T1 is partitioned table USERID must be the first parameter on the command line. Keyword Description (Default) ------------------------------ ------------------------------ ------------------ ATTACH Attach to existing job, e.g. ATTACH [=job name]. CONTENT Specifies data to unload where the valid keywords are: (ALL), DATA_ONLY, and METADATA_ONLY. DIRECTORY Directory object to be used for dumpfiles and logfiles. DUMPFILE List of destination dump files (expdat.dmp), e.g. DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp. ESTIMATE Calculate job estimates where the valid keywords are: (BLOCKS) and STATISTICS. ESTIMATE_ONLY Calculate job estimates without performing the export. EXCLUDE Exclude specific object types, e.g. EXCLUDE=TABLE:EMP. FILESIZE Specify the size of each dumpfile in units of bytes. FLASHBACK_SCN SCN used to set session snapshot back to. FLASHBACK_TIME Time used to get the SCN closest to the specified time. FULL Export entire database (N). HELP Display Help messages (N). INCLUDE Include specific object types, e.g. INCLUDE=TABLE_DATA. JOB_NAME Name of export job to create. LOGFILE Log file name (export.log). NETWORK_LINK Name of remote database link to the source system. NOLOGFILE Do not write logfile (N). PARALLEL Change the number of active workers for current job. PARFILE Specify parameter file. QUERY Predicate clause used to export a subset of a table. SCHEMAS List of schemas to export (login schema). STATUS Frequency (secs) job status is to be monitored where the default (0) will show new status when available. TABLES Identifies a list of tables to export - one schema only. TABLESPACES Identifies a list of tablespaces to export. TRANSPORT_FULL_CHECK Verify storage segments of all tables (N). TRANSPORT_TABLESPACES List of tablespaces from which metadata will be unloaded. VERSION Version of objects to export where valid keywords are: (COMPATIBLE), LATEST, or any valid database version. The following commands are valid while in interactive mode. Note: abbreviations are allowed Command Description ------------------------------ ------------------------------ ------------------ ADD_FILE Add dumpfile to dumpfile set. ADD_FILE=dumpfile-name CONTINUE_CLIENT Return to logging mode. Job will be re-started if idle. EXIT_CLIENT Quit client session and leave job running. HELP Summarize interactive commands. KILL_JOB Detach and delete job. PARALLEL Change the number of active workers for current job. PARALLEL=. START_JOB Start/resume current job. STATUS Frequency (secs) job status is to be monitored where the default (0) will show new status when available. STATUS=[interval] STOP_JOB Orderly shutdown of job execution and exits the client. STOP_JOB=IMMEDIATE performs an immediate shutdown of the Data Pump job.
Oracle 10g Release 2 (10.2) added the following parameters.
Keyword Description (Default) ------------------------------------------------------------ ------------------ COMPRESSION Reduce size of dumpfile contents where valid keyword values are: (METADATA_ONLY) and NONE. ENCRYPTION_PASSWORD Password key for creating encrypted column data. SAMPLE Percentage of data to be exported; The following commands are valid while in interactive mode. Note: abbreviations are allowed Command Description ------------------------------ ------------------------------ ------------------ FILESIZE Default filesize (bytes) for subsequent ADD_FILE commands.
Oracle 11g Release 1 (11.1) added the following parameters.
Keyword Description (Default) ------------------------------------------------------------ ------------------ DATA_OPTIONS Data layer flags where the only valid value is: XML_CLOBS-write XML datatype in CLOB format ENCRYPTION Encrypt part or all of the dump file where valid keyword values are: ALL, DATA_ONLY, METADATA_ONLY, ENCRYPTED_COLUMNS_ONLY, or NONE. ENCRYPTION_ALGORITHM Specify how encryption should be done where valid keyword values are: (AES128), AES192, and AES256. ENCRYPTION_MODE Method of generating encryption key where valid keyword values are: DUAL, PASSWORD, and (TRANSPARENT). REMAP_DATA Specify a data conversion function, e.g. REMAP_DATA=EMP.EMPNO:REMAPPKG. EMPNO. REUSE_DUMPFILES Overwrite destination dump file if it exists (N). TRANSPORTABLE Specify whether transportable method can be used where valid keyword values are: ALWAYS, (NEVER). The following commands are valid while in interactive mode. Note: abbreviations are allowed Command Description ------------------------------ ------------------------------ ------------------ REUSE_DUMPFILES Overwrite destination dump file if it exists (N).
Oracle 11g Release 1 (11.2) altered the format of the help output as well as adding the following parameters.
CLUSTER Utilize cluster resources and distribute workers across the Oracle RAC. Valid keyword values are: [Y] and N. SERVICE_NAME Name of an active Service and associated resource group to constrain Oracle RAC resources. SOURCE_EDITION Edition to be used for extracting metadata.
impdp
impdp help=y Import: Release 10.1.0.2.0 - Production on Saturday, 11 September, 2004 17:22 The Data Pump Import utility provides a mechanism for transferring data objects between Oracle databases. The utility is invoked with the following command: Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp You can control how Import runs by entering the 'impdp' command followed by various parameters. To specify parameters, you use keywords: Format: impdp KEYWORD=value or KEYWORD=(value1,value2,...,valueN) Example: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp USERID must be the first parameter on the command line. Keyword Description (Default) ------------------------------ ------------------------------ ------------------ ATTACH Attach to existing job, e.g. ATTACH [=job name]. CONTENT Specifies data to load where the valid keywords are: (ALL), DATA_ONLY, and METADATA_ONLY. DIRECTORY Directory object to be used for dump, log, and sql files. DUMPFILE List of dumpfiles to import from (expdat.dmp), e.g. DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp. ESTIMATE Calculate job estimates where the valid keywords are: (BLOCKS) and STATISTICS. EXCLUDE Exclude specific object types, e.g. EXCLUDE=TABLE:EMP. FLASHBACK_SCN SCN used to set session snapshot back to. FLASHBACK_TIME Time used to get the SCN closest to the specified time. FULL Import everything from source (Y). HELP Display help messages (N). INCLUDE Include specific object types, e.g. INCLUDE=TABLE_DATA. JOB_NAME Name of import job to create. LOGFILE Log file name (import.log). NETWORK_LINK Name of remote database link to the source system. NOLOGFILE Do not write logfile. PARALLEL Change the number of active workers for current job. PARFILE Specify parameter file. QUERY Predicate clause used to import a subset of a table. REMAP_DATAFILE Redefine datafile references in all DDL statements. REMAP_SCHEMA Objects from one schema are loaded into another schema. REMAP_TABLESPACE Tablespace object are remapped to another tablespace. REUSE_DATAFILES Tablespace will be initialized if it already exists (N). SCHEMAS List of schemas to import. SKIP_UNUSABLE_INDEXES Skip indexes that were set to the Index Unusable state. SQLFILE Write all the SQL DDL to a specified file. STATUS Frequency (secs) job status is to be monitored where the default (0) will show new status when available. STREAMS_CONFIGURATION Enable the loading of Streams metadata TABLE_EXISTS_ACTION Action to take if imported object already exists. Valid keywords: (SKIP), APPEND, REPLACE and TRUNCATE. TABLES Identifies a list of tables to import. TABLESPACES Identifies a list of tablespaces to import. TRANSFORM Metadata transform to apply (Y/N) to specific objects. Valid transform keywords: SEGMENT_ATTRIBUTES and STORAGE. ex. TRANSFORM=SEGMENT_ATTRIBUTES: N:TABLE. TRANSPORT_DATAFILES List of datafiles to be imported by transportable mode. TRANSPORT_FULL_CHECK Verify storage segments of all tables (N). TRANSPORT_TABLESPACES List of tablespaces from which metadata will be loaded. Only valid in NETWORK_LINK mode import operations. VERSION Version of objects to export where valid keywords are: (COMPATIBLE), LATEST, or any valid database version. Only valid for NETWORK_LINK and SQLFILE. The following commands are valid while in interactive mode. Note: abbreviations are allowed Command Description (Default)11g ------------------------------ ------------------------------ ------------------ CONTINUE_CLIENT Return to logging mode. Job will be re-started if idle. EXIT_CLIENT Quit client session and leave job running. HELP Summarize interactive commands. KILL_JOB Detach and delete job. PARALLEL Change the number of active workers for current job. PARALLEL=. START_JOB Start/resume current job. START_JOB=SKIP_CURRENT will start the job after skipping any action which was in progress when job was stopped. STATUS Frequency (secs) job status is to be monitored where the default (0) will show new status when available. STATUS=[interval] STOP_JOB Orderly shutdown of job execution and exits the client. STOP_JOB=IMMEDIATE performs an immediate shutdown of the Data Pump job.
Oracle 10g Release 2 (10.2) added the following parameter.
Keyword Description (Default) ------------------------------------------------------------ ------------------ ENCRYPTION_PASSWORD Password key for accessing encrypted column data. This parameter is not valid for network import jobs.
Oracle 11g Release 1 (11.1) added the following parameters.
Keyword Description (Default) ------------------------------------------------------------ ------------------ DATA_OPTIONS Data layer flags where the only valid value is: SKIP_CONSTRAINT_ERRORS- constraint errors are not fatal. PARTITION_OPTIONS Specify how partitions should be transformed where the valid keywords are: DEPARTITION, MERGE and (NONE) REMAP_DATA Specify a data conversion function, e.g. REMAP_DATA=EMP.EMPNO:REMAPPKG. EMPNO
Oracle 11g Release 1 (11.2) altered the format of the help output as well as adding the following parameters.
CLUSTER Utilize cluster resources and distribute workers across the Oracle RAC. Valid keyword values are: [Y] and N. SERVICE_NAME Name of an active Service and associated resource group to constrain Oracle RAC resources. SOURCE_EDITION Edition to be used for extracting metadata. TARGET_EDITION Edition to be used for loading metadata.
No comments:
Post a Comment