免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3964 | 回复: 4
打印 上一主题 下一主题

Oracle日常使用命令(持续更新) [复制链接]

论坛徽章:
3
处女座
日期:2014-11-05 11:02:4315-16赛季CBA联赛之四川
日期:2015-12-10 14:37:4015-16赛季CBA联赛之天津
日期:2017-09-08 18:39:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-12-30 12:48 |只看该作者 |倒序浏览
本帖最后由 godymoon 于 2011-01-08 11:49 编辑

一.启动和关闭数据库
sqlplus /nolog;
SQL >conn / as sysdba;
SQL >startup(若启动文件名不是ORACLE缺省的文件名,则启动时应带启动的文件名:startup pfile=<file-path/init-file>)
SQL>shutdown immediate ( 还有shutdown abort,跟kill 进程一样的效果)

二.启停监听
  启动监听  lsnrctl start

  停止监听    lsnrctl stop

  查看监听状态  lsnrctl status

三.表空间管理
表空间分永久表空间和临时表空间,部分操作有区别
1.创建永久表空间create tablespace EXAMPLE_DATA [LOGGING] datafile '/opt/oracle/oradata/test/exp_data1.data' size 50M [BLOCKSIZE 8K];
   创建临时表空间create temporary tablespace  EXAMPLE_TEMP tempfile  '/opt/oracle/oradata/test/exp_tmp1.data' size 50M ;
2.扩展永久表空间alter tablespace  EXAMPLE_DATA add datafile '/opt/oracle/oradata/test/exp_data2.data' size 50M ;
   扩展临时表空间alter tablespace  EXAMPLE_TEMP add tempfile  '/opt/oracle/oradata/test/exp_tmp2.data' size 50M ;
3. 修改永久表空间大小alter database datafile '/opt/oracle/oradata/test/exp_data1.data' resize 100M;
    修改临时表空间大小alter database tempfile '/opt/oracle/oradata/test/exp_tmp1.data' resize 100M;
4.删除表空间,这个不区分drop tablespace EXAMPLE_TEMP including contents and datafiles;

四.角色权限管理
1.系统权限
ORACLE7提供了80多种系统权限,每种系统权限允许用户执行特定的数据库操作。
系统权限的授予命令为GRANT,例如把创建任何表视图的权限授予用户:
grant create any view to my_user;  -- grant xx to xx
系统权限的撤销命令为REVOKE,例如将用户的create any view 权限撤销:
revoke create any view from my_user; --revoke  xx from xx
2.实体权限
每种类型的实体有与之相关的实体权限。
赋予用户实体权限:
grant select,insert on my_table to my_user; -- grant xx on xx to xx
实体权限的撤销
revoke select,insert on my_table from my_user; --revoke xx on xx from xx
3.管理角色
角色是许多权限和角色的组合。
创建角色
CREATE ROLE  my_role identified by  my_passwd;
使用角色,可以通过修改用户的缺省角色来使用角色,或通过授权的方法来将角色授予其它角色或用户。
修改缺省角色alter user my_user default role  my_role;
授权grant  my_role to my_user;
使角色失效 DBA可以通过控制角色的生效或失效,来暂时回收用户的一部分权限。
set role my_role disable;
删除角色 这将会影响到拥有该角色的用户和其它角色的权限。
drop role my_role


五. 用户管理
1.创建用户
create user  my_user  identified by  passwd  --创建用户,密码
default tablespace  EXAMPLE_DATA  --默认表空间
temporary tablespace  EXAMPLE_TEMP ; --临时表空间
grant connect, resource to my_user ;   
grant UNLIMITED TABLESPACE to my_user ;  --赋予权限

2.修改用户
修改密码:alter user my_user identified by my_pass;
修改默认表空间:alter user my_user default tablespace my_space;
修改临时表空间:alter user my_user  tempory tablespace my_temp;

3.删除用户
DROP USER USER_NAME [CASCADE]
若不使用CASCADE选项,则必须在该用户的所有实体都删除之后,才能删除该用户。使用CASCADE后,则不论用户实体有多大,都一并删除。

4. 查询用户
显示当前用户名 show user
查询当前用户的角色:select * from user_role_privs; 或者select * from session_roles;
查询用户默认表空间:select default_tablespace from dba_users where username = upper('my_user' );--Oracle中存储的用户名转换成大写,查询要求使用DBA权限用户
查询用户临时表空间:select temporary_tablespace from dba_users where username = upper('my_user');

六.数据文件被误删后的处理
如果在删除表空间之前,删除了Oracle的数据文件,比如说,表空间EXAMPLE_DATA存在但是所对应数据文件$ORACLE_BASE/oradata/$ORACLE_SID/exp_data1.data被删除了,Oracle

读控制文件时,和打开数据库时所面对的参数不一致,Oracle数据库将不能open,解决这种问题的方法是把该文件对应的表空间先卸下,再删除,以保证控制文件描述和物理上存

在文件一致。

以sys用户登录Sql*Plus:
SQL>startup mount
SQL>alter database datafile '$ORACLE_BASE/oradata/$ORACLE_SID/exp_data1.data' offline drop;
--有时执行这条语句时会报错,可以分成两次执行
--alter database datafile '$ORACLE_BASE/oradata/$ORACLE_SID/exp_data1.data' offline;
--alter database datafile '$ORACLE_BASE/oradata/$ORACLE_SID/exp_data1.data' offline drop;
SQL>shutdown immediate
SQL>startup
SQL>drop tablespace EXAMPLE_DATA;

七.spfile文件、pfile文件丢失
1.spfile文件丢失,数据库不能启动
登录sqlplus,
SQL>startup nomount pfile="$ORACLE_BASE/oradata/$ORACLE_SID/init.ora";
SQL>create spfile FROM pfile[='$ORACLE_BASE/oradata/$ORACLE_SID/init.ora'];
SQL>shutdown immediate
SQL>startup


2.由spfile文件生成pfile文件
SQL>startup mount
SQL>create pfile='$ORACLE_BASE/my.ora' from spfile;

八.系统信息查询
1.当前存在哪些表空间
Select * from v$tablespace;

2.表空间有多大
Select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;

3.表空间还剩多少空闲空间
Select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;

4.查看违)(反唯一索引的表及列:
如果插入数据时系统提示:unique constraint (IMUSE01.SYS_C004960) violated.则说明在为IMUSE01用户插入数据时违)(反了唯一索引SYS_C004960。

5.查看违)(反唯一索引的表:
select table_name from user_indexes where index_name='SYS_C004960';

6.查看违)(反唯一索引的列:
select column_name from user_ind_columns where index_name='SYS_C004960';

7.查看编译无效的存储过程:
select object_name from user_objects where status='INVALID' and object_type='PROCEDURE';

8.查看当前运行的实例名:
select instance_name from v$instance;

9.查看数据库文件,共有三种数据库文件:控制文件、数据文件、日志文件
.查看控制文件
  select * from v$controlfile;
.查看数据文件
  select status,bytes,name from v$datafile;
.查看日志文件
  select name from v$logfile;

10. 查看表结构
desc 表名

11.查看实例名
show parameter instance_name

九.存储过程
1.        存储过程的写法:
create or replace procedure proc_name
(
ifield1 in number,
sfield2 out varchar
)
as
        v_err_code int;
        v_err_msg  varchar2(2048 ) ;
begin
        select field2 into sfield2 from tabSp where field1  = ifield1;
        DBMS_OUTPUT.PUT_LINE(sfield2);
exception
        when others then
        begin
v_err_code :=sqlcode;
       v_err_msg :=sqlerrm;
       DBMS_OUTPUT.PUT_LINE(v_err_code||'   '||v_err_msg);
                rollback;
        end;
end proc_name;

注意:
1)        存储过程的输入输出参数以逗号间隔,局部变量部分以分号间隔;
2)        存储过程的输入输出参数部分:最后一个参数后没有逗号;
3)        存储过程的局部变量部分:最后一个变量后有分号;
4)        可把多个存储过程保存到一个文件中,文件名必须用.sql后缀;
5)        每个存储过程结束后,要用“/”作为提交;
2.        存储过程的创建:
sqlplus 用户名/密码@数据库标识 @存储过程文件名
(这里的存储过程文件名可以省略.sql后缀,因为文件后缀缺省是.sql)
3.        存储过程的执行
sql>execute 存储过程名字(参数)

注意:
1.如果执行存储过程时提示:必须说明标识符’存储过程名’,则表明该存储过程不存在或编译未成功。可用如下命令重新编译该存储过程:
SQL>alter procedure存储过程名 compile;
2.如果执行存储过程时提示:未找到数据在’imuse01.test_adduser’,有可能是在该存储过程中存在类似”select col _name into tmp from table_name where …..”这样的

语句,而查询出的结果为空的缘故。
3.如果执行存储过程时提示:SQL缓冲区中无可执行的程序,说明此时缓冲区是空的。如在执行上面找不到相应记录的脚本后会提示该错误。
4.如果执行存储过程时提示:输入被截为1个字符,表明某个”/”之后少一个回车符。
5.如果执行存储过程时提示:创建的过程带有编译错误,可能是某个存储过程结束处少一个”/”。
6.如果执行存储过程时提示:缺少表达式,有可能是某个变量没被赋值。


十.Oracle排错处理
1.错误说明
ORACLE中出现的错误的格式为:错误类型-错误代码:错误信息,例如:
“ORA-1652: unable to extend temp segment by 128 in tablespace TEMP”
一般来说,这种错误信息比较简单,但是可以根据这个信息用oerr命令得到更详细的信息。

2.查看错误详细说明
oerr 是ORACLE提供的一个在服务器端使用的错误信息帮助命令。使用该命令前,必须先用ORACLE用户登录到服务器上,命令格式为:
oerr 错误类型 错误代码
返回信息格式为:
错误代码, “通用错误信息”
//*错误原因
//*应采取的动作

如对上面的错误可用如下命令:
oerr ora 1652

3.alert_$ORACLE_SID.ora(通常位置$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID /trace/)是ORACLE中一个十分有用的的文件,该文件在服务器的具体位置由

init$ORACLE_SID.ora中的参数“background_dump_dest"的值决定。该文件中的信息有:数据库每次STARTUP、 SHUTDOWN的具体信息;在数据库中进行的各种DML操作;数据库中出现的各种错误的信息等等,内容十分详细,并且有各种信息发生的具体时间。如果遇到问题,可以仔细浏览该文件,根据问题发生的时间来寻找相应的信息。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
2 [报告]
发表于 2010-12-30 23:11 |只看该作者
确实是比较常用的命令。

论坛徽章:
0
3 [报告]
发表于 2011-01-08 23:06 |只看该作者
看看了

论坛徽章:
1
辰龙
日期:2013-11-20 14:55:50
4 [报告]
发表于 2011-02-17 10:05 |只看该作者
比较基础 常用的

论坛徽章:
0
5 [报告]
发表于 2011-02-18 16:22 |只看该作者
"即使是日本总统,也是日本女人生的"
楼主,日本没有总统。号称最大的,它自称"天皇"。老二它自称"首相"的。
即使是日本女人生的,可经常不知道是哪个日本男人 日 的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP