1、在单机环境下
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下
su - oracle
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>startup
SVRMGR>quit
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>shutdown
SVRMGR>quit
$ sqlplus /nolog
Connected to an idle instance.
SQL> startup
ORACLE instance started.
要想启动或关闭ORACLE系统必须首先切换到root用户,如下
su - root
hareg -y oracle
hareg -n oracle
1、startup nomount
非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
2、startup mount dbname
安装启动,这种方式启动下可执行:
数据库日志归档、
数据库介质恢复、
使数据文件联机或脱机,
重新定位数据文件、重做日志文件。
但此时不对数据文件和日志文件进行校验检查。
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:Oracleadminoradbpfileinit.ora
8、startup EXCLUSIVE
ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化,
体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。
我们不能手工修改数据字典里的信息。
dict_column 全部数据字典表里字段名称和解释
SQL>select username,default_tablespace from user_users;
SQL>select * from user_role_privs;
SQL>select * from user_sys_privs;
SQL>select * from user_tab_privs;
SQL>select * from user_tables;
SQL>select object_name,object_id from user_objects
where instr(object_name,'LOG')>0;
SQL>select object_name,created from user_objects where object_name=upper('&table_name');
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('&table_name');
SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;
SQL>select index_name,index_type,table_name from user_indexes order by table_name;
SQL>select * from user_ind_columns where index_name=upper('&index_name');
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('&index_name');
SQL>select * from user_sequences;
SQL>select view_name from user_views;
SQL>set view_name,text_length from user_views;
SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小
SQL>select text from user_views where view_name=upper('&view_name');
SQL>select * from user_synonyms;
SQL>select constraint_name, constraint_type,search_condition, r_constraint_name
from user_constraints where table_name = upper('&table_name');
from user_constraints c,user_cons_columns cc
where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')
and c.owner = cc.owner and c.constraint_name = cc.constraint_name
order by cc.position;
SQL>select object_name,status from user_objects where object_type='FUNCTION';
SQL>select object_name,status from user_objects where object_type='PROCEDURE';
SQL>select text from all_source where owner=user and name=upper('&plsql_name');
三、查看数据库的SQL
1、查看表空间的名称及大小
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
max_extents, v.curext CurExtent
From dba_rollback_segs r, v$rollstat v
Where r.segment_id = v.usn(+)
order by segment_name ;
from dba_free_space
group by tablespace_name;
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;
Where SUBSTR(PRODUCT,1,6)='Oracle';
四、ORACLE用户连接的管理
五、SQL*PLUS使用
a、进入SQL*Plus
$sqlplus 用户名/密码@数据库名
SQL>exit
列出全部SQL命令和SQL*Plus命令
SQL>help
列出某个特定的命令的信息
SQL>help 命令名
SQL>DESC 表名
显示SQL缓冲区命令
SQL>L
首先要将待改正行变为当前行
SQL>n
用CHANGE命令修改内容
SQL>c/旧/新
重新确认是否已正确
SQL>INPUT
SQL>i
SQL>输入内容
SQL>edit 文件名
可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行
DEFINE_EDITOR=vi
SQL>START test
SQL>@test
a、表的创建、修改、删除
创建表的命令格式如下:
create table 表名 (列说明列表);
ALTER TABLE 表名 ADD (列说明列表)
例:为test表增加一列Age,用来存放年龄
sql>alter table test
add (Age number(3));
ALTER TABLE 表名
MODIFY (列名 数据类型)
例:将test表中的Count列宽度加长为10个字符
sql>alter atble test
modify (County char(10));
DORP TABLE 表名;
例:表删除将同时删除表的数据和表的定义
sql>drop table test
六、ORACLE逻辑备份的SH文件
/var/spool/cron/crontabs/root增加以下内容
INSERT INTO 表名(字段名1, 字段名2, ……) SELECT (字段名1, 字段名2, ……) FROM 另外的表名;
如果字段值里包含单引号’ 需要进行字符串转换, 我们把它替换成两个单引号''.
字符串类型的字段值超过定义的长度会出错, 最好在插入前进行长度校验.
或者用字符串转换成日期型函数TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)
TO_DATE()还有很多种日期格式, 可以参看ORACLE DOC.
年-月-日 小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS
方法借用ORACLE里自带的DBMS_LOB程序包.
CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1
MAXVALUE 99999 CYCLE NOCACHE;
其中最大的值按字段的长度来定, 如果定义的自动增长的序列号 NUMBER(6) , 最大值为999999
INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL
TRUNCATE TABLE 表名;
此操作不可回退.
值N超过定义的长度会出错, 最好在插入前进行长度校验..
A. 以上SQL语句对表都加上了行级锁,
确认完成后, 必须加上事物处理结束的命令 COMMIT 才能正式生效,
否则改变不一定写入数据库里.
如果想撤回这些操作, 可以用命令 ROLLBACK 复原.
应该把它限定在较小 (一万条记录) 范围内,. 否则ORACLE处理这个事物用到很大的回退段.
程序响应慢甚至失去响应. 如果记录数上十万以上这些操作, 可以把这些SQL语句分段分次完成,
其间加上COMMIT 确认事物处理.
CHAR 固定长度的字符串
VARCHAR2 可变长度的字符串
NUMBER(M,N) 数字型M是位数总长度, N是小数的长度
DATE 日期类型
这样每次插入和修改时, 不用程序操作这个字段都能得到动作的时间
例如 不允许重复 UNIQUE, 关键字 PRIMARY KEY
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;
DROP TABLE 表名 CASCADE CONSTRAINTS;
例如: COUNT(*), MIN(字段名), MAX(字段名), AVG(字段名), DISTINCT(字段名),
TO_CHAR(DATE字段名,'YYYY-MM-DD HH24:MI:SS')
解释:
IF EXPR1=NULL
RETURN EXPR2
ELSE
RETURN EXPR1
解释:
IF AA=V1 THEN RETURN R1
IF AA=V2 THEN RETURN R2
..…
ELSE
RETURN NULL
解释:
字符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 条件] ;
表名1.字段名 = 表名2. 字段名 [ AND ……] ;
表名1.字段名 = 表名2. 字段名(+) [ AND ……] ;
ORDER BY字段名1, 字段名2 DESC;
字段名 LIKE ‘字符串%’ [‘%字符串%’]
ALTER INDEX 索引名 REBUILD;
也可以建立多字段的组合索引和基于函数的索引
ORACLE8.0.6字符串可以索引的最大长度为758 单字节
ALTER VIEW视图名 COMPILE;
CREATE SYNONYM同义词名FOR 表名;
CREATE SYNONYM同义词名FOR 表名@数据库链接名;
CREATE DATABASE LINK数据库链接名CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘数据库连接字符串’;
SELECT * FROM GLOBAL_NAME;
SELECT …… FROM 表名@数据库链接名;
常用的系统权限集合有以下三个:
CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)
常用的数据对象权限有以下五个:
ALL ON 数据对象名, SELECT ON 数据对象名, UPDATE ON 数据对象名,
DELETE ON 数据对象名, INSERT ON 数据对象名, ALTER ON 数据对象名
GRANT SELECT ON 表名 TO 用户名;
GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;
REVOKE SELECT ON 表名 FROM 用户名;
REVOKE SELECT, INSERT, DELETE ON表名 FROM 用户名1, 用户名2;
查询数据库中第63号错误:
select orgaddr,destaddr from sm_histable0116 where error_code='63';
查询数据库中各种错误代码的总和:
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