Oracle数据库的日常使用命令1.基本知识 (2)2.启动和关闭数据库 (3)3.控制监听 (3)4.数据库用户管理 (3)5.Oracle的权限管理 (4)6.更改字符集为中文 (5)7.查询语句 (5)8.表空间管理 (6)9.数据文件被误删后的处理 (7)10.查询当前系统的配置参数 (7)11.显示当前用户 (8)12.Oracle排错处理 (8)13.查看表结构 (8)14.查看数据库文件 (8)15.将select查询出的结果保存至一个文件 (9)16.存储过程 (9)17.数据库的备份与恢复 (10)Export 转入程序 (10)Import 恢复程序 (12)增量卸出/装入 (14)18.如何查看各个表空间占用磁盘情况? (15)19.如何知道数据裤中某个表所在的tablespace? (15)20.内核参数的应用 (15)21.如何单独备份一个或多个表? (16)22.如何单独备份一个或多个用户? (16)23.如何显示当前连接用户? (16)24.如何外连接? (16)25.如何执行脚本SQL文件? (17)26.如何搜索出前N条记录? (18)27.为表创建序列 (18)28.查看本用户下的各种对象的SQL脚本 (18)29.SQL*Plus系统环境变量有哪些?如何修改? (20)30.如何在PL/SQL中读写文件? (20)31.某个数据文件损坏,如何打开数据库? (21)1. 基本知识一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上)每个数据库最少有一个表空间(SYSTEM表空间)建立SYSTEM表空间的目的是尽量将目的相同的表存放在一起,以提高使用效率,只应存放数据字典每个数据库最少有两个联机日志组,每组最少一个联机日志文件一个数据文件只能属于一个表空间一个数据文件一旦被加入到一个表空间中,就不能再从这个表空间中移走,也不能再加入到其他表空间中建立新的表空间需要建立新的数据文件数据文件被ORACLE格式化为ORACLE块,Oracle9i以前版本中,ORACLE块的大小是在第一次创建数据库时设定的,并且以后不能改变,要想改变,只能重建数据库一个段segment只能属于一个表空间,但可以属于多个数据文件一个区extent只能属于一个数据文件,即区间(extent)不能跨越数据文件PCTFREE和PCTUSED总和不能大于等于100单独一个事务不能跨越多个回滚段索引表不含ROWID值一个事务即使不被提交,也会被写入到重做日志中。
一个块的最大长度为16KB(有2K、4K、8K、16K)每个数据库最大文件数(按块大小)2K块20000个文件4K块40000个文件8K块或以上65536个文件2. 启动和关闭数据库sqlplus /nolog;SQL >conn / as sysdba;SQL >startup(若启动文件名不是ORACLE缺省的文件名,则启动时应带启动目录与文件名)SQL>startup pfile=<file-pathr/init-file>SQL> shutdown immediate3. 控制监听1.启动监听lsnrctl start2.停止监听lsnrctl stop3.查看监听状态lsnrctl status4. 数据库用户管理1.创建用户如:create user imuse203identified by imuse203default tablespace IMUSE01temporary tablespace IMUSE01_TMP2.修改用户将imuse203的口令改为hello:alter user imuse203 identified by hello;将imuse203的缺省表空间改为IMUSE02:alter user imuse203 default tablespace IMUSE02;将imuse203的临时表空间改为IMUSE02_TMP:alter user imuse203 tempory tablespace IMUSE02_TMP;3.删除用户删除用户的命令为:DROP USER 用户名[CASCADE]若不使用CASCADE选项,则必须在该用户的所有实体都删除之后,才能删除该用户。
使用CASCADE后,则不论用户实体有多大,都一并删除。
5. Oracle的权限管理1.系统权限ORACLE7提供了80多种系统权限,每种系统权限允许用户执行特定的数据库操作。
系统权限的授予命令为GRANT,例如把创建任何表视图的权限授予imuse01用户:GRANT create any view TO imuse01;系统权限的回收命令为REVOKE,例如将create any view 权限从imuse01用户手中收回:REVOKE create any view FROM imuse01;2.实体权限每种类型的实体有与之相关的实体权限。
授予实体权限的命令举例(将basetab表上的Select和Insert权限授给imuse01):GRANT select,insert ON basetab TO imuse01;回收实体权限的命令举例(将basetab表上的Select权限从imuse01手中回收):REVOKE select ON basetab FROM imuse01;3.管理角色角色是许多权限和角色的组合。
它极大地方便了ORACLE的权限管理。
∙创建角色,如创建一个名为dept1的角色,口令为hello:CREATE ROLE ROLEiMUSE01 IDENTIFIED BY hello;∙使用角色,可以通过修改用户的缺省角色来使用角色,或通过授权的方法来将角色授予其它角色或用户。
如将imuse01用户的缺省角色修改为RoleTmp:ALTER USER imuse01 DEFAULT ROLE RoleTmp;将角色RoleTmp角色授予imuse01:GRANT RoleTmpTO imuse01;∙使角色生效或失效,DBA可以通过控制角色的生效或失效,来暂时回收用户的一部分权限。
如使RoleTmp角色失效:SET ROLE RoleTmp DISABLE;∙删除角色,这将会影响到拥有该角色的用户和其它角色的权限。
用DROP ROLE命令删除角色,如:DROP ROLE RoleTmp;6. 更改字符集为中文sqlplus /nolog;SQL>conn / as sysdba;SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP MOUNT;SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;SQL> ALTER DATABASE OPEN;SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;(这一步一般会出错,所以需要重复执行上面从SHUTDOWN IMMEDIATE开始的所有语句) SQL> SHUTDOWN IMMEDIATE;SQL> STARTUP;7. 查询语句当前存在哪些表空间Select * from v$tablespace;表空间有多大Select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;表空间还剩多少空闲空间Select tablespace_name,sum(bytes)/1024/1024 from dba_free_space group by tablespace_name;查询imuse01用户所使用的缺省表空间select default_tablespace from dba_users where username=‟imuse01‟;查询imuse01用户所使用的临时表空间select temporary_tablespace from dba_users where username=‟imuse01‟;查询当前用户所拥有的角色select * from session_roles;查看违反唯一索引的表及列:如果插入数据时系统提示:unique constraint (IMUSE01.SYS_C004960) violated.则说明在为IMUSE01用户插入数据时违反了唯一索引SYS_C004960。
查看违反唯一索引的表:select table_name from user_indexes where index_name=‟ SYS_C004960‟;查看违反唯一索引的列:select column_name from user_ind_columns where index_name=‟ SYS_C004960‟;查看编译无效的存储过程:select object_name from user_objects where status=‟INV ALID‟and object_type=‟PROCEDURE‟;查看当前运行的实例名:select instance_name from v$instance;8. 表空间管理1.创建表空间create tablespace IMUSE01datafile '/export/home/oracle/oradata/mdspdata/imuse01_dat1'size 100M;2.增加表空间的大小如将表空间IMUSE01增加100M:alter tablespace IMUSE01add datafile …/export/home/oracle/oradata/mdspdata/imuse01_dat2‟size 100M;3.修改表空间的大小如将表空间IMUSE01改为1000M:alter databasedatafile …/export/home/oracle/oradata/mdspdata/imuse01_dat1‟resize 1000M;4.删除表空间DROP tablespace BPOS01_temp;5.创建临时表空间create TEMPORARY TABLESPACE BPOS01_temptempfile '/opt/oracle/oradata/orcl/bpos01_dat3'size 100M;9. 数据文件被误删后的处理如果不小心物理上删除了一Oracle的数据文件,比如说,某应用表空间所对应数据文件”adc.dbf”,Oracle读控制文件时,和打开数据库时所面对的参数不一致,Oracle数据库将启动不了,解决这种问题的方法是把该文件对应的表空间先卸下,再删除,以保证控制文件描述和物理上存在文件一致。