1. 程式人生 > >oracle常用命令(日常整理,持續更新)

oracle常用命令(日常整理,持續更新)

oracle常用命令

一、Oracle資料庫例項、使用者、目錄及session會話檢視:

1、ORACLE SID檢視設定

檢視SID、使用者名稱

$ env|grep SID 、select * from v$instance、select instance_name,host_name from v$instance;

檢視資料庫所有使用者及使用者狀態:
SQL> select usernames,account_status from dba_users;

設定SID

$ export ORACLE_SID=hisvhfs

檢視資料庫DBID:
SQL>select * from v$DBID

2、查詢、設定Oracle資料庫例項最大程序數及最大會話數

檢視系統最大session:
SQL>show parameter session

檢視當前連線數:
SQL>select count(*) from v$bgprocess

檢視系統最大程序數:
SQL>show parameter process

檢視當前連線到資料庫的使用者:
SQL>select count(*) from v$session

檢視當前資料庫建立的會話情況:
SQL> select sid,serial#,username,program,machine,status from v$session;

查詢應用的連線數SQL:
SQL> SELECT b.MACHINE, b.PROGRAM, COUNT (*)
FROM v$process a, v$session b
WHERE a.ADDR = b.PADDR AND b.USERNAME IS NOT NULL
GROUP BY b.MACHINE, b.PROGRAM
ORDER BY COUNT (*) DESC;

檢視當前資料庫的併發連線數

SQL> select count(*) from v$session where status='ACTIVE';

檢視當前有哪些使用者正在使用資料:
select osuser,a.username,cpu_time/executions/1000000||'s',sql_fulltext,machine
from v$session a,v$sqlarea b
where a.sql_address = b.address
order by cpu_time/executions desc;

檢視資料庫指定使用者的連線情況

SQL> select sid,serial# from v$session where username='XX'; XX為使用者

例如:

SQL> select sid,serial# from v$session where username='BSPDEV';

SID SERIAL#
---------- ----------
204 4609
399 5841
590 6041

清除使用者下連線程序

SQL> alter system kill session '204,4609';

SQL> alter system kill session '399,5841';

SQL> alter system kill session '590,6041';

修改processes和sessions值
  SQL> alter system set processes=300 scope=spfile;
  系統已更改。
  SQL> alter system set sessions=335 scope=spfile;
  系統已更改。

修改processes和sessions值必須重啟oracle伺服器才能生效
ORACLE的連線數(sessions)與其引數檔案中的程序數(process)有關,它們的關係如下:
  sessions=(1.1*process+5)

3、檢視資料庫目錄

SQL> select * from all_directories;

4、檢視資料庫現有模式、是否歸檔

SQl>select name,log_mode from v$database;

也可以用下面的語句
archive log list;(該方法需要as sysdba)

檢視資料庫的建立日期和歸檔方式
SQL> Select Created, Log_Mode, Log_Mode From V$Database;

5、配置使用者密碼過期時間

alter profile "default" limit password_life_time unlimited; 配置使用者密碼永不過期
alter profile "default" limit password_life_time 100; 配置使用者密碼100天過期

6、建立、配置新使用者及檢視使用者屬性

解鎖新使用者:
SQL> alter user scott account unlock;
SQL> alter user scott identified by tiger;

刪除oracle使用者:
SQL>drop user username cascade; (刪除與使用者相關的所有物件)

這樣該使用者包括該使用者下的表,試圖,同義詞,過程,索引,及相關的一切就刪除了。

建立使用者並賦許可權以及設定預設表空間。

以sysdba使用者登陸進行以下設定:

-- Create the user
create user VHFSM
identified by vhnj1fsm
default tablespace MGRVHFSTBSDEF 此處是設定預設表空間。
temporary tablespace TEMP
profile DEFAULT
quota unlimited on mgrvhfstbs2010 此處是設定可操作的其他表空間
quota unlimited on mgrvhfstbsdef;
-- Grant/Revoke role privileges
grant connect to VHFSM;
grant dba to VHFSM;
-- Grant/Revoke system privileges
grant unlimited tablespace to VHFSM;

檢視使用者及角色許可權

--1.檢視所有使用者:
select * from dba_users;
select * from all_users;
select * from user_users;

--2.檢視使用者或角色系統許可權(直接賦值給使用者或角色的系統許可權):
select * from dba_sys_privs;
select * from user_sys_privs;

--3.檢視角色(只能檢視登陸使用者擁有的角色)所包含的許可權

sql>select * from role_sys_privs;

--4.檢視使用者物件許可權:
select * from dba_tab_privs;
select * from all_tab_privs;
select * from user_tab_privs;

--5.檢視所有角色:
select * from dba_roles;

--6.檢視使用者或角色所擁有的角色:
select * from dba_role_privs;
select * from user_role_privs;

--7.檢視哪些使用者有sysdba或sysoper系統許可權(查詢時需要相應許可權)

select * from V$PWFILE_USERS

--注意:
--1、以下語句可以檢視Oracle提供的系統許可權

select name from sys.system_privilege_map

--2、檢視一個使用者的所有系統許可權(包含角色的系統許可權)

SELECT privilege
FROM dba_sys_privs
WHERE grantee = 'DATAUSER'
UNION
SELECT privilege
FROM dba_sys_privs
WHERE grantee IN (SELECT granted_role FROM dba_role_privs WHERE grantee = 'DATAUSER');

二、建立、管理Oracle表空間

1、先查詢空閒空間

select tablespace_name,file_id,block_id,bytes,blocks from dba_free_space;
2、增加Oracle表空間

先查詢資料檔名稱、大小和路徑的資訊,語句如下:

select tablespace_name,file_id,bytes,file_name from dba_data_files;
3、修改檔案大小語句如下

alter database datafile
'需要增加的資料檔案路徑,即上面查詢出來的路徑
'resize 800M;

4、建立Oracle表空間

create tablespace test
datafile '/home/app/oracle/oradata/oracle8i/test01.dbf' size 8M
autoextend on
next 5M
maxsize 10M;

create tablespace sales
datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M
autoextend on
next 50M
maxsize unlimited
maxsize unlimited 是大小不受限制

create tablespace sales
datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M
autoextend on
next 50M
maxsize 1000M
extent management local uniform;
unform表示區的大小相同,預設為1M

create tablespace sales
datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M
autoextend on
next 50M
maxsize 1000M
extent management local uniform size 500K;
unform size 500K表示區的大小相同,為500K

create tablespace sales
datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M
autoextend on
next 50M
maxsize 1000M
extent management local autoallocate;
autoallocate表示區的大小由隨表的大小自動動態改變,大表使用大區小表使用小區

create tablespace sales
datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M
autoextend on
next 50M
maxsize 1000M
temporary;
temporary建立字典管理臨時表空間 ,要建立本地管理臨時表空間要加temporary tablespace關鍵字

create temporary tablespace sales
tempfile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M
autoextend on
next 50M
maxsize 1000M
建立本地管理臨時表空間,如果是臨時表空間,所有語句中的datafile都換為tempfile ,所有語句中的datafile都換為tempfile8i


為表空間增加資料檔案:
alter tablespace sales add
datafile '/home/app/oracle/oradata/oracle8i/sales02.dbf' size 800M
autoextend on next 50M
maxsize 1000M;


5、查看錶空間是否自動擴充套件
SQL> select file_id,file_name,tablespace_name,autoextensible,increment_by from dba_data_files order by file_id desc;

更改自動擴充套件屬性:

alter database datafile
'/home/app/oracle/oradata/oracle8i/sales01.dbf',
'/home/app/oracle/oradata/oracle8i/sales02.dbf'
'/home/app/oracle/oradata/oracle8i/sales01.dbf
autoextend off;

6、表空間的檢視與修改

檢視使用者預設表空間

SQL> select username,default_tablespace from dba_users;檢視所有使用者的預設表空間

SQL> select username,default_tablespace from user_users;檢視某個使用者的預設表空間,前提需要connect該使用者。

SQL> select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users where username = 'hr'; 檢視使用者對應的預設表空間

修改使用者預設表空間
SQL> alter user zhanghr default tablespace test;

設定資料庫的預設臨時表空間:
SQL>Alter database default temporary tablespace temp_tbs_name;

檢視使用者和預設表空間的關係:
SQL>select username,default_tablespace from dba_users;

檢視臨時表空間:

SQL> select file_name,file_id,blocks,user_blocks from dba_temp_files;

SQL> select tablespace_name,current_users,total_blocks,used_blocks,free_blocks from v$sort_segment;

檢視undo表空間

SQL> show parameter undo;

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1

檢視undo表空間大小

SQL> select sum(bytes)/1024/1024 "current undo size(M)" from dba_data_files where tablespace_name='UNDOTBS1';

通過增加資料檔案來改變undo表空間大小

SQL> alter tablespace undotbs1
add datafile '/oracle/oradata/orc6/undo02.dbf' size 10M;

通過resize更改資料檔案大小

SQL> alter database datafile '/oracle/oradata/orc6/undo02.dbf' resize 100M;

檢視某個表空間的資料檔案

SQL> select file_name,tablespace_name,bytes/1024/1024 "bytes MB",maxbytes/1024/1024 "maxbytes MB" from dba_data_files where tablespace_name='ORA1TBS';指定表空間名要大寫

檢視所有表空間大小

SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files
group by tablespace_name;

檢視已使用的表空間大小
SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_free_space
group by tablespace_name;

oracle查看錶空間大小及使用率:

方法一:

SELECT UPPER(F.TABLESPACE_NAME),D.TOT_GROOTTE_MB,D.TOT_GROOTTE_MB,F.TOTAL_BYTES,TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100, 2),'990.99'), F.TOTAL_BYTES, F.MAX_BYTES FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 4 DESC;

方法二:

SELECT D.TABLESPACE_NAME,
SPACE || 'M' "SUM_SPACE(M)",
BLOCKS "SUM_BLOCKS",
SPACE - NVL (FREE_SPACE, 0) || 'M' "USED_SPACE(M)",
ROUND ( (1 - NVL (FREE_SPACE, 0) / SPACE) * 100, 2) || '%'
"USED_RATE(%)",
FREE_SPACE || 'M' "FREE_SPACE(M)"
FROM ( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,
SUM (BLOCKS) BLOCKS
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME) D,
( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) FREE_SPACE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
UNION ALL
SELECT D.TABLESPACE_NAME,
SPACE || 'M' "SUM_SPACE(M)",
BLOCKS SUM_BLOCKS,
USED_SPACE || 'M' "USED_SPACE(M)",
ROUND (NVL (USED_SPACE, 0) / SPACE * 100, 2) || '%' "USED_RATE(%)",
NVL (FREE_SPACE, 0) || 'M' "FREE_SPACE(M)"
FROM ( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES) / (1024 * 1024), 2) SPACE,
SUM (BLOCKS) BLOCKS
FROM DBA_TEMP_FILES
GROUP BY TABLESPACE_NAME) D,
( SELECT TABLESPACE_NAME,
ROUND (SUM (BYTES_USED) / (1024 * 1024), 2) USED_SPACE,
ROUND (SUM (BYTES_FREE) / (1024 * 1024), 2) FREE_SPACE
FROM V$TEMP_SPACE_HEADER
GROUP BY TABLESPACE_NAME) F
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)
ORDER BY 1;

方法三:

SELECT *
FROM (SELECT a.tablespace_name,
to_char(a.bytes / 1024 / 1024, '99,999.999') total_bytes,
to_char(b.bytes / 1024 / 1024, '99,999.999') free_bytes,
to_char(a.bytes / 1024 / 1024 - b.bytes / 1024 / 1024,
'99,999.999') use_bytes,
to_char((1 - b.bytes / a.bytes) * 100, '99.99') || '%' USE
FROM (SELECT tablespace_name, SUM(bytes) bytes
FROM dba_data_files
GROUP BY tablespace_name) a,
(SELECT tablespace_name, SUM(bytes) bytes
FROM dba_free_space
GROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name
UNION ALL
SELECT c.tablespace_name,
to_char(c.bytes / 1024 / 1024, '99,999.999') total_bytes,
to_char((c.bytes - d.bytes_used) / 1024 / 1024, '99,999.999') free_bytes,
to_char(d.bytes_used / 1024 / 1024, '99,999.999') use_bytes,
to_char(d.bytes_used * 100 / c.bytes, '99.99') || '%' USE
FROM (SELECT tablespace_name, SUM(bytes) bytes
FROM dba_temp_files
GROUP BY tablespace_name) c,
(SELECT tablespace_name, SUM(bytes_cached) bytes_used
FROM v$temp_extent_pool
GROUP BY tablespace_name) d
WHERE c.tablespace_name = d.tablespace_name)
ORDER BY tablespace_name;

查看錶空間使用大小情況一

SQL> select a.tablespace_name,a.bytes/1024/1024 "Sum MB",(a.bytes-b.bytes)/1024/1024 "used MB",
b.bytes/1024/1024 "free MB",round(((a.bytes-b.bytes)/a.bytes)*100,2) "percent_used"
from
(select tablespace_name,sum(bytes) bytes from dba_data_files group by tablespace_name) a,
(select tablespace_name,sum(bytes) bytes,max(bytes) largest from dba_free_space group by tablespace_name ) b
where a.tablespace_name=b.tablespace_name
order by ((a.bytes-b.bytes)/a.bytes) desc
;

TABLESPACE_NAME Sum MB used MB free MB percent_used
------------------------------ ---------- ---------- ---------- ------------
SYSAUX 490 461.0625 28.9375 94.09
UNDOTBS1 75 66.8125 8.1875 89.08
USERS 5 1.3125 3.6875 26.25
ORA1TBS 400 2 398 .5
ORA2TBS 400 2 398 .5

查看錶空間使用大小情況二

SQL> select a.tablespace_name,total,free,total-free used from
2 ( select tablespace_name,sum(bytes)/1024/1024 total from dba_data_files
group by tablespace_name) a,
( select tablespace_name,sum(bytes)/1024/1024 free from dba_free_space
group by tablespace_name) b
where a.tablespace_name=b.tablespace_name; 3 4 5 6

TABLESPACE_NAME TOTAL FREE USED
------------------------------ ---------- ---------- ----------
USERS 5 .9375 4.0625
TESTTB 500 499 1
SYSAUX 550 30 520
EXAMPLE 100 20.75 79.25
UNDOTBS1 110 96.625 13.375

在SQL命令列情況下將結果輸出到指定檔案中。
SQL> spool out.txt
SQL> select * from v$database;
SQL> spool off

三、檢視、管理ORACLE資料檔案

檢視資料檔案:
SQL> select name from v$datafile;

更改資料檔案大小:

SQL> alter database datafile '/oradata2/hisvhfs/undotbs01.dbf' resize 30G;

檢視使用者所有表空間及對應的資料檔案和資料檔案大小

SQL> select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;

檢視資料檔案狀態及大小

SQL> select name,BYTES,STATUS ,FILE# from v$datafile;

檢視所有資料檔案

SQL> select name from v$datafile;

檢視所有表空間對應的資料檔案
SQL> select tablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;

四、檢視、管理ORACLE表

檢視所有segment的大小。
Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name

查詢表的大小和表空間的大小

有兩種含義的表大小。一種是分配給一個表的物理空間數量,而不管空間是否被使用。可以這樣查詢獲得位元組數:
當前例項以scott使用者登入,並建立dept表的副本dept_copy2為例。
SQL> select segment_name, bytes
2 from user_segments
3 where segment_type = 'TABLE';

SEGMENT_NAME BYTES
-------------------------------------------------------------------------------- ----------
DEPT_COPY2 65536
DEPT_COPY 65536
BIN$7Sa/taXJEKHgQ2kFqMCxMQ==$0 65536
ITEMS 65536
SALGRADE 65536
EMP 65536
DEPT 65536

7 rows selected

或者
SQL> Select Segment_Name,Sum(bytes)/1024/1024 From User_Extents Group By Segment_Name;

SEGMENT_NAME SUM(BYTES)/1024/1024
-------------------------------------------------------------------------------- --------------------
DEPT 0.0625
PK_DEPT 0.0625
EMP 0.0625
DEPT_COPY 0.0625
DEPT_COPY2 0.0625
ITEMS 0.0625
PK_EMP 0.0625
SALGRADE 0.0625

8 rows selected

另一種表實際使用的空間。這樣查詢:
SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
DEPT
EMP
BONUS
SALGRADEanalyze table emp compute statistics;
ITEMS
DEPT_COPY
DEPT_COPY2

SQL> analyze table DEPT_COPY2 compute statistics;

檢視某個表屬於哪個表空間:
SQL> select tablespace_name from all_tables where table_name='SYS_EXPORT_FULL_01';

建立表時指定表空間:
SQL>create table a (name varchar(10)) tablespace test;

檢視資料庫表結構:

SQL> desc dept_copy2;
Name Type Nullable Default Comments
------ ------------ -------- ------- --------
DEPTNO NUMBER(2) Y
DNAME VARCHAR2(14) Y
LOC VARCHAR2(13) Y

修改表的列名:
SQL> alter table users rename column ID to PID;

修改表的列的字元大小

SQL> alter table student modify class varchar2(10);

建立主鍵:
SQL> alter table users add constraint pk_users primary key(name);

修改表的列資料型別:
SQL> select * from users;

NAME AGE PID
---------- ---------- ----------
趙霞 3.2012E+18
李莉 3.2012E+18

SQL> alter table users add(newColumn varchar2(20));
SQL> update users set newColumn = PID;
SQL> commit;
SQL> alter table users drop column PID cascade constraints;
SQL> alter table users rename column newColumn to PID;
SQL> commit;

SQL> desc users;
名稱 是否為空? 型別
----------------------------------------- -------- ----------------------------
NAME NOT NULL VARCHAR2(10)
AGE NUMBER
PID VARCHAR2(20)

SQL> select * from users;

NAME AGE PID
---------- ---------- --------------------
趙霞 3201231988001010101
李莉 3201231988001010102

建立序列:
SQL> create sequence seq_PID
start with 3201231988001010101
maxvalue 3201231999999999999
minvalue 3201231988001010101
nocycle
cache 100;

建立觸發器:
SQL> create or replace trigger trigger_users
before insert on users
for each row
begin
select seq_PID.nextval into :new.PID from dual;
end;
/

檢視使用者序列

SQL> select sequence_name from USER_SEQUENCES;

SEQUENCE_NAME
------------------------------
SEQ_ID

檢視使用者觸發器

SQL> select * from user_triggers where table_name = upper('job');

通過group by 語句使用rollup運算子彙總ID列

SQL> select ID,avg(age),sum(age),max(age),count(*)
2 from job group by rollup(ID);

ID AVG(AGE) SUM(AGE) MAX(AGE) COUNT(*)
---------- ---------- ---------- ---------- ----------
1583 25 25 25 1
1584 24 24 24 1
1585 25 25 25 1
1586 25 25 25 1
1587 23 23 23 1
1683 22 22 22 1
1684 24 24 24 1
1685 25 25 25 1
1686 24 24 24 1
1687 22 22 22 1
1688 28 28 28 1

ID AVG(AGE) SUM(AGE) MAX(AGE) COUNT(*)
---------- ---------- ---------- ---------- ----------
1689 26 26 26 1
1690 26 26 26 1
1783 35 35 35 1
1784 1
1883 24 24 24 1
1884 1
25.2 378 35 17

having子句與group by 子句一般一起使用,可以在彙總相關資料後進一步篩選彙總的資料。

SQL> select ID,avg(age),sum(age),max(age),count(*)
2 from job group by id having avg(age)>25;

ID AVG(AGE) SUM(AGE) MAX(AGE) COUNT(*)
---------- ---------- ---------- ---------- ----------
1690 26 26 26 1
1783 35 35 35 1
1689 26 26 26 1
1688 28 28 28 1

多表連線查詢

SQL> select job.name,job.id,job.job,job.age,users.name,users.age from job,users
2 where job.name=users.name;

NAME ID JOB AGE NAME AGE
-------- ---------- ---------- ---------- ---------- ----------
陳靈靈 1783 KTV服務員 35 陳靈靈 38
李莉 1587 IT程式設計師 23 李莉
趙霞 1683 空姐 22 趙霞

desc 在oracle資料庫裡有兩種用法,一是查詢表的結構 格式:desc table_name
二是在用排序時(order by)是降序的關鍵字 格式 :order by column_name desc;

查看錶的segment大小,即表實際佔用的物理大小,無論是否使用。

SQL> select segment_name,partition_name,bytes,blocks,extents from user_segments where segment_name='JOBS'; (segment名,即表明)
SQL> select segment_name,partition_name,count(extent_id),sum(bytes),sum(blocks) from user_extents where segment_name='JOBS' group by segment_name,partition_name;

五、檢視、管理ORACLE常用的引數、配置等

檢視控制檔案:
SQL> select name from v$controlfile;

檢視重做日誌檔案,簡稱日誌檔案:
SQL> select * from v$logfile;

查看錶的索引:
SQL>select index_name,index_type,table_name from user_indexes where table_name='表名';

修改oracle時間格式:
SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';

指定開啟某個監聽:
SQL>lsnrctl start orc5_lisenter(此處是當初建監聽時建立的監聽名)

資料庫SCN及時間查詢。

SQL> select sysdate from dual; 檢視資料庫時間

SYSDATE
-----------------
20131216 23:52:55

SQL> select dbms_flashback.get_system_change_number from dual; 檢視當前資料庫的SCN號

GET_SYSTEM_CHANGE_NUMBER
------------------------
1583042

SQL> select to_char(scn_to_timestamp(1583042),'yyyy-mm-dd hh24:mi:ss') from dual; 根據資料庫的SCN號查詢對應的資料庫時間

TO_CHAR(SCN_TO_TIME
-------------------
2013-12-16 23:45:38

SQL> select timestamp_to_scn(to_date('2013-12-16 15:30:19','yyyy-mm-dd hh24:mi:ss')) from dual; 根據資料庫的時間查詢對應的資料庫SCN號

TIMESTAMP_TO_SCN(TO_DATE('2013-12-1615:30:19','YYYY-MM-DDHH24:MI:SS'))
----------------------------------------------------------------------
1519388

SQL> select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where rownum<10; 條件查詢,查詢rownum小於10的SCN以對應的時間。

TIME_DP SCN
----------------- ----------
20131216 15:53:02 1584574
20131216 15:46:45 1583098
20131216 15:45:20 1583022
20131216 15:39:08 1582399
20131216 15:37:01 1581998
20131216 15:31:08 1579915
20131216 14:46:02 1577210
20131216 14:40:16 1576196
20131216 14:35:12 1575597

9 rows selected.

資料庫遊標設定

SQL> show parameter open_cursors; 檢視遊標引數
SQL> select count(*) from v$open_cursor; 檢視開啟的遊標
SQL> select name,value from v$sysstat where name ='opened cursors current';檢視當前開啟的遊標
SQL> alter system set open_cursors=3000 scope=both; 修改預設遊標數

六、檢視、配置ORACLE重做日誌

建立日誌檔案組:
SQL> alter database add logfile group 4
(
'/oracle/oradata/orc6/redo04.log'
)
size 10M;

檢視日誌檔案組

SQL> select group#,status,member from v$logfile;

為日誌檔案組增加日誌檔案:

SQL> alter database add logfile member '/oracle/oradata/orc6/redo05.log' to group 3;

檢視日誌檔案大小

SQL> select GROUP#,BYTES,BLOCKSIZE,MEMBERS from v$log;

七、desc的常用查詢

SQL> desc dba_temp_files; 查詢臨時表空間

SQL> desc v$database; 檢視資料庫

SQL> desc dba_data_files; 檢視資料檔案

SQL> desc user_segments; 檢視oracle segment(段)

SQL> desc dba_segments; 檢視ORACLE segment

SQL> desc dba_tables; 查看錶
SQL> desc dba_objects 檢視物件
SQL> desc dba_users; 檢視使用者
SQL> desc dba_tablespaces; 查看錶空間

SQL> desc user_segments; 檢視資料段

SQL> desc dba_jobs; 檢視job

SQL> desc dba_role_privs; 檢視角色許可權

SQL> desc dba_constraints 檢視約束

SQL> desc dba_cons_columns 檢視列約束

SQL> show parameter log_archive_dest; 檢視archive log所在位置

SQL> archive log list; 檢視歸檔目錄以及log sequence

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE; 檢視flash_recovery_area 使用情況。

SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; 計算flash_recovery_area已經佔用的空間。

SQL> show parameter recover; 查詢recovery目錄

SQL> desc v$process 通過v$process檢視,我們獲的是當前系統中所有程序資訊,包括“後臺程序”,也包括“伺服器程序”。
SQL> select addr, program from v$process;


SQL> desc v$bgprocess 通過v$bgprocess檢視,我們獲得當前系統中啟動的Oracle“後臺程序”資訊
SQL> select paddr, name from v$bgprocess where paddr<>'00';

通過v$bgprocess.paddr與v$process.addr關聯起來的,關聯後查詢結果顯而易見只會有Oracle“後臺程序”的資訊
SQL> select a.paddr, a.name, a.description from v$bgprocess a, v$process b where a.paddr=b.addr;

八、檢視ASM磁碟組資訊

SQL> desc v$asm_disk;

SQL> desc v$asm_diskgroup;

九、常用SQL命令列設定

1、set

set wrap on/off 查詢返回的紀錄每行超過預設寬度時,可選擇換行(on )或不換行(off),預設為換行;
set linesize N 設定查詢返回的紀錄每行的寬度,超過這個寬度則截掉,不過這個寬度則補空格。