SELECT event, total_waits, total_timeouts,time_waited, average_wait
FROM v$system_event
select sid, event, total_waits,average_wait
from v$session_event where sid=10;
SELECT sid, seq#, event, wait_time, state
FROM v$session_wait;
select * from v$sgastat;
select gethitratio
from v$librarycache
where namespace = 'SQL AREA';
select sql_text, users_executing,
executions, loads
from v$sqlarea;
select sum(pins) "Executions", sum(reloads) "Cache Misses",
sum(reloads)/sum(pins)
from v$librarycache;
select namespace,pins,reloads,invalidations
from v$librarycache;
select name, waits, gets, waits/gets "Ratio"
from v$rollstat a, v$rollname b
where a.usn = b.usn;
select df.tablespace_name name,df.file_name "file",f.phyrds pyr,
f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw
from v$filestat f, dba_data_files df
where f.file# = df.file_id
order by df.tablespace_name;
select substr(a.file#,1,2) "#", substr(a.name,1,30) "Name",
a.status, a.bytes, b.phyrds, b.phywrts
from v$datafile a, v$filestat b
where a.file# = b.file#;
select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name
from user_ind_columns, user_indexes
where user_ind_columns.index_name = user_indexes.index_name
and user_ind_columns.table_name = user_indexes.table_name
order by user_indexes.table_type, user_indexes.table_name,
user_indexes.index_name, column_position;
select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio",
(1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "Hit ratio"
from v$rowcache
where gets+getmisses <>0
group by parameter, gets, getmisses;
select sum(pins) "Total Pins", sum(reloads) "Total Reloads",
sum(reloads)/sum(pins) *100 libcache
from v$librarycache;
select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent"
from v$librarycache;
select count(name) num_instances ,type ,sum(source_size) source_size ,
sum(parsed_size) parsed_size ,sum(code_size) code_size ,sum(error_size) error_size,
sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required
from dba_object_size
group by type order by 2;
select name, gets, misses, immediate_gets, immediate_misses,
Decode(gets,0,0,misses/gets*100) ratio1,
Decode(immediate_gets+immediate_misses,0,0,
immediate_misses/(immediate_gets+immediate_misses)*100) ratio2
FROM v$latch WHERE name IN ('redo allocation', 'redo copy');
SELECT name, value FROM v$sysstat WHERE name IN ('sorts (memory)', 'sorts (disk)');
select (sum(pins - reloads)) / sum(pins) "lib cache" from v$librarycache;
select (sum(gets - getmisses - usage - fixed)) / sum(gets) "row cache" from v$rowcache;
select sum(pins) "executions", sum(reloads) "cache misses while executing" from v$librarycache;
后者除以前者 , 此比率小于 1%, 接近 0% 为好
select sum(gets) "dictionary gets",sum(getmisses) "dictionary cache get misses"
from v$rowcache
select * from sys.props$ where name='NLS_CHARACTERSET';
select busy/(busy+idle) "shared servers busy" from v$dispatcher;
此值大于 0.5 时,参数需加大
select sum(wait)/sum(totalq) "dispatcher waits" from v$queue where type='dispatcher';
select count(*) from v$dispatcher;
select servers_highwater from v$mts;
servers_highwater 接近 mts_max_servers 时,参数需加大
select tablespace_name,count(tablespace_name) from dba_free_space group by tablespace_name
having count(tablespace_name)>10;
alter tablespace name coalesce;
alter table name deallocate unused;
create or replace view ts_blocks_v as
select tablespace_name,block_id,bytes,blocks,'free space' segment_name from dba_free_space
union all
select tablespace_name,block_id,bytes,blocks,segment_name from dba_extents;
select * from ts_blocks_v;
select tablespace_name,sum(bytes),max(bytes),count(block_id) from dba_free_space
group by tablespace_name;
查看碎片程度高的表
SELECT segment_name table_name , COUNT(*) extents
FROM dba_segments WHERE owner NOT IN ('SYS', 'SYSTEM') GROUP BY segment_name
HAVING COUNT(*) = (SELECT MAX( COUNT(*) ) FROM dba_segments GROUP BY segment_name);
17. 表、索引的存储情况检查
select segment_name,sum(bytes),count(*) ext_quan from dba_extents where
tablespace_name='&tablespace_name' and segment_type='TABLE' group by tablespace_name,segment_name;
select segment_name,count(*) from dba_extents where segment_type='INDEX' and owner='&owner'
group by segment_name;
18 、找使用 CPU 多的用户 session
12 是 cpu used by this session
select a.sid,spid,status,substr(a.program,1,40) prog,a.terminal,osuser,value/60/100 value
from v$session a,v$process b,v$sesstat c
where c.statistic#=12 and c.sid=a.sid and a.paddr=b.addr order by value desc;
SQL> col tablespace format a20 -- 在显示中指明列的输出格式
SQL> select b.file_id -- 文件 ID,
b.tablespace_name -- 表空间 ,
b.file_name -- 物理文件名 ,
b.bytes -- 总字节数 ,
(b.bytes-sum(nvl(a.bytes,0))) -- 已使用 ,
sum(nvl(a.bytes,0)) -- 剩余 ,
sum(nvl(a.bytes,0))/(b.bytes)*100 -- 剩余百分比
from dba_free_space a,dba_data_files b
where a.file_id=b.file_id
group by b.tablespace_name,b.file_name,b.file_id,b.bytes
order by b.tablespace_name
/
dba_free_space -- 表空间剩余空间状况
dba_data_files -- 数据文件空间占用情况
select segment_name,owner,tablespace_name,segment_id,file_id,status from dba_rollback_segs;
select tablespace_name,count(*),sum(blocks),sum(bytes)/1024/1024
from dba_data_files
group by tablespace_name;
select df.tablespace_name " 表空间名 ",totalspace " 总空间 M",freespace " 剩余空间 M",round((1-freespace/totalspace)*100,2) " 使用率 %"
from (select tablespace_name,round(sum(bytes)/1024/1024) totalspace
from dba_data_files
group by tablespace_name) df,
(select tablespace_name,round(sum(bytes)/1024/1024) freespace
from dba_free_space
group by tablespace_name) fs
where df.tablespace_name=fs.tablespace_name;
select t.name,d.name from v$tablespace t,v$datafile d where t.name='DATA_HOST_A' and t.ts#=d.ts#;alter tablespace DATA_HOST_A offline;
drop tablespace DATA_HOST_A including contents;
select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;
alter tablespace 表空间名 add datafile '/u1/oradata/userdata_002.ora' size 50m; --Unix
alter tablespace 表空间名 add datafile 'c:/oradata/userdata_002.ora' size 50m; --Windows NT
alter database datafile '/u1/oradata/userdata_001.ora' resize 50M; --Unix
alter database datafile 'c:/oradata/userdata_002.ora' resize 50M; --Windows NT
select substr(vses.username,1,12) "ORA_USER", substr(osuser,1,12) "OS_USER",
substR(sql_text,1,50) "SQL_STMT"
from
V$sqlarea vsql, V$session vses, V$sort_usage vsort
where
vsort.tablespace = 'TEMP' and vsort.sqladdr=vses.sql_address and vsql.address=vsort.sqladdr
select tablespace_name, extent_size, total_extents, used_extents, free_extents, max_used_size
from v$sort_segment;
select segment_name,exten from dba_extents -- 确定盘区的内容
desc dba_segments -- 确定段的内容
-- 返回了结果表明碎片的严重
select segment_name ,tablespace_name,extents,segment_type from dba_segments where extents>4
-- 空间碎片严重程度
select tablespace_name ,count(tablespace_name) from dba_free_space group by tablespace_name
having count(tablespace_name) >10
set transaction use rollback segment rollback_segment_name -- 指定回滚段
-- 光标的使用
declare @name char(30)
declare @homebase char(40)
declare @style char(20)
declare @arttist_id int
create artist_cursor cursor
for select * from dim_age
open artist_cursor
fetch artist_cursor into @arttist_id,@homebase,@style
while (@@sqlstatus=0)
begin
print @homebase
print @style
print @arttist_id
end
close artist_cursor
deallocate cursor artist_cursor
go
-- 数据导出导入
exp dss/dss@oralce query=/"where day_id > 12/" tables=(customer) file= d:/sample.dmp log=
rows=n
full=y tables=() owner= -- 三种导出方式
imp userid/pwd@oracle_sid fromuser =( dss,dwh) touser =(dss,dwh) dwh file=sample.dmp
-- 分区表的到导出 user1.table_name:px 分区 px
exp user_id/pwd@oracle_sid tables=(user1.table_name:px) file=sample.dmp
1. 打开 ini.ora 文件
2. 修改文件内容
log_archive_start = true
log_archive_dest_1 = "location=D:/Oracle/oradata/ORACLE/archive"
log_archive_format = %%ORACLE_SID%%T%TS%S.ARC
3. 进入服务管理器输入
shutdown
startup mount
alter database archivelog
alter database open
此时数据库运行与归档模式下可以查询输入
archive log list
-- 要对数据库做热备份需要数据库运行在归档模式下 :
-- 首先使表空间处于备份状态
-- 拷贝数据文件
-- 使表空间回复到正常状态
-- 进入 sqlplus 输入:
alter tablespace users begin backup ;
$ copy d:/oracle_home/usr.ora d:/backup/user.dbf;
alter tablespace users end backup ;
alter system checkpoint ;
-- 恢复数据库需要做如下的步骤:
-- 将映像备份文件拷贝到各个表空间对应的正确的位置
svrmgrl
connect internal
startup mount
alter database open
recover database
1 、查看当前所有对象
SQL> select * from tab;
2 、建一个和 a 表结构一样的空表
SQL> create table b as select * from a where 1=2;
SQL> create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;
SQL> select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual;
SQL> copy from user1 to user2 create table2 using select * from table1;
SQL> create view a as select b1,b2 from b group by b1,b2;
SQL> grant connect,resource to test identified by test default tablespace users;
SQL>alter user test quota 100M on users-- 在指定的表空间中为某个用户分配资源
SQL> conn test/test
如果不给用户 connect 和 resource 角色的话那么他们在指定的表空间中将
无法创建对象,比如 create table
alter user test account unlock/lock;
runInstaller -responsefile filename [-silent] [-nowelcome]
Set REMOTE_LOGIN_PASSWORDFILE to NONE
CONNECT / AS SYSDBA
CONNECT / AS SYSOPER
$orapwd file=$ORACLE_HOME/dbs/orapw SID password=admin entries=10
Set REMOTE_LOGIN_PASSWORDFILE to EXCLUSIVE or SHARED
CONNECT INTERNAL/CONNECT
STARTUP PFILE=/DISK1/initU15.ora
STARTUP[FORCE][RESTRICT][PFILE=filename][OPEN RECOVER][ database]|MOUNT|NOMOUNT]
ALTER DATABASE database MOUNT;
ALTER DATABASE database OPEN READ
ALTER DATABASE database OPEN READ ONLY;
ALTER DATABASE { MOUNT | OPEN }
ALTER DATABASE OPEN [READ WRITE| READ ONLY]
CREATE MATERIALIZED VIEW LOG ON sales
WITH SEQUENCE, ROWID
(prod_id, cust_id, time_id, channel_id, promo_id, quantity_sold, amount_sold)
INCLUDING NEW VALUES; 首先创建视图日志
CREATE MATERIALIZED VIEW sum_sales
PARALLEL
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT s.prod_id, s.time_id,COUNT(*) AS count_grp,SUM(s.amount_sold) AS sum_dollar_sales,
COUNT(s.amount_sold) AS count_dollar_sales,SUM(s.quantity_sold) AS sum_quantity_sales,
COUNT(s.quantity_sold) AS count_quantity_sales
FROM sales s
GROUP BY s.prod_id, s.time_id; 然后创建视图
-- 创建表空间
create tablespace space_name1 datafile '/oradata/space_name1.dbf' size 100m
-- 创建分区表
create table mx_xsmx (cat char(1) , product varchar(20))
partition by range(cat) 有 range hash list 三种分区方法
(partition xsmx_01 values less than ('B') tablespace space_name1,
partition xsmx_02 values less than (maxvalue) tablespace space_name1)
-- 添加分区
alter table mx_xsmx add partition xsmx_03 values less than ('Z')
-- 将某一个分区割裂
alter table mx_xsmx split partition xsmx_03 at ('G') into (partition xsmx_04,partition xsmx_05)
-- 删除分区
alter table mx_xsmx drop partition xsmx_04
alter table mx_xsmx truncate partition xsmx_04
alter table mx_xsmx rename partition xsmx_04 to xsmx_06
alter table mx_xsmx modify partition xsmx_01
storage (next 1m pctincrease 0)
-- 分区表的导出 某个分区
exp sales/sales_password tables=mx_xsmx:xsmx_01 rows=Y
file=sales1999_q1.dmp
---- 6 、 IMPORT 分区:
---- ORACLE8 的 IMPORT 工具可在表的分区以及导入数据,例如在 2001 年,用户要查看 1999 年的数据, DBA 必须导入 1999 年的数据,使之在线,操作如下: STEP1 、建立表的 1999 年的四个表空间和相应的分区,参照( 2 ); STEP2 、导入数据:
oracle$ imp sales/sales_password FILE =sales1999_q1.dmp
TABLES = (sales:sales1999_q1) IGNORE=y
-- 选择指定的分区来查询结果
select * from mx_xsmx partition (xsmx_04) where DeptNo between 11 and 20
-- 对分区表来作索引
create index index_name on table_name(DeptNO 列名 )
local (partition part1 tablespace space_idx1, partition part2 tablespace space_idx2)
CREATE TABLE MB_CPZ (
YWFWDM VARCHAR2 (4),
CPZDM VARCHAR2 (2))
TABLESPACE DWSDATA
PCTFREE 10 -- 本参数设置为非零的时候后台 SMON 进程会自动合并相邻的自由范围 .
PCTUSED 40 -- 为恢复 INSERT 操作而设定的。
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 65536 -- 初始范围为 65536 个字节就是 64K , oracle 的块大小我们设定为 8K 。这也是 Oracle 给出的默认值
NEXT 0 -- Oracle 将不会考虑这个设置的值
MINEXTENTS 1 -- 最少 1 个范围
MAXEXTENTS 2147483645 -- 最大范围 Oracle 将不会考虑这个设置的值
FREELISTS 1 FREELIST GROUPS 1 )
NOCACHE; 不放入高速缓存
[LOGGING|NOLOGGING] 所有的对表的操作都要记入 REDOLOG , ORACLE 建议使用 NOLOGGING ;
ALTER TABLE 名称 PCTFREE 20 PCTUSED 50 STOAGE ( MAXEXTENTS 1000 );
ALTER TABLE 名称 ALLOCATE EXTENT ( SIZE 500K DATAFILE ' ' );
1 、逻辑上:
单列索引 复合索引 唯一索引 非唯一索引
2 、物理上:
B-TREE OR BITMAP
B-TREE ( NORMAL 和反向索引)
CREATE INDEX 名称 ON 表名(列名) PCTFREE 30 STORAGE (。。。。。) TABLESPACE 名称没有定义 PCTUSED :索引是按照一定存储的,如果通过 PCTUSED 允许恢复对 BLOCK 的 INSERT 操作,可能影响 INDEX 的效率。
1 、索引对查询性能有提高,但对 DML 语句有影响。
2 、索引也应该放在一个专用的表空间
3 、定义索引的 EXTENT 的大小时, =5*DB BLOCK
4 、建立索引时,应采用 NOLOGGING 方式。
ALTER INDEX 名称 STORAGE (新值)
1 、 ALTER INDEX 名称 ALLOCATE EXTENT ( SIZE 200K DATAFILE ' 。。 ' )
1 、提高查询性能
2 、当一个索引重建时,老的索引会在新索引建立完成后,被删除。
3 、新索引建立过程中,老的索引仍可用于查询。
4 、硬盘的开销大,
DROP INDEX 名称
1 、 DBA_INDEXES: 建索引的参数
2 、 DBA_IND_COLUMNS:
1 、 TABLESPACE QUOTAS :表空间的使用定额
2 、 DEFAULT TABLESPACE :默认表空间
3 、 TEMPORARY TABLESPACE :指定临时表空间。
4 、 ACCOUNT LOCKING :用户锁
5 、 RESOURCE LIMITE :资源限制
6 、 DIRECT PRIVILEGES :直接授权
7 、 ROLE PRIVILEGES :角色授权先将应用中的用户划为不同的角色,
1 、选择一个用户名称和检验机制: A ,看到用户名,实际操作者是谁,业务中角色。
2 、选择合适的表空间:
3 、决定定额:
4 、口令的选择:
5 、临时表空间的选择:先建立一个临时表空间,然后在分配。不分配,使用 SYSTEM 表空间
6 、 CREATE USER
7 、授权: A ,用户的工作职能 B ,用户的级别
1 、命令:
CREATE USER 名称 IDENTIFIED BY 口令 DEFAULT TABLESPACE 默认表空间名 TEMPOARAY TABLESPACE 临时表空间名 QUOTA 15M ON 表空间名
[PASSWORD EXPIRE] :当用户第一次登陆到 ORACLE ,创建时所指定的口令过期失效,强迫用户自己定义一个新口令。 [ACCOUNT LOCK] :加用户锁
QUOTA UNLIMITED ON TABLESPACE :不限制,有多少有多少。
[PROFILE 名称 ] :受 PROFILE 文件的限制。
1 、强迫用户修改口令: ALTER USER 名称 IDENTIFIED BY 新口令 PASSWORD EXPIRE ;
2 、给用户加锁: ALTER USER 名称 ACCOUNT [LOCK|UNLOCK]
3 、注意事项:
A 、所有操作对当前连接无效
B 、 1 的操作适用于当用户忘记口令时。
1 、命令: ALTER USER 名称 QUOTA 0 ON 表空间名
ALTER USER 名字 QUOTA (数值) K|M|UNLIMITED ON 表空间名;
2 、使用方法:
A 、控制用户数据增长
B 、当用户拥有一定的数据,而管理员不想让他在增加新的数据的时候。
C 、当将用户定额设为零的时候,用户不能创建新的数据,但原有数据仍可访问。
1 、 DROP USER 名称 适合于删除一个新的用户
2 、 DROP USER 名称 CASCADE : 删除一个用户,将用户的表,索引等都删除。
3 、对连接中的用户不好用。
1 、 DBA_USERS: 用户名,状态,加锁日期,默认表空间,临时表空间
2 、 DBA_TS_QUOTAS: 用户名,表空间名,定额。
两个表的连接字段: USERNAME
GRANT CREATE SESSION TO 用户名
1 、 CPU 的时间
2 、 I/O 的使用
3 、 IDLE TIME (空闲时间)
4 、 CONNECT TIME (连接时间)
5 、并发会话数量
6 、口令机制:
1 、所有的用户创建时都会被指定这个 PROFILE
2 、 DEFAULT PROFILE 的内容为空,无限制
1 、 CALL 级 LIMITE :
对象是语句:
当该语句资源使用溢出时:
A 、该语句终止
B 、事物回退
C 、 SESSION 连接保持
2 、 SESSION 级 LIMITE :
对象是:整个会话过程
溢出时:连接终止
1 、 CREATE PROFILE
2 、分配给一个用户
3 、象开关一样打开限制。
1 、命令: CREATE PROFILE 名称
LIMIT
SESSION_PER_USER 2
CPU_PER_SESSION 1000
IDLE_TIME 60
CONNECT_TIME 480
1 、 SESSION 级 LIMITE :
CPU_PER_SESSION: 定义了每个 SESSION 占用的 CPU 的时间:( 1/100 秒)
2 、 SESSION_PER_USER: 每个用户的并发连接数
3 、 CONNECT_TIME: 一个连接的最长连接时间(分钟)
4 、 LOGICAL_READS_PER_SESSION: 一次读写的逻辑块的数量
5 、 CALL 级 LIMITE
CPU_PER_CALL: 每个语句占用的 CPU 时间
LOGICAL_READS_PER_CALL:
CREATE USER 名称。。。。。。
PROFILE 名称
ALTER USER 名称 PROFILE 名称
1 、 RESOURCE_LIMT: 资源文件中含有
2 、 ALTER SYSTEM SET RESOURCE_LIMIT=TRUE ;
3 、默认不打开
1 、 ALTER PROFILE 名称参数 新值
2 、对于当前连接修改不生效。
1 、 DROP PROFILE 名称
删除一个新的尚未分配给用户的 PROFILE ,
2 、 DROP PROFILE 名称 CASCADE
3 、注意事项
A 、一旦 PROFILE 被删除,用户被自动加载 DEFAULT PROFILE
B 、对于当前连接无影响
C 、 DEFAULT PROFILE 不可以被删除
1 、 DBA_USERS:
用户名, PROFILE
2 、 DBA_PROFILES:
PROFILE 及各种限制参数的值
每个用户的限制: PROFILE (关键字段)
1 、限制内容
A 、限制连续多少次登录失败,用户被加锁
B 、限制口令的生命周期
C 、限制口令的使用间隔
2 、限制生效的前提:
A RESOURCE_LIMIT:=TRUE
B ORACLE/RDBMS/ADMIN/UTLPWDMG.SQL
3 、如何创建口令机制:
CREATE PROFILE 名称
SESSIONS_PER_USER
.....
password_life_time 30
failed_log_attempts 3
password_reuse_time 3
4 、参数的含义:
A FAILED_LOGIN_ATTEMPTS:
当连续登陆失败次数达到该参数指定值时,用户加锁
B PASSWORD_LOCK_TIME: 加锁天数
C PASSWORD_LIFE_TIME: 口令的有效期(天)
D PASSWORD_GRACE_TIME: 口令修改的间隔期(天)
E PASSWORD_REUSE_TIME: 口令被修改后原有口令隔多少天被重新使用。
F PASSWORD_REUSE_MAX: 口令被修改后原有口令被修改多少次被重新使用。
1 SYSTEM 授权 : 允许特定的用户对特定的一类对象做特定的操作 . 可操作的对象 :TABLES,INDEXES,PROCEDURES,SEGMENTS; 系统授权是对某一类对象 .
GRANT SELECT ANY TABLE TO ZT
2 OBJECT( 对象授权 ):
A 允许一个特定的用户对一个特定的对象做特定的操作 . 对象 :TABLE,INDEX,SEGMENT,..
GRANT UPDATE ON EMP TO ZT
1 ORACLE 中有超过 80 种以上的 SYSTEM 授权
2 几乎所有的 SYSTEM 授权包含 ANY 关键字
3 SYSTEM 授权 :GRANT 授权
4 SYSTEM 授权 :REVOKE 回收
5 允许用户做系统一级的操作 , 建表空间 , 建 SESSION.
6 最常用的系统授权 :
INDEX:CREATE ANY INDEX
ALTER ANY INDEX
DROP ANY INDEX
TABLE:CREATE ANY TABLE
ALTER .........
DROP .........
SELECT .......
UPDATE.........
SESSION:CREATE SESSION
ALTER SESSION
RESTRICTED SESSION
TABLESPACE: CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
1 命令格式
GRANT CREATE SESSION,SELECT ANY TABLE TO [USERNAME|PUBLIC|ROLE]
2 带有转授权限 :
A 转授 : 当 A 用户得到系统授权后 , 如果可以将这个权限授给别人 , 称转授 .
GRANT CREATE SESSION,SELECT ANY TABLE
TO [USERNAME|PUBLIC|ROLE] WITH ADMIN OPTION
举例 :
1 SYSTEM->ZT
GRANT CREATE SESSION TO ZT WITH ADMIN OPTION
ZT 用户可以拥有 CREATE SESSION 权限
2 ZT->OLM
GRANT CREATE SESSION TO OLM,
ZT,OLM 也有了 .
1 SYSOPER:SYSTEM OPERATOR: 系统操作员
STARTUP,SHUTDOWN;
ALTER DATABASE[MOUNT|OPEN];
RECOVER TABLESPACE
BACKUP DATABASE
ARCHIVELOG OR NOARCHIVELOG;
2 SYSDBA
SYSTEM DABASE ADMIN: 数据库管理员 ,
SYSOPER WITH ADMIN OPTION
RECOVER DATABASE
CREATE DATABASE
DBA_SYS_PRIVS
GRANTEE: 得到权限的人
PRIVILEGE: 得到何种权限
ADMIN OPTION: 是否可以转授
想知道 SCOTT 有多少权限
SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE='SCOTT'
REVOKE 权限 FROM [USERNAME|PUBLIC|ROLE]
举例 :
SYSTEM->ZT(CREATE SESSION WITH ADMIN OPTION)
ZT->OLM(CREATE SESSION)
TABLE: ALTER DELETE SELECT UPDATE INSERT
INDEX:DELETE INSERT SELECT UPDATE
CREATE, 对象是已经存在的事物 , 授权者是所有者 .
一 , 授权 :
GRANT UPDATE(ENAME) ON EMP TO ZT WITH GRANT OPTION
二信息获取
1 DBA_TAB_PRIVS:
GRANTEE: 得到者
GRANTOR: 授权者
PRIVILEGE: 权限
GRANTABLE: 是否可以转授
OWNER: 所有者
三 回收对象授权
1 REVOKE 权限 FROM 用户
第十五章 : 角色管理
一 , 角色及其特点 :
1, 角色实际上是若干权限的集合体
2,DBA 通过为应用中的不同用户 , 不同职责 , 定义不同的角色 , 可以达到减少工作量的目的 .
3, 角色的使用同授权一样 , 可以用 GRANT 授权 ,REVOKE 回收 .
4, 角色可以象开关一样打开关闭
5, 角色的使用可以提高性能 .
6, 角色的使用可以大大减少工作量
二 建立角色
1 CREATE ROLE 名
2 CREATE ROLE 名
IDENTIFIED BY 口令
三 修改角色
1 ALTER ROLE 名称 IDENTIFIED BY 口令
将没有口令的加一个口令
2ALTER ROLE 名称 NOT IDENTIFIED
将有口令的变为没有口令
三 分配一个角色
GRANT ROLE 名 TO 用户名
四 回收一个角色
REVOKE ROLE 名 FROM 用户名
五 如何创建一个默认角色
只有设为默认角色 , 才可以在用户登录时 , 使角色所含有的权限生效
1 ALTER USER SCOTT
DEFAULT ROLE 角色 1, 角色 2
2 ATLER USR SCOTT
DEFAULT ROLE ALL
3 ALTER USER SCOTT DEFAULT ROLE ALL EXCEPT 角色名
4 ALTER USER SCOTT DEFAULT ROLE NONE
六 打开和关闭角色 :
1 SET ROLE 名称
2 SET ROLE IDENTIFIED BY 口令 ,( 建立角色时 , 带口令 )
3 SET ROLE NONE
七 删除角色
DROP ROLE 名称
八 信息获取
DBA_ROLE:
DBA_ROLE_PRIVS:
九 如何向角色里加权限 :
GRANT 权限 TO 角色名
REVOKE 权限 FROM 角色名
角色 :1 不能跟用户名重复
2 ROLE 的 ALTER 和其他对象的 ALTER 不一样 ,ROLE 的 ALTER 不能修改 ROLE 的内容 , 只可以修改角色的认证方式
如果服务器的初始化参数中 global_names 的值为 TRUE 那么就要求你创建的连接名称必须与 SID 相同,如果改成 FALSE 就可以按如下的方式创建了
create public database link link_name connect to user_name identified by passwd using ‘connecting_string’
然后可以创建一个同义词为使用方便起见。
create synonyms synonyms_name for @ link_name
回滚段用于存放数据修改之前的值(包括数据修改之前的位置和值)。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。
事务回滚 :当事务修改表中数据的时候,该数据修改前的值(即前影像)会存放在回滚段中,当用户回滚事务( ROLLBACK )时, ORACLE 将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。
事务恢复 :当事务正在处理的时候,例程失败,回滚段的信息保存在重做日志文件中, ORACLE 将在下次打开数据库时利用回滚来恢复未提交的数据。
读一致性 :当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。而且,当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改(语句级读一致性)。当 ORACLE 执行 SELECT 语句时, ORACLE 依照当前的系统改变号( SYSTEMCHANGENUMBER-SCN )来保证任何前于当前 SCN 的未提交的改变不被该语句处理。可以想象:当一个长时间的查询正在执行时,若其他会话改变了该查询要查询的某个数据块, ORACLE 将利用回滚段的数据前影像来构造一个读一致性视图。
事务级的读一致性
ORACLE 一般提供 SQL 语句级( SQLSTATEMENTLEVEL )的读一致性,可以用以下语句来实现事务级的读一致性。
SET TRANSACTION READONLY ;
或:
SET TANNSACTION SERIALIZABLE ;
以上两个语句都将在事务开始后提供读一致性。需要注意的是,使用第二个语句对数据库的并发性和性能将带来影响。
系统回滚段:当数据库创建后,将自动创建一个系统回滚段,该回滚段只用于存放系统表空间中对象的前影像。
非系统回滚段:拥有多个表空间的数据库至少应该有一个非系统回滚段,用于存放非系统表空间中对象的数据前影像。非系统回滚段又分为私有回滚段和公有回滚段,私有回滚段应在参数文件的 ROLLBACKSEGMENTS 参数中列出,以便例程启动时自动使其在线( ONLINE )。公有回滚段一般在 OPS ( ORACLE 并行服务器)中出现,将在例程启动时自动在线。
DEFERED 回滚段:该回滚段在表空间离线( OFFLINE )时由系统自动创建,当表空间再次在线( ONLINE )时由系统自动删除,用于存放表空间离线时产生的回滚信息。
分配回滚段:当事务开始时, ORACLE 将为该事务分配回滚段,并将拥有最少事务的回滚段分配给该事务。事务可以用以下语句申请指定的回滚段:
SET TRANSTRACTION USE ROLLBACK SEGMENT rollback_segment
事务将以顺序,循环的方式使用回滚段的区( EXTENTS ),当当前区用满后移到下一个区。几个事务可以写在回滚段的同一个区,但每个回滚段的块只能包含一个事务的信息。
例如(两个事务使用同一个回滚段,该回滚段有四个区):
1 、事务在进行中,它们正在使用回滚段的第三个区;
2 、当两个事务产生更多的回滚信息,它们将继续使用第三个区;
3 、当第三个区满后,事务将写到第四个区,当事务开始写到一个新的区时,称为翻转( WRAP );
4 、当第四个区用满时,如果第一个区是空闲或非活动(使用该区的所有事务完成而没有活动的事务)的,事务将接着使用第一个区。
回滚段的扩张( EXTEND )
当当前回滚段区的所有块用完而事务还需要更多的回滚空间时,回滚段的指针将移到下一个区。当最后一个区用完,指针将移到第一个区的前面。回滚段指针移到下一个区的前提是下一个区没有活动的事务,同时指针不能跨区。当下一个区正在使用时,事务将为回滚段分配一个新的区,这种分配称为回滚段的扩展。回滚段将一直扩展到该回滚段区的个数到达回滚段的参数 MAXEXTENTS 的值时为止。
回滚段的回收和 OPTIMAL 参数
OPTIMAL 参数指明回滚段空闲时收缩到的位置,指明回滚段的 OPTIMAL 参数可以减少回滚段空间的浪费。
语法:
CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment
[TABLESPACE tablespace]
[STORAGE ([INITIAL integer[K|M]] [NEXT integer[K|M]]
[MINEXTENTS integer]
[MAXTENTS {integer|UNLIMITED}]
[OPTIMAL {integer[K|M]|NULL}]) ]
注:
回滚段可以在创建时指明 PRIVATE 或 PUBLIC ,一旦创建将不能修改。
MINEXTENTS 必须大于等于 2
PCTINCREASE 必须是 0
OPTIMAL 如果要指定,必须大于等于回滚段的初始大小(由 MINEXTENTS 指定)
建议:
一般情况下, INITIAL=NEXT
设置 OPTIMAL 参数来节约空间的使用
不要设置 MAXEXTENTS 为 UNLIMITED
回滚段应创建在一个特定的回滚段表空间内
CREATE ROLLBACK SEGMENT rbs01
TABLESPACE rbs
STORAGE ( INITIAL 100K NEXT 100K MINEXTENTS 10
MAXEXTENTS 500 OPTIMAL 1000K);
DROP ROLLBACK SEGMENT rbs01;
查询回滚段的信息
所用数据字典: DBA_ROLLBACK_SEGS
可以查询的信息:回滚段的标识 (SEGMENT_ID) 、名称 (SEGMENT_NAME) 、所在表空间 (TABLESPACE_NAME) 、类型 (OWNER) 、状态 (STATUS) 。
例:
SQL>SELECT segment_name,tablespace_name,owner,status FROM dba_rollback_segs;
回滚段的统计信息
数据字典: V$ROLLNAME,V$ROLLSTAT
SELECT n.name,s.extents,s.rssize,s.optsize,s.hwmsize,s.xacts,s.status
FROM v$rollname n,v$rollstat s
WHERE n.usn=s.usn;
回滚段的当前活动事务
数据字典: V$SESSION,V$TRANSACTION
SQL>SELECT s.username,t.xidusn,t.ubafil,t.ubablk,t.used_ublk
FROM v$session s,v$transaction t
WHERE s.saddr=t.ses_addr;
select add_months(sysdate,2) from dual
select last_day(sysdate) from dual
select next_day(sysdate,'FRIDAY') from dual
select months_between('19 MAY 95',add_months(sysdate,2)) duration from dual
select chr(67) from dual
select concat('asf','af') / 列 1|| 列 2 from dual
select initcap('sample') from dual
select lower('SSD')/upper('ssd') from dual
select lpad('myname',20,'*') from dual -- 左边填充指定长度的字符
select rpad('myname',20,'*') from dual
select ltrim('myname','m') /rtrim('myname','m') from dual
select replace('myname','yn','*') from dual
select substr('myname',2,6) from dual
select instr('myname','n',1,1) from dual
select length('myname') from dual
select to_char(sysdate)||'Is good day!' from dual
select to_number('23') from dual
select least(34,567,3,45,1090) / greatest(34,567,3,45,1090) from dual
select user from dual -- 查询当前用户
select decode(columnname,'1','first','2','second','other' ) from table_name
-- 如果 columnname 等于 1 那么取 first 值,如果等于 2 取 second 否则等于 other 。实现逻辑控制
select last_name, d.dept_id
from employees e
RIGHT OUTER JOIN departments d
ON (e.department_id = d.department_id);
错误现象:
1 、有的时候,服务器数据先导出,重装服务器,再导入数据,结果,发生数据查询成 ??? 。
2 、有时,服务器设置就有问题,字符集设成单字节了。
错误原因:
一般,是因为字符集设置不对照成的。 如果两台服务器上的字符设置不同就造成数据不能通讯,那么最简单的方法就是将字符集设置成一样的格式。
解决方法:
1 、检查服务器上 Oracle 数据库的字符集
SQL> conn sys/change_on_install
连接成功 .
SQL> desc props$
列名 可空值否 类型
------------------------------- -------- ----
NAME NOT NULL VARCHAR2(30)
VALUE$ VARCHAR2(2000)
COMMENT$ VARCHAR2(2000)
SQL> col value$ format a40
SQL> select name,value$ from props$;
NAME VALUE$
------------------------------ -------------------------
DICT.BASE 2
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_DATE_FORMAT DD-MON-YY
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_CALENDAR GREGORIAN
NLS_RDBMS_VERSION 7.3.4.0.0
GLOBAL_DB_NAME ORACLE.WORLD
EXPORT_VIEWS_VERSION 3
查询到 14 记录 .
NLS_CHARACTERSET 这个参数应该是 ZHS16GBK ,如不是,改为它。
SQL*Plus 中修改方法:
SQL> update props$ set value$=' 新字符集 ' where name='NLS_CHARACTERSET';
操作系统中修改方法:
connect internal
alter database ORCL character set ZHS16GBK;
alter database ORCL national character set ZHS16GBK;
2 、检查操作系统级 Oracle 汉字显示的字符集
运行 regedit ,定位到:
HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE
找到以下字符串
NLS_LANG
检查是否以下内容,如不是,改之
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
执行 testsql1.txt
关闭系统,利用 oracle backup manager 备份数据
打开数据库,执行 testsql2.txt 关闭数据库系统。
删除 ts_test2 文件
重新启动数据库时出现 1157,1110 错误,处理方法:
1 :利用 oracle recovery manager 恢复数据。
2:alter database datafile 'd:/orant/database/ts_test2' offline drop;
然后打开数据库即可(丢失 ts_test2 文件内容)。
注意:
1:alter database datafile 'd:/orant/database/ts_test2' offline 只能在 archivelog
模式下时才可使用。删除文件后,建议把表空间删除后重建。
2: 删除表空间 drop tablespace ts_test including contents;
3: 重建表空间
A :使用 recover database 恢复,要求数据库安装但没有打开,即脱机备份
B :使用 recover datafile 恢复,要求数据文件要脱机但数据库是打开的
C :使用 recover tablespace 恢复,要求表空间脱机且数据库是打开的
问题产生过程:
svrmgrl
connect internal
insert into myinfo values(34,'myname34','no');
.......
commit;
alter system switchlogfile;
shutdown abort
( 删除 ts_test1 文件,拷贝旧的 ts_test1 文件 )
startup
启动时出现如下错误:
ora-01113:file 2 needs media recovery
ora-01110:data file2:d:/orant/database/ts_test1
恢复方法 A :
1: startup mount
2: recover database;
( 提示恢复方式,选择 auto 即可 )
3: alter database open
恢复方法 B :
1:startup mount;
2: alter database archivelog;
3: alter database datafile 'd:/orant/database/ts_test1' offline
4: alter database open;
5: recover datafile 'd:/orant/database/ts_test1'
( 提示恢复方式,选择 auto 即可 )
6: alter database datafile 'd:/orant/database/ts_test1' online
恢复方法 C :
1: startup mount;
2: alter database archivelog;
3: alter database open;
( 提示出现 ora-01113,ora-1110 错误 )
4: alter database datafile 'd:/orant/database/ts_tes1' offline;
5: alter database open;
6: alter tablespace ts_test offline;
7: recover tablespace ts_test;
( 提示恢复方式,选择 auto 即可 )
8: alter tablespace ts_test online;
如果系统含有其他的回滚段,处理方法等同于非回滚段的处理方法,如果没有其他回滚段
则需要先建立回滚段信息。
产生过程:
1: svrmgr30
2: connect internal
3: create table test(s1 number) tablespace ts_test
4: select * from test;
( 结果为空 )
5: set transaction use rollback segment tr_rbs;
(tr_rbs 必须为 online)
6 : shutdown
7: 删除 tr_rbs 对应的数据文件,然后拷贝旧的文件到当前目录下。
8 :重新启动数据库时出现错误
ora-01113:file 2 needs media recovery
ora-01110:data file2:d:/orant/database/ts_rbs
恢复方法:
1 : svrmgr30
2: connect internal
3: startup mount
4: alter database datafile 'd:/orant/database/ts_rbs' offline;
5: alter database open;
6: create rollback segment temp1 tablespace system;
7: create rollback segment temp2 tablespace system;
8: alter rollback segment temp1 online;
9: alter rollback segment temp2 online;
10: select * from test;
错误信息 :ora-00376:file 3 cannot be read at this time
ora_01110:data file d:/orant/database/ts_rbs
11: recover tablespace tr_rbs
12: select * from test;
错误信息:等同 10
13 : alter tablespace ts_rbs online;
14: select * from test
提示信息:没有数据
15: alter rollabck segment tr_rbs online;
16: alter rollback segment temp1 offline;
17: alter rollback segment temp2 offline;
18: drop rollback segment temp1;
19: drop rollback segment temp2;
恢复方法也可采用文件恢复的方式进行,处理方法与情况 2 处理方法等同。
产生过程:
1 : shutdown abort
2: 删除日志文件 ( 可从 v$logfile 得到日志文件信息 )
3: 拷贝原日志文件信息
恢复过程 :
1 : startup mount
2: recover database until cancel;
3: alter database open resetlogs;
4: shutdown
说明: recover database until change 或 recover database until time 等方法恢复
产生过程:
1: connect internal
2: startup
3: archive log list( 处于归档状态并且自动归档为 enabled)
4: alter tablespace ts_test begin backup;
5: host
( 备份数据文件,如果有多个数据文件,所有数据文件都做备份 )
6: create table test(c1 number) tablespace ts_test;
7: insert into test values(1);
8: commit;
9: alter system switch logfile;
10: shutdown abort( 用 shutdown 提示有备份文件,不许 shutdown)
完成以上工作后,用 startup 命令启动数据时出现 ora-01113 和 ora-01110 错误
恢复方法 A:
1: startup mount
2: alter database datafile 'd:/orant/database/ts_test1' end backup;
3: alter database datafile 'd:/orant/database/ts_test2' end backup;
4: alter database open;
5: select * from test;( 可看到原来已经插入的数据,恢复完成 )
恢复方法 B:
1: 删除数据文件 del d:/orant/database/ts_test1 与 ts_test2
2: 拷贝原来的数据文件 ( 即第 5 步拷贝的数据 )
3: alter database datafile 'd:/orant/database/ts_test1' end backup;
alter database datafile 'd:/orant/database/ts_test2' end backup;
4: recover database
5: alter database open;
6: select * from test;( 可看到原来已经插入的数据,恢复完成 )
说明:当数据库打开时,出现 ora-01113 与 ora-01110 错误,无法判断是由于数据文件丢失或备份引起的
错误,如果想查询是否处于热备份,可查看数据字典 select file#,status from v$backup
产生过程:
1: connect internal
2: startup
3: archive log list( 处于归档状态并且自动归档为 enabled)
4: 删除一个数据文件 ( 表空间的一个文件 ), 假设为: d:/orant/database/ts_test3
恢复方法:
1: startup mount
2: alter database create datafile 'd:/orant/database/ts_test3'
3: recover datafile 'd:/orant/database/ts_test3'
4: alter database open;
5: select * from test;( 测试数据,恢复已完成 )
这是需要首先创建一个资料库,你提供数据库的帐号,然后选择一个表空间。资料库创建完毕用工具登陆 OEM ,初始密码 sysman/oem_temp 提示你修改然后就 OK 了。
将 Sqlnet.ora 文件中的验证方式屏蔽掉
显示数据库的有关信息
SELECT * from v$database
显示实例的信息
select * from v$instance
显示所有的参数设置
select * from v$parameter
显示版本信息
select * from v$version
在 SQLPLUS 下查看一些基本的参数
show parameter 参数名称
SELECT name FROM v$parameter WHERE name LIKE ‘%control%’;
sga
系统全局区( SGA )是一个分配给 Oracle 的包含一个 Oracle 实例的数据库的控制信息内存段。
主要包括数据库高速缓存 (the database buffer cache) ,
重演日志缓存( the redo log buffer ),
共享池( the shared pool ),
数据字典缓存( the data dictionary cache )以及其它各方面的信息。
db_block_buffers
1 、数据高速缓冲区
2 、访问过的数据都放在这一片内存区域,该参数越大, Oracle 在内存中找到相同数据的可能性就越大,也即加快了查询速度。
3 、 db_block_buffers 以块为单位,假如 DB_BLOCK_SIZE=2K , db_block_buffers=3200 ,则占用内存 =3200*2K=6400K 。
share_pool_size
1 、 SQL 共享缓冲池
2 、该参数是库高速缓存和数据字典的高速缓存。
log_buffer
1 、重演日志缓冲区
sort_area_size
1 、排序区
processes
1 、同时连接的进程数
global_names
1 、如果“数据库链路名”和它所要连接的“数据库”拥有相同的名字,则设置 global_names = TRUE ,否则,设置 global_names = FALSE
db_block_size
1 、数据库块大小
2 、 Oracle 默认块为 2KB ,太小了,因为如果我们有一个 8KB 的数据,则 2KB 块的数据库要读 4 次盘,才能读完,而 8KB 块的数据库只要 1 次就读完了,大大减少了 I/O 操作。
3 、数据库安装完成后,就不能再改变 db_block_size 的值了,只能重新建立数据库并且建库时,要选择手工安装数据库。
open_links
1 、同时打开的链接数
dml_locks
1 、用户一次可对表设定锁的最大数目
2 、如果有三个用户修改6个表,则需18个 DML 锁来实现并行操作,如果设定 DML_LOCKS 不够大,操作时执行将中断,你可以通过你的应用程序的操作规模和最大的并行使用的用户数来估算系统所需要的 DML_LOCKS 的值,但该值的大小对数据库的其他性能没有影响,所以一般都把它设得很大,远超过实际中可能达到的值,如果在系统运行中经常发生表锁死的现象,就应该考虑加大该值。
open_cursors
1 、打开光标数
2 、这个参数可以同时被每个用户进程拥有,这个参数的最大值依操作系统不同而不同。
3 、在创建一个包含很多表的合成视图时,如果此参数很小,则视图创建会不成功。
dbwr_io_slaves
1 、后台写进程数
1 、 startup nomount
非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
读取 init.ora 文件,启动 instance ,即启动 SGA 和后台进程,这种启动只需要 init.ora 文件。
2 、 startup mount dbname
安装启动,这种方式启动下可执行:
数据库日志归档、
数据库介质恢复、
使数据文件联机或脱机,
重新定位数据文件、重做日志文件。
执行“ nomount ”,然后打开控制文件,确认数据文件和联机日志文件的位置,
但此时不对数据文件和日志文件进行校验检查。
3 、 startup open dbname
先执行“ nomount ”,然后执行“ mount ”,再打开包括 Redo log 文件在内的所有数据库文件,
这种方式下可访问数据库中的数据。
4 、 startup ,等于以下三个命令
startup nomount
alter database mount
alter database open
5 、 startup restrict
约束方式启动
这种方式能够启动数据库,但只允许具有一定特权的用户访问
非特权用户访问时,会出现以下提示:
ERROR :
ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用
6 、 startup force
强制启动方式
当不能关闭数据库时,可以用 startup force 来完成数据库的关闭
先关闭数据库,再执行正常启动数据库命令
7 、 startup pfile= 参数文件名
带初始化参数文件的启动方式
先读取参数文件,再按参数文件中的设置启动数据库
例: startup pfile=E:/Oracle/admin/oradb/pfile/init.ora
8 、 startup EXCLUSIVE
有三种关闭方式:
1 、 shutdown normal
正常方式关闭数据库。
2 、 shutdown immediate
立即方式关闭数据库。
在 SVRMGRL 中执行 shutdown immediate ,数据库并不立即关闭,
而是在 Oracle 执行某些清除工作后才关闭(终止会话、释放会话资源),
当使用 shutdown 不能关闭数据库时, shutdown immediate 可以完成数据库关闭的操作。
3 、 shutdown abort
直接关闭数据库,正在访问数据库的会话会被突然终止,
如果数据库中有大量操作正在执行,这时执行 shutdown abort 后,重新启动数据库需要很长时间。
在 8i 中在命令行输入 svrmgrl 而在 9i 中是 dgmgrl ,然后 connect username/password 现在已经废除了 internal 的内部连接
命令 |
用法 |
具体含义解释 |
man |
man command |
Manual Pages - Help with any UNIX command |
|
man ps |
Help on the UNIX ps command |
|
|
|
clear |
clear |
To clear the screen |
|
|
|
pwd |
pwd |
Present / Current Working Directory |
|
|
|
cd |
cd [directoryname] |
Change directory, without argument will change your working directory to your home directory. |
|
cd work |
Change working directory to "work" |
|
cd .. |
Change working directory to parent directory (.. is parent and . is current directory) |
|
|
|
ls |
ls [-options] [names] |
List files. [names] if omitted, will list all files and subdirectories in the directory. Wild cards can be specified. |
|
ls -l |
|
|
ls -al |
List files with date and permissions including hidden files |
|
ls -lt |
List files with date, sorted in the date modified |
|
ls -ltr bt* |
List files with date, sorted in the date modified, oldest first, with filenames starting with bt |
|
|
|
Wildcards |
* |
Any character, any number of positions |
|
? |
Any character, one position |
|
[] |
A set of characters which match a single character position. |
|
- |
To specify a range within [] |
|
ls *x* |
List all files which contains an x in any position of the name. |
|
ls x* |
List all files which start with x |
|
ls *T0[1-3]ZZ |
List all files which contain T0 followed by 1,2 or 3 followed by ZZ. The following files match this condition: analyzeall.AAAT01ZZ dbaoc_err.AAAT03ZZ dbstart_log.AAAT03ZZ calerterr.AAAT01ZZ dbaoc_log.AAAT01ZZ |
|
ls job?.sql |
List files which start with job followed by any single character followed by .sql Example: jobd.sql jobr.sql |
|
ls alert*.???[0-1,9] |
alert_AAAT01ZZ.1019 alert_AAAD00ZZ.1020 alert_AAAI09ZZ.1021 |
|
|
|
touch - |
touch filename |
Create a 0 byte file or to change the timestamp of file to current time (wild cards as above can be used with the file names) |
|
|
|
mkdir |
mkdir directoryname |
Create Directory |
|
mkdir -p directorypath |
Create directory down many levels in single pass mkdir -p /home/biju/work/yday/tday |
|
|
|
rmdir |
rmdir directoryname |
Remove directory |
|
|
|
rm |
rm filename |
Remove file |
|
rm -rf directoryname |
Remove directory with files. Important - There is no way to undelete a file or directory in UNIX. So be careful in deleting files and directories. It is always good to have rm -i filename for deletes |
|
|
|
cp |
cp filename newfilename |
Copy a file |
|
cp -r * newloc |
To copy all files and subdirectories to a new location, use -r, the recursive flag. |
|
|
|
mv |
mv filename newfilename |
Rename (Move) a file. Rename filename to newfilename. |
|
mv filename directoryname |
Move filename under directoryname with the same file name. |
|
mv filename directoryname/newfilename |
Move filename to directoryname as newfilename. |
|
mv * destination |
If you use a wildcard in the filename, mv catenates all files to one sigle file, unless the destination is a directory. |
|
cp -i file1 file2 mv -i file1 file2 rm -i file* |
Use the -i flag with rm, mv and cp to confirm before destroying a file. |
|
|
|
file |
file filename |
To see what kind of file, whether editable. Executable files are binary and you should not open them. |
|
file d* |
dbshut: ascii textdbsnmp: PA-RISC1.1 shared executable dynamically linked -not strippeddbstart: ascii textdbv: PA-RISC1.1 shared executable dynamically linked -not strippeddemobld: commands textdemodrop: commands text |
|
|
|
vi |
vi filename |
Edit a text file. Vi is a very powerful and "difficult to understand" editor. But once you start using, you'll love it! All you want to know about vi are here. More vi tricks later!! |
|
|
|
cat |
cat filename |
See contents of a text file. cat (catenate) will list the whole file contents. Cat is mostly used to catenate two or more files to one file using the redirection operator. |
|
cat file1 file2 file3 > files |
Catenate the contents of file1, file2 and file3 to a single file called files. If you do not use the redirection, the result will be shown on the standard output, i.e., screen. |
|
|
|
more page |
more filename page filename |
Show the contents of the file, one page at a time. In more/page, use space to see next page and ENTER to see next line. If you wish to edit the file (using vi), press v; to quit press q. |
|
|
|
tail |
tail -n filename |
To see the specified number of lines from the end of the file. |
|
|
|
head |
head -n filename |
To see the specified number of lines from the top of the file. |
|
|
|
pg |
pg filename |
To show the contents of the file, page by page. In pg, you go up and down the pages with + and - and numbers. |
|
|
1 First Page of the file $ Last Page of the file+5 Skip 5 pages-6 Go back 6 pagesENTER Next page- Previous Pageq Quit/string Search for string |
|
|
|
env |
env |
To see value of all environment variables. |
|
To set an environment variable: |
In ksh or sh "export VARIABLENAME=value", Note there is no space between =.In csh "setenv VARIABLENAME value" |
|
echo $VARIABLENAME |
See value of an environment variable |
|
|
|
echo |
echo string |
To print the string to standard output |
|
echo "Oracle SID is $ORACLE_SID" |
Will display "Oracle SID is ORCL" if the value of ORACLE_SID is ORCL. |
|
|
|
lp |
lp filename |
To print a file to system default printer. |
|
|
|
chmod |
chmod permission filename |
Change the permissions on a file - As explained under ls -l, the permissions are read, write, execute for owner, group and others. |
|
|
You can change permissions by using numbers or the characters r,w,x. Basically, you arrive at numbers using the binary format. Examples:rwx = 111 = 7rw_ = 110 = 6r__ = 100 = 4r_x = 101 = 5 |
|
chmod +rwx filename chmod 777 filename |
Give all permissions to everyone on filename |
|
chmod u+rwx,g+rx,o-rwx filename chmod 750 filename |
Read, write, execute for owner, read and execute for group and no permission for others |
|
|
|
chown |
chown newuser filename |
Change owner of a file |
|
|
|
chgrp |
chgrp newgroup filename |
Change group of a file |
|
chown newuser:newgroup filename |
Change owner and group of file |
|
|
|
compress |
compress filename |
Compress a file - compressed files have extention .Z. To compress file you need to have enough space to hold the temporary file. |
|
|
|
uncompress |
uncompress filename |
Uncompress a file |
|
|
|
df |
df [options] [moutpoint] |
Freespace available on the system (Disk Free); without arguments will list all the mount points. |
|
df -k /ora0 |
Freespace available on /ora0 in Kilobytes. On HP-UX, you can use "bdf /ora0". |
|
df -k . |
If you're not sure of the mount point name, go to the directory where you want to see the freespace and issue this command, where "." indicates current directory. |
|
|
|
du |
du [-s] [directoryname] |
Disk used; gives operating system blocks used by each subdirectory. To convert to KB, for 512K OS blocks, divide the number by 2. |
|
du -s |
gives the summary, no listing for subdirectories |
|
|
|
find |
Find files. |
find is a very useful command, searches recursively through the directory tree looking for files that match a logical expression. It has may options and is very powerful. |
|
find /ora0/admin -name "*log" -print |
Simple use of find - to list all files whose name end in log under /ora0/admin and its subdirectories |
|
find . -name "*log" -print -exec rm {} /; |
to delete files whose name end in log. If you do not use the "-print" flag, the file names will not be listed on the screen. |
|
|
|
grep |
Global regular expression print |
to search for an expression in a file or group of files. grep has two flavours egrep (extented - expands wild card characters in the expression) and frep (fixed-string - does not expand wild card characters). This is a very useful command, especially to use in scripts. |
|
grep oracle /etc/passwd |
to display the lines containing "oracle" from /etc/passwd file. |
|
grep -i -l EMP_TAB *.sql |
to display only the file names (-l option) which contains the string EMP_TAB, ignore case for the string (-i option), in all files with sql extention. |
|
grep -v '^#' /etc/oratab |
display only the lines in /etc/oratab where the lines do not (-v option; negation) start with # character (^ is a special character indicating beginning of line, similarly $ is end of line). |
|
|
|
ftp |
ftp [hostname] |
File Transfer Protocol - to copy file from one computer to another |
|
ftp AAAd01hp |
invoke ftp, connect to server AAAd01hp. |
|
331 Password required for BIJU.Password: |
enter password - will not be echoed. |
|
230 User BIJU logged in.Remote system type is UNIX.Using binary mode to transfer files.ftp> ascii |
Specifying to use ASCII mode to transfer files. This is used to transfer text files. |
|
200 Type set to A.ftp> binary |
Specifying to use binary mode to transfer files. This is used for program and your export dump files. |
|
200 Type set to I.ftp> ls |
To see the files in the remote computer. |
|
200 PORT command successful.150 Opening ASCII mode data connection for /usr/bin/ls.total 8-rw-rw-rw- 1 b2t dba 43 Sep 22 16:01 afiedt.bufdrwxrwxrwx 2 b2t dba 96 Jul 9 08:47 appdrwxrwxrwx 2 b2t dba 96 Jul 9 08:49 bin-rw-rw-rw- 1 b2t dba 187 Jul 30 14:44 check.sql226 Transfer complete.ftp> get check.sql |
transfer the file check.sql from the remote computer to the local computer. The file will be copied to the present directory with the same name. You can optionally specify a new name and directory location. |
|
200 PORT command successful.150 Opening BINARY mode data connection for check.sql (187 bytes).226 Transfer complete.187 bytes received in 0.02 seconds (7.79 Kbytes/s)ftp> !ls |
! runs commands on the local machine. |
|
AAAP02SN a4m08.txt tom3.txta4m01.txtftp> put a4m01.txt /tmp/test.txt |
transfer file from local machine to remote machine, under /tmp directory with name test.txt. |
|
|
|
|
mail "[email protected]" < message.log |
Mail a file to internet/intranet address. mail the contents of message.log file to [email protected] |
|
mail -s "Messages from Me" "[email protected]" "[email protected]" < message.log |
mail the contents of message.log to xyz and abc with a subject. |
|
|
|
who |
who [options] |
to see who is logged in to the computer. |
|
who -T |
Shows the IP address of each connection |
|
who -r |
Shows when the computer was last rebooted, run-level. |
|
|
|
ps |
ps |
process status - to list the process id, parent process, status etc. ps without any arguments will list current sessions processes. |
|
ps -f |
ull listing of my processes, with time, terminal id, parent id, etc. |
|
ps -ef |
as above for all the processes on the server. |
|
|
|
kill |
kill [-flag] processid |
to kill a process - process id is obtained from the ps command or using the v$process table in oracle. |
|
kill 12345 |
Kill the process with id 12345 |
|
kill -9 12345 |
To force termination of process id 12345 |
|
|
|
script |
script logfilename |
to record all your commands and output to a file. Mostly useful if you want to log what you did, and sent to customer support for them to debug. start logging to the logfilename. The logging is stopped when you do "exit". |
|
|
|
hostname |
hostname |
displays the name of the computer. |
|
|
|
uname |
uname -a |
to see the name of the computer along with Operating system version and license info. |
|
|
|
date |
date |
displays the current date and time. |
|
date "+%m%d%Y" |
displays date in MM/DD/YYYY format |
|
|
|
cal |
cal |
displays calender of current month |
|
cal 01 1991 |
Displays January 1991 Calender |
|
|
|
telnet |
telnet [hostname] |
to open a connection to another computer in the network. Provide the alias name or IP address of the computer. |
|
|
|
& |
command & |
add & to the end of the command to run in background |
|
nohup command & |
no hangup - do not terminate the background job even if the shell terminates. |
|
|
|
fg |
fg |
to bring a background job to foreground |
|
|
|
bg |
bg |
to take a job to the background. Before issuing this command, press ^Z, to suspend the process and then use bg, to put it in the background. |
|
|
|
jobs |
jobs |
to list the current jobs in the shell. |
|
|
|
rcp |
rcp [-r] sourcehost:filename destinationhost:filename |
Remote copy. Copy files from one coputer to another. To set up the computer for remote copy and remote login (rlogin) will be discussed later. |
|
rcp host1:/ora0/file1.txt host2:/ora0/temp/file1.txt |
Copy file from host1 to host2. If the computer name is omitted, the hostname is assumed. |