Oracle常用命令.docx
- 文档编号:14168653
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:27
- 大小:28.95KB
Oracle常用命令.docx
《Oracle常用命令.docx》由会员分享,可在线阅读,更多相关《Oracle常用命令.docx(27页珍藏版)》请在冰点文库上搜索。
Oracle常用命令
Oracle数据库的日常使用命令
1
监听器启动和关闭
1.1查看监听状态
lsnrctlstatus
1.2启动监听
lsnrctlstart
1.3停止监听
lsnrctlstop
2启动和关闭数据库
2.1确保监听器处于启动状态
2.2启动数据库
sqlplus/nolog;
SQL>conn/assysdba;
SQL>startup
(若启动文件名不是ORACLE缺省的文件名,则启动时应带启动目录与文件名)
SQL>startuppfile=
2.3数据库关闭
sqlplus"/assysdba"
SQL>shutdownABORT|IMMEDIATE|NORMAL|TRANSACTIONAL
一般选择IMMEDIATE方式(如果shutdown不跟任何参数,默认表示等待事务结束后再关闭数据库,如果这个时候有用户进程使用着,那么数据库就不能停止。
)
3安装平台需要修改Oracle数据库的一些系统数据
(1)启动sqlplus。
oracle%sqlplus"/assysdba"
(2)修改操作系统鉴权用户的前缀,允许远程鉴权。
SQL>altersystemsetremote_login_passwordfile=NONEscope=spfile;
SQL>altersystemsetos_authent_prefix="ops$"scope=spfile;
SQL>altersystemsetremote_os_authent=truescope=spfile;
SQL>ALTERSYSTEMSETdb_cache_size=3300MSCOPE=MEMORY
(3)修改log_buffer参数为1MB。
SQL>altersystemsetlog_buffer=10485760scope=spfile;
(4)修改fast_start_mttr_target参数为1800秒。
SQL>altersystemsetfast_start_mttr_target=1800scope=spfile;
(5)创建getpwd命令所需要的密码表:
A、确保存在表mgr_passwd。
如没有以ORACLE系统用户身份执行以下操作
createtablemgr_passwd(m_uservarchar2(20),m_passwdvarchar2(40),
primarykey(m_user));
//PWD=`GetPwd$DBNAME`
//echo"一条SQL语句;"|sqlplus$DBNAME/$PWD>/dev/null2>&1
注意在SQL语句后加分号。
这里的GetPwd是一个PRO*C程序,它有两个作用,一是为新用户随机生成一个口令,并将此口令插入到ORACLE中的口令表(mgr_passwd)中去;另一个作用是从口令表中获得已有用户的口令。
口令表是事先创建好的。
这个程序将在后面的移植中频繁的调用。
B、分配mgr_passwd表的select,insert,update,delete权限给public;
grantselect,insert,update,deleteonmgr_passwdtopublic;
C、应该建立mgr_passwd的synonym。
如果没有,需创建
createpublicsynonymmgr_passwdformgr_passwd;
(6)修改完毕后需要重启动数据库服务器使之生效。
SQL>shutdownimmediate
SQL>startup
(7)检查修改是否成功。
SQL>selectname,valuefromv$parameterwherename='log_buffer';
NAME
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
log_buffer
10485760
SQL>selectname,valuefromv$parameterwherename='fast_start_mttr_target';
NAME
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
fast_start_mttr_target
1800
SQL>selectname,valuefromv$parameterwherename='remote_os_authent';
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
remote_os_authent
FALSE
SQL>selectname,valuefromv$parameterwherename='os_authent_prefix';
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
os_authent_prefix
ops$
SQL>selectname,valuefromv$parameterwherename='remote_login_passwordfile';
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
remote_login_passwordfile
EXCLUSIVE
4数据库用户管理
4.1创建用户
createuserusername
identifiedbypassword
defaulttablespacedataspacename
temporarytablespacetempspacename
例子:
createuserops$scplnidentifiedbyscplndefaulttablespace"DATA"temporarytablespace"TEMP";
4.2修改用户
将imuse203的口令改为hello:
alteruserimuse203identifiedbyhello;
将imuse203的缺省表空间改为IMUSE02:
alteruserimuse203defaulttablespaceIMUSE02;
将imuse203的临时表空间改为IMUSE02_TMP:
alteruserimuse203temporytablespaceIMUSE02_TMP;
4.3删除用户
删除用户的命令为:
DROPUSER用户名[CASCADE]
若不使用CASCADE选项,则必须在该用户的所有实体都删除之后,才能删除该用户。
使用CASCADE后,则不论用户实体有多大,都一并删除。
4.4用户解锁
1)查询Oracle系统中被锁住的用户信息
selectusername,account_status,lock_datefromdba_users;
2)使用ALTERUSERS解锁被锁住的SMPORA用户。
SQL>showuser;
SQL>alteruserSMPORAaccountunlock;
5Oracle的权限管理
5.1系统权限
ORACLE7提供了80多种系统权限,每种系统权限允许用户执行特定的数据库操作。
系统权限的授予命令为GRANT,例如把创建任何表视图的权限授予imuse01用户:
GRANTcreateanyviewTOimuse01;
系统权限的回收命令为REVOKE,例如将createanyview权限从imuse01用户手中收回:
REVOKEcreateanyviewFROMimuse01;
5.2实体权限
每种类型的实体有与之相关的实体权限。
授予实体权限的命令举例(将basetab表上的Select和Insert权限授给imuse01):
GRANTselect,insertONbasetabTOimuse01;
回收实体权限的命令举例(将basetab表上的Select权限从imuse01手中回收):
REVOKEselectONbasetabFROMimuse01;
例子:
为业务用户赋权限
grantconnect,resource,dbatoops$smpln;
grantconnect,resource,dbatosmpmupto;
为smp用户授权
grantselectonsys.v_$instancetoops$smpln;
grantselectonsys.v_$sessiontoops$smpln;
grantselectonDBA_FREE_SPACEtoops$smpln;
grantselectonDBA_DATA_FILEStoops$smpln;
为sdu用户授权
grantselectonsys.v_$instancetoops$sduora;
grantselectonsys.v_$sessiontoops$sduora;
5.3管理角色
角色是许多权限和角色的组合。
它极大地方便了ORACLE的权限管理。
"创建角色,如创建一个名为dept1的角色,口令为hello:
CREATEROLEROLEiMUSE01IDENTIFIEDBYhello;
"使用角色,可以通过修改用户的缺省角色来使用角色,或通过授权的方法来将角色授予其它角色或用户。
如将imuse01用户的缺省角色修改为RoleTmp:
ALTERUSERimuse01DEFAULTROLERoleTmp;
将角色RoleTmp角色授予imuse01:
GRANTRoleTmpTOimuse01;
"使角色生效或失效,DBA可以通过控制角色的生效或失效,来暂时回收用户的一部分权限。
如使RoleTmp角色失效:
SETROLERoleTmpDISABLE;
"删除角色,这将会影响到拥有该角色的用户和其它角色的权限。
用DROPROLE命令删除角色,如:
DROPROLERoleTmp;
6更改字符集为中文
sqlplus/nolog;
SQL>conn/assysdba;
SQL>SHUTDOWNIMMEDIATE;
SQL>STARTUPMOUNT;
SQL>ALTERSYSTEMENABLERESTRICTEDSESSION;
SQL>ALTERSYSTEMSETJOB_QUEUE_PROCESSES=0;
SQL>ALTERDATABASEOPEN;
SQL>ALTERDATABASECHARACTERSETZHS16GBK;
(这一步一般会出错,所以需要重复执行上面从SHUTDOWNIMMEDIATE开始的所有语句)
SQL>SHUTDOWNIMMEDIATE;
SQL>STARTUP;
7SQL文件的执行
7.1使用@执行sql文件(baseline.sql文件在同一目录下面)
1)
<5rx6600[scpmupto]:
/localhost>sqlplus/
SQL*Plus:
Release11.1.0.6.0-Productionon星期三9月1716:
21:
272008
Copyright(c)1982,2007,Oracle.Allrightsreserved.
Connectedto:
OracleDatabase11gEnterpriseEditionRelease11.1.0.6.0-64bitProduction
WiththePartitioning,OLAP,DataMiningandRealApplicationTestingoptions
SQL>@baseline_sql
2)sqlplus/@baseline_sql
3)sqlplusops\$scpmupto/scpmupto@oracle1@baseline.sql
4)catoracle/install_baseline.sql|sqlplus$SMPDBNAME/`getpwd$SMPDBNAME`
7.2将执行的sql语句结果保存在文件
SQL>spoola.txt
SQL>SELECT*FROMDEPTWHEREDEPTNO=10;
DEPTNODNAMELOC
10ACCOUNTINGNEWYORK
SQL>spooloff
7.3将执行的sql语句保存在文件中:
SQL>SELECT*FROMDEPTWHEREDEPTNO=10;
SQL>SAVEb.sqlCREATE/REPLACE/APPEND
7.4将文件里面的sql语句读到SQL缓冲区中
SQL>getb.sql
1*SELECT*FROMDEPTWHEREDEPTNO=10
8查询语句
8.1当前存在哪些表空间
Select*fromv$tablespace;
8.2表空间有多大
Selecttablespace_name,sum(bytes)/1024/1024fromdba_data_filesgroupbytablespace_name;
8.3表空间还剩多少空闲空间
Selecttablespace_name,sum(bytes)/1024/1024fromdba_free_spacegroupbytablespace_name;
8.4查询imuse01用户所使用的缺省表空间
selectdefault_tablespacefromdba_userswhereusername='imuse01';
8.5查询imuse01用户所使用的临时表空间
selecttemporary_tablespacefromdba_userswhereusername='imuse01';
8.6查询当前用户所拥有的角色
select*fromsession_roles;
8.7查看违反唯一索引的表及列:
如果插入数据时系统提示:
uniqueconstraint(IMUSE01.SYS_C004960)violated.则说明在为IMUSE01用户插入数据时违反了唯一索引SYS_C004960。
8.8查看违反唯一索引的表:
selecttable_namefromuser_indexeswhereindex_name='SYS_C004960';
8.9查看违反唯一索引的列:
selectcolumn_namefromuser_ind_columnswhereindex_name='SYS_C004960';
8.10查看编译无效的存储过程:
selectobject_namefromuser_objectswherestatus='INVALID'andobject_type='PROCEDURE';
8.11查看当前运行的实例名:
selectinstance_namefromv$instance;
9表空间管理
9.1创建表空间
createtablespaceIMUSE01
datafile'/export/home/oracle/oradata/mdspdata/imuse01_dat1'
size100M;
9.2增加表空间的大小
如将表空间IMUSE01增加100M:
altertablespaceIMUSE01
adddatafile'/export/home/oracle/oradata/mdspdata/imuse01_dat2'
size100M;
9.3修改表空间的大小
如将表空间IMUSE01改为1000M:
alterdatabase
datafile'/export/home/oracle/oradata/mdspdata/imuse01_dat1'
resize1000M;
9.4删除表空间
droptablespaceimuse01cascade;
10数据文件被误删后的处理
如果不小心物理上删除了一Oracle的数据文件,比如说,某应用表空间所对应数据文件"adc.dbf",Oracle读控制文件时,和打开数据库时所面对的参数不一致,Oracle数据库将启动不了,解决这种问题的方法是把该文件对应的表空间先卸下,再删除,以保证控制文件描述和物理上存在文件一致。
以sys用户登录并进入Sql*Plus:
SQL>startupmount
SQL>alterdatabasedatafile'/directory/abc.dbf'offline;
SQL>alterdatabaseopen;
SQL>droptablespaceabc;
11查询当前系统的配置参数
有三种查询方法:
1.静态查询:
即直接查询initXXXX.ora文件(XXXX为ORACLE的SID)。
因为有很多系统参数使用的是
缺省值,并未在该文件中给出,所以该方法不能看到所有参数及其含义。
2.在SQL*PLUS中用命令查询
1)显示所有数据库参数值
SQL>showparameters;
2)显示含有"sort"的参数的值
SQL>showparametersort;
3.在SQL*PLUS中用SQL语句查询
SQL>selectname,type,valuefromv$parameterwherename='db_block_buffers';
12显示当前用户
sql>showuser;
13Oracle排错处理
13.1错误说明
ORACLE中出现的错误的格式为:
错误类型-错误代码:
错误信息,例如:
"ORA-1652:
unabletoextendtempsegmentby128intablespaceTEMP"
一般来说,这种错误信息比较简单,但是可以根据这个信息用oerr命令得到更详细的信息。
13.2查看错误详细说明
oerr是ORACLE提供的一个在服务器端使用的错误信息帮助命令。
使用该命令前,必须先用ORACLE用户登录到服务器上,命令格式为:
oerr错误类型错误代码
返回信息格式为:
错误代码,"通用错误信息"
//*错误原因
//*应采取的动作
如对上面的错误可用如下命令:
oerrora1652
13.3alert_XXXX.ora(XXXX为ORALE的SID)文件的说明
alert_XXXX.ora是ORACLE中一个十分有用的的文件,该文件在服务器的具体位置由initXXXX.ora中的参数"background_dump_dest"的值决定。
该文件中的信息有:
数据库每次STARTUP、SHUTDOWN的具体信息;在数据库中进行的各种DML操作;数据库中出现的各种错误的信息等等,内容十分详细,并且有各种信息发生的具体时间。
如果遇到问题,可以仔细浏览该文件,根据问题发生的时间来寻找相应的信息。
14查看表结构
SQL>desc表名
15查看数据库文件
共有三种数据库文件:
控制文件、数据文件、日志文件
1.查看控制文件
select*fromv$controlfile;
2.查看数据文件
selectstatus,bytes,namefromv$datafile;
3.查看日志文件
selectnamefromv$logfile;
16将select查询出的结果保存至一个文件
SQL>spool/result.txt
SQL>select*frombasetab;
SQL>spooloff
则从basetab查询出的结果都被保存到当前路径下的result.txt文件中
17存储过程
1.存储过程的写法:
createorreplaceprocedureproc_name
(
ifield1innumber,
sfield2outvarchar
)
as
v_err_codeint;
v_err_msgvarchar2(2048);
begin
selectfield2intosfield2fromtabSpwherefield1=ifield1;
DBMS_OUTPUT.PUT_LINE(sfield2);
exception
whenothersthen
begin
v_err_code:
=sqlcode;
v_err_msg:
=sqlerrm;
DBMS_OUTPUT.PUT_LINE(v_err_code||''||v_err_msg);
rollback;
end;
endproc_name;
注意:
1)存储过程的输入输出参数以逗号间隔,局部变量部分以分号间隔;
2)存储过程的输入输出参数部分:
最后一个参数后没有逗号;
3)存储过程的局部变量部分:
最后一个变量后有分号;
4)可把多个存储过程保存到一个文件中,文件名必须用.sql后缀;
5)每个存储过程结束后,要用"/"作为提交;
2.存储过程的创建:
sqlplus用户名/密码@数据库标识@存储过程文件名
(这里的存储
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle 常用命令