日常收集整理的oracle常用命令大全(收藏)
一、Oracle的启动和关闭 1、在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 a、启动ORACLE系统 b、关闭ORACLE系统 启动oracle9i数据库命令: connect / as sysdba
Connected to an idle instance.
SQL> startup^C
SQL> startup
ORACLE instance started.
2、在双机环境下要想启动或关闭ORACLE系统必须首先切换到root用户,如下 a、启动ORACLE系统 b、关闭ORACLE系统 Oracle数据库有哪几种启动方式 说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。 2、startup mount dbname 安装启动,这种方式启动下可执行: 数据库日志归档、 数据库介质恢复、 使数据文件联机或脱机, 重新定位数据文件、重做日志文件。 执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置, 但此时不对数据文件和日志文件进行校验检查。 3、startup open dbname 4、startup,等于以下三个命令 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的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生,随着数据库的变化而变化, 数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。 很多时候,一般的ORACLE用户不知道如何有效地利用它。 dictionary 全部数据字典表的名称和解释,它有一个同义词dict dict_column 全部数据字典表里字段名称和解释 如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句: select * from dictionary where instr(comments,'index')>0;如果我们想知道user_indexes表各字段名称的详细含义,可以用下面这条SQL语句: select column_name,comments from dict_columns where table_name='USER_INDEXES';依此类推,就可以轻松知道数据字典的详细名称和解释,不用查看ORACLE的其它文档资料了。 下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。 1、用户 查看当前用户的缺省表空间 select username,default_tablespace from user_users; 查看当前用户的角色 查看当前用户的系统权限和表级权限 2、表 查看用户下所有的表 查看名称包含log字符的表 查看某表的创建时间 查看某表的大小 查看放在ORACLE的内存区里的表 3、索引 查看索引个数和类别 查看索引被索引的字段 查看索引的大小 4、序列号 查看序列号,last_number是当前值 5、视图 查看视图的名称 查看创建视图的select语句 6、同义词 查看同义词的名称 7、约束条件 查看某表的约束条件
8、存储函数和过程 查看函数和过程的状态 查看函数和过程的源代码 三、查看数据库的SQL 1、查看表空间的名称及大小 2、查看表空间物理文件的名称及大小 3、查看回滚段名称及大小 4、查看控制文件 5、查看日志文件 6、查看表空间的使用情况 SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED,C.BYTES FREE,(B.BYTES100)/A.BYTES "% USED",(C.BYTES100)/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; 7、查看数据库库对象 8、查看数据库的版本 9、查看数据库的创建日期和归档方式 四、ORACLE用户连接的管理 用系统管理员,查看当前数据库有几个用户连接: select username,sid,serial# from v$session;如果要停某个连接用 alter system kill session 'sid,serial#';如果这命令不行,找它UNIX的进程数 select pro.spid from v$session ses,v$process pro where ses.sid=21 and ses.paddr=pro.addr;说明:21是某个连接的sid数 然后用 kill 命令杀此进程号。 五、SQL*PLUS使用 a、近入SQL*Plus $sqlplus 用户名/密码 退出SQL*Plus SQL>exit b、在sqlplus下得到帮助信息 列出全部SQL命令和SQL*Plus命令 SQL>help 列出某个特定的命令的信息 SQL>help 命令名 c、显示表结构命令DESCRIBE SQL>DESC 表名 d、SQL*Plus中的编辑命令 显示SQL缓冲区命令 SQL>L 修改SQL命令 首先要将待改正行变为当前行 SQL>n 用CHANGE命令修改内容 SQL>c/旧/新 重新确认是否已正确 使用INPUT命令可以在SQL缓冲区中增加一行或多行 SQL>i SQL>输入内容 e、调用外部系统编辑器 SQL>edit 文件名 可以使用DEFINE命令设置系统变量EDITOR来改变文本编辑器的类型,在login.sql文件中定义如下一行 DEFINE_EDITOR=vi f、运行命令文件 SQL>START test 常用SQL*Plus语句 a、表的创建、修改、删除 创建表的命令格式如下: create table 表名 (列说明列表); 为基表增加新列命令如下: ALTER TABLE 表名 ADD (列说明列表) 例:为test表增加一列Age,用来存放年龄 修改基表列定义命令如下: ALTER TABLE 表名 例:将test表中的Count列宽度加长为10个字符 b、将一张表删除语句的格式如下: DORP TABLE 表名; 例:表删除将同时删除表的数据和表的定义 sql>drop table test c、表空间的创建、删除 六、ORACLE逻辑备份的SH文件 完全备份的SH文件:exp_comp.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager full=y inctype=complete file=/oracle/export/db_comp$rq.dmp" 累计备份的SH文件:exp_cumu.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager full=y inctype=cumulative file=/oracle/export/db_cumu$rq.dmp" 增量备份的SH文件: exp_incr.sh rq=` date +"%m%d" ` su - oracle -c "exp system/manager full=y inctype=incremental file=/oracle/export/db_incr$rq.dmp" root用户crontab文件 0 2 1 * * /oracle/exp_comp.sh 30 2 * * 0-5 /oracle/exp_incr.sh 45 2 * * 6 /oracle/exp_cumu.sh 当然这个时间表可以根据不同的需求来改变的,这只是一个例子。 七、ORACLE 常用的SQL语法和数据对象 一.数据控制语句 (DML) 部分1.INSERT (往数据表里插入记录的语句)字符串类型的字段值必须用单引号括起来,例如: 'GOOD DAY' 如果字段值里包含单引号' 需要进行字符串转换,我们把它替换成两个单引号''. 字符串类型的字段值超过定义的长度会出错,最好在插入前进行长度校验. 日期字段的字段值可以用当前数据库的系统时间SYSDATE,精确到秒 或者用字符串转换成日期型函数TO_DATE(‘2001-08-01','YYYY-MM-DD') TO_DATE()还有很多种日期格式,可以参看ORACLE DOC. 年-月-日 小时:分钟:秒 的格式YYYY-MM-DD HH24:MI:SS INSERT时最大可操作的字符串长度小于等于4000个单字节,如果要插入更长的字符串,请考虑字段用CLOB类型, INSERT时如果要用到从1开始自动增长的序列号,应该先建立一个序列号 CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 其中最大的值按字段的长度来定,如果定义的自动增长的序列号 NUMBER(6),最大值为999999 2.DELETE (删除数据表里记录的语句)DELETE FROM表名 WHERE 条件; 注意:删除记录并不能释放ORACLE里被占用的数据块表空间. 它只把那些被删除的数据块标成unused. 如果确实要删除一个大表里的全部记录,可以用 TRUNCATE 命令,它可以释放占用的数据块表空间 3.UPDATE (修改数据表里记录的语句)UPDATE表名 SET 字段名1=值1,字段名2=值2,…… WHERE 条件; 如果修改的值N没有赋值或定义时,将把原来的记录内容清为NULL,最好在修改前进行非空校验; 注意事项: A. 以上SQL语句对表都加上了行级锁, 确认完成后,必须加上事物处理结束的命令 COMMIT 才能正式生效, B. 在运行INSERT,DELETE 和 UPDATE 语句前最好估算一下可能操作的记录范围, (编辑:商洛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |