- 论坛徽章:
- 3
|
本帖最后由 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操作;数据库中出现的各种错误的信息等等,内容十分详细,并且有各种信息发生的具体时间。如果遇到问题,可以仔细浏览该文件,根据问题发生的时间来寻找相应的信息。 |
|