Oracle学习:sqlplus常用命令使用
show和set命令是两条用于维护SQL*Plus系统变量的命令
SQL> show all --查看所有68个系统变量值
SQL> show user --显示当前连接用户
SQL> show error --显示错误
SQL> set heading off --禁止输出列标题,默认值为ON
SQL> set feedback off --禁止显示最后一行的计数反馈信息,默认值为"对6个或更多的记录,回送ON"
SQL> set timing on --默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能
SQL> set sqlprompt "SQL> " --设置默认提示符,默认值就是"SQL> "
SQL> set linesize 1000 --设置屏幕显示行宽,默认100
SQL> set autocommit ON --设置是否自动提交,默认为OFF
SQL> set pause on --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页
SQL> set arraysize 1 --默认为15
SQL> set long 1000 --默认为80
说明:
long值默认为80,设置1000是为了显示更多的内容,因为很多数据字典视图中用到了long数据类型,如:
SQL> desc user_views
列名 可空值否 类型
------------------------------- -------- ----
VIEW_NAME NOT NULL VARCHAR2(30)
TEXT_LENGTH NUMBER
TEXT LONG
命令列表:
假设当前执行命令为:select * from tab;
(a)ppend 添加文本到缓冲区当前行尾 a order by tname 结果:select * from tab order by tname;
(注:a后面跟2个空格)
(c)hange/old/new 在当前行用新的文本替换旧的文本 c/*/tname 结果:select tname from tab;
(c)hange/text 从当前行删除文本 c/tab 结果:select tname from ;
del 删除当前行
del n 删除第n行
(i)nput 文本 在当前行之后添加一行
(l)ist 显示缓冲区中所有行
(l)ist n 显示缓冲区中第 n 行
(l)ist m n 显示缓冲区中 m 到 n 行
run 执行当前缓冲区的命令
/ 执行当前缓冲区的命令
r 执行当前缓冲区的命令
@文件名 运行调入内存的sql文件,如:
SQL> edit s<回车>
如果当前目录下不存在s.sql文件,则系统自动生成s.sql文件,
在其中输入“select * from tab;”,存盘退出。
SQL> @s<回车>
系统会自动查询当前用户下的所有表、视图、同义词。
@@文件名 在.sql文件中调用令一个.sql文件时使用
save 文件名 将缓冲区的命令以文件方式存盘,缺省文件扩展名为.sql
get 文件名 调入存盘的sql文件
start 文件名 运行调入内存的sql文件
spool 文件名 把这之后的各种操作及执行结果“假脱机”即存盘到磁盘文件上,默认文件扩展名为.lst
spool 显示当前的“假脱机”状态
spool off 停止输出
例:
SQL> spool a
SQL> spool
正假脱机到 A.LST
SQL> spool off
SQL> spool
当前无假脱机
exit 退出SQL*PLUS
desc 表名 显示表的结构
show user 显示当前连接用户
show error 显示错误
show all 显示所有68个系统变量值
edit 打开默认编辑器,Windows系统中默认是notepad.exe,把缓冲区中最后一条SQL语句调入afiedt.buf文件中进行编辑
edit 文件名 把当前目录中指定的.sql文件调入编辑器进行编辑
clear screen 清空当前屏幕显示
-----------------------------------------------------------------------------------------------
附:上机练习
内容:1.创建一数据库,启动实例并装配它。
2.通过访问数据字典了解数据库的结构及实例结构。
步骤:
一.创建数据库/oracle/目录,ls查看其结构。
-------- clt1 ---- oradata -- ora
| |--- testdata -- test
|
|------- ctl2 ----- oradata -- ora
| |--- testdata -- test
|
|------- ctl3 … …
以上目录为各数据库中数据文件存放目录。
效仿以上的目录结构,在ctl1、ctl2、clt3目录下再建一个tstdata目录,并在各tstdata
目录下建立一个tst目录
cd /oracle/app/oracle/admin
此目录为Oracle各数据库的管理目录。
cd test
进入test目录了解Oracle目录组织结构(OFA结构),结合ls命令。
ora ------- bdump 后台存储文件目录(BACKGROUP_DUMP_DEST的值)
|------ udump 用户转储文件目录(USER_DUMP_DEST的值)
|------ cdump 核心文件
|------ pfile init.ora和任何其它数据库初始化参数
|------ create 用于创建初始化数据和数据库对象的脚本
|------ SQL 数据库管理SQL文件
进入create目录阅读crdbtest.sql及crdb2test.sql这两个数据库ORA的创建脚本,进而知
道创建数据库的过程命令。
效防test下的目录结构,创建一名为tst的目录,拷贝test/pfile及test/create下的所有
文件到对应目录。
Cd /oracle/app/oracle/admin
Mkdir tst
Cd tst
Mkdir bdump
Mkdir udump
Mkdir cdump
Mkdir pfile
Mkdir create
Mkdir sql
Cp ../test/pfile/* pfile
Cp ../test/create/* create
进入tst/pfile目录,启动vi编辑器编辑configora.ora文件:
将所有与原来test目录有关的目录全以tst替换test.
如:原来的control_files参数中
把/oracle/ctl1/oradata/test/control01.ctl,改为
/oracle/ctl1/oradata/tst/control01.ctl,
需要改的地方还有:core_dump_dest
user_dump_dest
db_name 参数行
把文件configtest.ora改名为configtst.ora
inittest.ora 改名为inittst.ora
inittest_0.ora 改名为inittst_0.ora
编辑inittst.ora及inittst_0.ora文件,把它们中的前面的ifile指
定文件原来为:
ifile = /oracle/app/oracle/admin/test/pfile/configtest.ora
改为:
ifile = /oracle/app/oracle/admin/tst/pfile/configtst.ora spool /oracle/app/oracle/admin/test/create/crdbtest.lst
startup nomount pfile= …
create database "test" 改为create database “tst”
将create database语句的用的character set改为ZHS16CGB231280,
原先为US7ASCII。ZHS16CGB231280为Oracle中支持中文国标的字符集名。
编辑crdb2tst.sql文件,将其做类似以上的修改(将创建命令中所用到的有关原来
test目录改为tst目录,并可以适当调节你所要建立数据库的相关数据文件大小。
修改ORACLE_SID环境变量值为新的SID名,此SID告诉oracle欲启动的实例名。
ORACLE_SID=tst;exprot ORACLE_SID
进入tst/create目录,启动服务器管理器(svrmgrl)执行crdbtst.sql脚本:
cd /oracle/app/oracle/admin/tst/create
svrmgrl @crdbtst.sql
执行后在svrmgrl状态下再执行crdb2tst.sql脚本。
Svrmgrl> start crdb2tst.sql
创建过程需要数分钟,请耐心等待 …
等上以脚本执行完毕,新的数据库已建立。此时,可以退出svrmgrl。
拷贝tst/pfile/inittst.ora文件至$ORACLE_HOME/dbs目录,省得每次启动svrmg
rl还要指定init.ora文件位置。在启动svrmgrl时,若没有特别指定init.ora的文件,ORA
CLE将在$ORACLE_HOME/dbs找init<SID>.ora作为其启动的初始化参数文件,SID为ORACLE_S
ID环境变量值。
再次启动svrmgrl(注意:ORACLE_SID值必须已改为新的SID值。)
svrmgrl
svrmgrl>connect internal;
svrmgrl>startup (启动数据库)
svrmgrl>start $ORACLE_HOME/dbs/catproc.sql
catproc.sql脚本安装Procedural Option所必需的脚本或PL/SQL对象及其支持的数据库结
构。
至此,我们已成功创建了一个新的数据库tst,并且我们也用实例tst来装配启动它。
为了能够让用户从远程访问此数据库,我们还必须配置Oracle的TNS(Transparent Netwo
rk Service),配置这一服务只要改变一下其配置文件listener.ora即可,最简单的办法
是拷贝一个副本备份,然后直接编辑它,把原来的实例名更换为新的实例名即可。更名后
,重新启动tnslistener进程即生效。
$lsnrctl stop (在操作系统状态下执行)
$lsnrctl start
更改SYS及SYSTEM用户的默让密码。
grant connect to sys(或system) identified by <new_password>
或 alter user sys identified by <new_password>
以上命令可以在服务器管理器状态下执行,也可以在Sqlplus下执行。
二、考察数据库及实例结构
启动sqlplus用SYS或SYSTEM用户连接。
或启动svrmgrl,connect internal
1. 查询实例启动时间。
select to_char(a.value,’J’)+b.value/86400,
’HH24:MI:SS DD-MON-RR’) start_time
from v$instance a,v$instance b
where a.key=’STARTUP TIME –JULIAN’ AND
b.key=’STARTUP TIME –SECONDS’;
观看实例存储器分配信息
SELECT name,bytes from v$sgastat
Where name in (‘free memory’,’fixed_sga’,’db_block_buffers’,
‘log_buffer’,’dictionary cache’,’library cache’,
‘sql area’);
查看进程实例进程
select spid,name from v$process, v$bgprocess where addr =paddr;
查看数据库用户
select username from dba_users;
查看活动的控制文件
select * from v$controlfile
查看回滚段信息
select a.segment_name,b.bytes,b.extents,a.tablespace_name,
c.shrinks,c.extends,c.hwmsize
from dba_rollback_segs a,dba_segments b,v$rollstat c
where a.segment_id=c.usn and a.segment_name=b.segment_name;
查看重做日志信息
select member,bytes,members,a.status
from v$log, V$logfile b
where a.group# = b.group#
order by member;
查看数据库链接
select spid,mame from v$sysstatprocess,v$sysstatbgprocess
where paddr(+)=addr;
查看多线程服务器进程
select * from v$dispatcher;
select * from v$shared_server;