Chinaunix首页 | 论坛 | 博客
  • 博客访问: 204736
  • 博文数量: 75
  • 博客积分: 2049
  • 博客等级: 大尉
  • 技术积分: 780
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-08 12:37
文章分类

全部博文(75)

文章存档

2011年(1)

2010年(9)

2009年(65)

我的朋友

分类:

2009-05-11 11:22:10

注意:删除记录并不能释放ORACLE里被占用的数据块表空间它只把那些被删除的数据块标成unused.

如果确实要删除一个大表里的全部记录可以用 TRUNCATE 命令它可以释放占用的数据块表空间
TRUNCATE TABLE 
表名;
此操作不可回退.

3.UPDATE  (
修改数据表里记录的语句)

UPDATE
表名 SET 字段名1=1, 字段名2=2, …… WHERE 条件;

如果修改的值N没有赋值或定义时将把原来的记录内容清为NULL, 最好在修改前进行非空校验;
N超过定义的长度会出错最好在插入前进行长度校验..

注意事项:
A.        
以上SQL语句对表都加上了行级锁,
        
确认完成后必须加上事物处理结束的命令 COMMIT 才能正式生效,
        
否则改变不一定写入数据库里.
        
如果想撤回这些操作可以用命令 ROLLBACK 复原.

B.        
在运行INSERT, DELETE  UPDATE 语句前最好估算一下可能操作的记录范围,
        
应该把它限定在较小 (一万条记录范围内,. 否则ORACLE处理这个事物用到很大的回退段.
        
程序响应慢甚至失去响应如果记录数上十万以上这些操作可以把这些SQL语句分段分次完成,
        
其间加上COMMIT 确认事物处理.
.数据定义 (DDL) 部分

1.CREATE (
创建表索引视图同义词过程函数数据库链接等)

ORACLE
常用的字段类型有
CHAR                        
固定长度的字符串
VARCHAR2                
可变长度的字符串
NUMBER(M,N)                
数字型M是位数总长度, N是小数的长度
DATE                        
日期类型

创建表时要把较小的不为空的字段放在前面可能为空的字段放在后面

创建表时可以用中文的字段名但最好还是用英文的字段名

创建表时可以给字段加上默认值例如 DEFAULT SYSDATE
这样每次插入和修改时不用程序操作这个字段都能得到动作的时间

创建表时可以给字段加上约束条件
例如 不允许重复 UNIQUE, 关键字 PRIMARY KEY

2.ALTER        (
改变表索引视图等)

改变表的名称
ALTER TABLE 
表名1  TO 表名2;

在表的后面增加一个字段
ALTER TABLE
表名 ADD 字段名 字段名描述;

修改表里字段的定义描述
ALTER TABLE
表名 MODIFY字段名 字段名描述;

给表里的字段加上约束条件
ALTER TABLE 
表名 ADD CONSTRAINT 约束名 PRIMARY KEY (字段名);
ALTER TABLE 
表名 ADD CONSTRAINT 约束名 UNIQUE (字段名);

把表放在或取出数据库的内存区
ALTER TABLE 
表名 CACHE;
ALTER TABLE 
表名 NOCACHE;

3.DROP        (
删除表索引视图同义词过程函数数据库链接等)

删除表和它所有的约束条件
DROP TABLE 
表名 CASCADE CONSTRAINTS;

4.TRUNCATE (
清空表里的所有记录保留表的结构)

TRUNCATE 
表名;

.查询语句 (SELECT) 部分

SELECT
字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE 条件;

字段名可以带入函数
  
例如:  COUNT(*), MIN(字段名),  MAX(字段名),  AVG(字段名), DISTINCT(字段名),
           TO_CHAR(DATE
字段名,'YYYY-MM-DD HH24:MI:SS')

NVL(EXPR1, EXPR2)
函数
解释:
IF EXPR1=NULL
                RETURN EXPR2
ELSE
                       RETURN EXPR1

DECODE(AA
V1R1V2R2....)函数
解释:
IF AA=V1 THEN RETURN R1
IF AA=V2 THEN RETURN R2
..…
ELSE
RETURN NULL

LPAD(char1,n,char2)
函数
解释:
字符char1按制定的位数n显示,不足的位数用char2字符串替换左边的空位

字段名之间可以进行算术运算
例如:  (字段名1*字段名1)/3

查询语句可以嵌套
例如: SELECT …… FROM
(SELECT …… FROM
表名1, [表名2, ……] WHERE 条件) WHERE 条件2;

两个查询语句的结果可以做集合操作
例如并集UNION(去掉重复记录), 并集UNION ALL(不去掉重复记录), 差集MINUS,  交集INTERSECT

分组查询
SELECT
字段名1, 字段名2, …… FROM 表名1, [表名2, ……] GROUP BY字段名1
[HAVING 
条件] ;

两个以上表之间的连接查询

SELECT
字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE
                
表名1.字段名 = 表名2. 字段名 [ AND ……] ;

SELECT
字段名1, 字段名2, …… FROM 表名1, [表名2, ……] WHERE
                
表名1.字段名 = 表名2. 字段名(+) [ AND ……] ;

(+)号的字段位置自动补空值

查询结果集的排序操作默认的排序是升序ASC, 降序是DESC

SELECT
字段名1, 字段名2, …… FROM 表名1, [表名2, ……]
ORDER BY
字段名1, 字段名2 DESC;

字符串模糊比较的方法

INSTR(
字段名, ‘字符串’)>0
字段名 LIKE  ‘字符串%’  [‘%字符串%’]

每个表都有一个隐含的字段ROWID, 它标记着记录的唯一性.

.ORACLE里常用的数据对象 (SCHEMA)

1.
索引 (INDEX)

CREATE INDEX 
索引名ON 表名 ( 字段1, [字段2, ……] );
ALTER INDEX 
索引名 REBUILD;

一个表的索引最好不要超过三个 (特殊的大表除外), 最好用单字段索引结合SQL语句的分析执行情况,
也可以建立多字段的组合索引和基于函数的索引

ORACLE8.1.7
字符串可以索引的最大长度为1578 单字节
ORACLE8.0.6
字符串可以索引的最大长度为758 单字节

2.
视图 (VIEW)

CREATE VIEW 
视图名AS SELECT …. FROM …..;
ALTER VIEW
视图名 COMPILE;

视图仅是一个SQL查询语句它可以把表之间复杂的关系简洁化.

3.
同义词 (SYNONMY)
CREATE SYNONYM
同义词名FOR 表名;
CREATE SYNONYM
同义词名FOR 表名@数据库链接名;

4.
数据库链接 (DATABASE LINK)
CREATE DATABASE LINK
数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘数据库连接字符串’;

数据库连接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义.

数据库参数global_name=true时要求数据库链接名称跟远端数据库名称一样

数据库全局名称可以用以下命令查出
SELECT * FROM GLOBAL_NAME;

查询远端数据库里的表
SELECT …… FROM 
表名@数据库链接名;

.权限管理 (DCL) 语句

1.GRANT        
赋于权限
常用的系统权限集合有以下三个:
CONNECT(
基本的连接), RESOURCE(程序开发), DBA(数据库管理)
常用的数据对象权限有以下五个:
ALL         ON 
数据对象名,         SELECT ON 数据对象名,         UPDATE ON 数据对象名,
DELETE         ON 
数据对象名,  INSERT ON 数据对象名,   ALTER  ON 数据对象名

GRANT CONNECT, RESOURCE TO 
用户名;
GRANT SELECT ON 
表名 TO 用户名;
GRANT SELECT, INSERT, DELETE ON
表名 TO 用户名1, 用户名2;

2.REVOKE 
回收权限

REVOKE CONNECT, RESOURCE FROM 
用户名;
REVOKE SELECT ON 
表名 FROM 用户名;
REVOKE SELECT, INSERT, DELETE ON
表名 FROM 用户名1, 用户名2;


查询数据库中第63号错误:
select orgaddr,destaddr from sm_histable0116 where error_code='63';

查询数据库中开户用户最大提交和最大下发数: select MSISDN,TCOS,OCOS from ms_usertable


查询数据库中各种错误代码的总和:
select error_code,count(*) from sm_histable0513 group by error_code order
by error_code;

查询报表数据库中话单统计种类查询。
select sum(Successcount) from tbl_MiddleMt0411 where ServiceType2=111
select sum(successcount),servicetype from tbl_middlemt0411 group by servicetype


原文地址:

//创建一个控制文件命令到跟踪文件
alter database backup controlfile to trace;

//增加一个新的日志文件组的语句
connect internal as sysdba
alter database
add logfile group 4
(’/db01/oracle/CC1/log_1c.dbf’,
 ’/db02/oracle/CC1/log_2c.dbf’) size 5M;

alter database
add logfile member ’/db03/oracle/CC1/log_3c.dbf’
to group 4;
//Server ManagerMOUNT并打开一个数据库:
connect internal as sysdba
startup mount ORA1 exclusive;
alter database open;

//生成数据字典
@catalog
@catproc

//init.ora 中备份数据库的位置
log_archive_dest_1 = ’/db00/arch’
log_archive_dest_state_1 = enable
log_archive_dest_2 = "service=stby.world mandatory reopen=60"
log_archive_dest_state_2 = enable
//对用户的表空间的指定和管理相关的语句
create user USERNAME identified by PASSWORD
default tablespace TABLESPACE_NAME;
alter user USERNAME default tablespace TABLESPACE_NAME;
alter user SYSTEM quota 0 on SYSTEM;
alter user SYSTEM quota 50M on TOOLS;
create user USERNAME identified by PASSWORD
default tablespace DATA
temporary tablespace TEMP;
alter user USERNAME temporary tablespace TEMP;

//重新指定一个数据文件的大小 :
alter database
datafile ’/db05/oracle/CC1/data01.dbf’ resize 200M;

//创建一个自动扩展的数据文件:
create tablespace DATA
datafile ’/db05/oracle/CC1/data01.dbf’ size 200M
autoextend ON
next 10M
maxsize 250M;

//在表空间上增加一个自动扩展的数据文件:
alter tablespace DATA
add datafile ’/db05/oracle/CC1/data02.dbf’
size 50M
autoextend ON
maxsize 300M;

//修改参数:
alter database
datafile ’/db05/oracle/CC1/data01.dbf’
autoextend ON
maxsize 300M;

//在数据文件移动期间重新命名:
alter database rename file
 ’/db01/oracle/CC1/data01.dbf’ to
 ’/db02/oracle/CC1/data01.dbf’;

alter tablespace DATA rename datafile
 ’/db01/oracle/CC1/data01.dbf’ to
 ’/db02/oracle/CC1/data01.dbf’;

alter database rename file 
 ’/db05/oracle/CC1/redo01CC1.dbf’ to
 ’/db02/oracle/CC1/redo01CC1.dbf’;

alter database datafile ’/db05/oracle/CC1/data01.dbf’ 
resize 80M;

//创建和使用角色:
create role APPLICATION_USER;
grant CREATE SESSION to APPLICATION_USER;
grant APPLICATION_USER to username;

 //回滚段的管理
create rollback segment SEGMENT_NAME
tablespace RBS;

alter rollback segment SEGMENT_NAME offline;

drop rollback segment SEGMENT_NAME;

alter rollback segment SEGMENT_NAME online;
//回滚段上指定事务
commit;
set transaction use rollback segment ROLL_BATCH;
insert into TABLE_NAME
select * from DATA_LOAD_TABLE;
commit;

//查询回滚段的 大小和优化参数
select * from DBA_SEGMENTS
 where Segment_Type = ’ROLLBACK’;
select N.Name,         /* rollback segment name */
       S.OptSize       /* rollback segment OPTIMAL size */
from V$ROLLNAME N, V$ROLLSTAT S
where N.USN=S.USN;

//回收回滚段
alter rollback segment R1 shrink to 15M;
alter rollback segment R1 shrink;

//例子
set transaction use rollback segment SEGMENT_NAME

alter tablespace RBS
default storage
(initial 125K next 125K minextents 18 maxextents 249)

create rollback segment R4 tablespace RBS
   storage (optimal 2250K);
alter rollback segment R4 online;

select Sessions_Highwater from V$LICENSE;
grant select on EMPLOYEE to PUBLIC;

//用户和角色 
create role ACCOUNT_CREATOR;
grant CREATE SESSION, CREATE USER, ALTER USER 
   to ACCOUNT_CREATOR;

alter user THUMPER default role NONE;
alter user THUMPER default role CONNECT;
alter user THUMPER default role all except ACCOUNT_CREATOR;

alter profile DEFAULT
limit idle_time 60;

create profile LIMITED_PROFILE limit
FAILED_LOGIN_ATTEMPTS 5;
create user JANE identified by EYRE
profile LIMITED_PROFILE;
grant CREATE SESSION to JANE;

alter user JANE account unlock;
alter user JANE account lock;

alter profile LIMITED_PROFILE limit
PASSWORD_LIFE_TIME 30;

alter user jane password expire;

//创建操作系统用户
REM  Creating OPS$ accounts
create user OPS$FARMER
identified by SOME_PASSWORD
default tablespace USERS
temporary tablespace TEMP;

REM  Using identified externally
create user OPS$FARMER
identified externally
default tablespace USERS
temporary tablespace TEMP;

//执行ORAPWD
ORAPWD FILE=filename PASSWORD=password ENTRIES=max_users

create role APPLICATION_USER;
grant CREATE SESSION to APPLICATION_USER;
create role DATA_ENTRY_CLERK;
grant select, insert on THUMPER.EMPLOYEE to DATA_ENTRY_CLERK;
grant select, insert on THUMPER.TIME_CARDS to DATA_ENTRY_CLERK;
grant select, insert on THUMPER.DEPARTMENT to DATA_ENTRY_CLERK;
grant APPLICATION_USER to DATA_ENTRY_CLERK;
grant DATA_ENTRY_CLERK to MCGREGOR;
grant DATA_ENTRY_CLERK to BPOTTER with admin option;

//设置角色
set role DATA_ENTRY_CLERK;
set role NONE;

//回收权利:
revoke delete on EMPLOYEE from PETER;
revoke all on EMPLOYEE from MCGREGOR;

//回收角色:
revoke ACCOUNT_CREATOR from HELPDESK;

drop user USERNAME cascade;
阅读(580) | 评论(0) | 转发(0) |
0

上一篇:ORACLE常用命令1

下一篇:ORACLE常用命令3

给主人留下些什么吧!~~