oracle常用命令大全,Oracle数据库基本常用命令汇总
oracle常用命令大全,Oracle数据库基本常用命令汇总详细介绍
本文目录一览: Oracle数据库基本常用命令汇总
以下是对Oracle中的数据库基本常用命令进行了总结介绍 需要的朋友可以过来参考下 得到数据库名和创建日期 SELECT name created log_mode open_mode FROM v$database;
ORACLE数据库的计算机的主机名 ORACLE数据库的实例名及ORACLE数据库管理系统的版本信息 SELECT host_name instance_name version FROM v$instance;
为了知道oracle数据库版本的一些特殊信息 select * from v$version;
获取控制文件名字 select * from v$controlfile;
得到Oracle数据库的重做日志配置信息 SELECT group# members bytes status archived FROM v$log; select GROUP# MEMBER from v$logfile;
获取oracle的每个重做日志(成员)文件所存放的具 *** 置 select * from v$logfile;
知道ORACLE数据库的备份和恢复策略和归档文件的具 *** 置 archive log list
知道ORACLE数据库中到底有多少表空间以及每个表空间的状态 select tablespace_name block_size status contents logging from dba_tablespaces; select tablespace_name status from dba_tablespaces;
知道每个表空间存在哪个磁盘上以及文件的名字等信息 SELECT file_id file_name tablespace_name status bytes from dba_data_files; select file_name tablespace_name from dba_data_files;
知道Oracle数据库系统上到底有多少用户和都是什么时候创建的 select username created from dba_users; select username DEFAULT_TABLESPACE from dba_users;
从控制文件中取出信息涉及到以下一些相关的命令
复制代码 代码如下: select * from v$archived select * from v$archived_log select * from v$backup select * from v$database select * from v$datafile select * from v$log select * from v$logfile select * from v$loghist select * from v$tablespace select * from v$tempfile 控制文件由两大部份组成 可重用的部份和不可重用的部分 可重用的部分的大小可用 CONTROL_FILE_RECORD_KEEP_TIME 参数来控制 该参数的默认值为 天 即可重用的部份的内容保留 天 一周之后这部份的内容可能被覆盖 可重用的部份是供恢复管理器来使用的 这部份的内容 可以自动扩展 Oracle数据库管理员可以使用CREAT DATABASE或 CREAT CONTROLFILE语句中的下列关键字(参数)来间接影响不可重用的部份的大小
复制代码 代码如下: MAXDATAFILES MAXINSTANCES MAXLOGFILES MAXLOGHISTORY MAXLOGMEMBERS 查看控制文件的配置 SELECT type record_size records_total records_used FROM v$controlfile_record_section;
如果您的显示被分成了两部分 您需要使用类似于set pagesize 的SQL*Plus命令先格式化输出 有关的格式化输出命令有以下这些 record_size 为每个记录的字节数 records_total 为该段所分配的记录个数 records_used 为该段所使用的记录个数
知道控制文件中的所有数据文件(DATAFILE) 表空间(TABLESPACE) 和重做日志(REDO LOG)所使用的记录情况 SELECT type record_size records_total records_used FROM v$controlfile_record_section WHERE type IN ( ‘DATAFILE ‘TABLESPACE ‘REDO LOG );
获取控制文件名字 select value from v$parameter where name = control_files ; 或者 select * from v$controlfile
如何在一个已经安装的Oracle数据库中添加或移动控制文件呢? 以下是在一个已经安装的Oracle数据库中添加或移动控制文件的具体步骤
a 利用数据字典v$controlfile来获取现有控制文件名字
b 正常关闭Oracle数据库
c 将新的控制文件名添加到参数文件的CONTROL_FILES参数中
d 使用操作系统的复制命令将现有控制文件复制到指定位置
e 重新启动Oracle数据库
f 利用数据字典v$controlfile来验证新的控制文件名字是否正确
g 如果有误重做上述操作 如果无误删除无用的旧控制文件
注 如果您使用了服务器初始化参数文件(SPFILE) 您不能关闭Oracle数据库而且应该在第 步使用alter system set control_files的Oracle命令来改变控制文件的位置
复制代码 代码如下: SQL> alter system set control_files = ‘D:\Disk \CONTROL CTL ‘D:\Disk \CONTROL CTL ‘D:\Disk \CONTROL CTL SCOPE=SPFILE; 由于控制文件是一个极其种要的文件 除了以上所说的将控制文件的多个副本存在不同的硬盘上的保护措施外 在数据库的结构变化之后 您应立即对控制文件进行备份 可以用Oracle命令来对控制文件进行备份 alter database backup controlfile to ‘D:\backup\control bak ;
您也可将备份到一个追踪文件中 该追踪文件包含有重建控制文件所需的SQL语句 可使用以下SQL语句来产生这一追踪文件 alter database backup controlfile to trace;
lishixinzhi/Article/program/Oracle/201311/19116
oracle sqlplus 命令都有那些? show命令除了 parameter外,还有什么可以show。
1、alter
2、update
3、insert
4、delete
5、create
6、truncate
7、archive
......
show user
show error
......
你问的实在太广泛,自己好好看看书先。
要先学标准SQL语句,再学oracle语法
show user
show user??
一般在SQL>下进行SQLPLUS操作,都需要进行必要的环境设置才能完成我们所需要的输出。所有环境的设置由SET命令加相应的环境变量来完成。下面是常用的环境设置:
§2.5.1 ARRAYSIZE(取回的行数)
SET ARRAY[SIZE]{integer}
一次可以提取(Fetch)的行的数目,1->5000,当有较长字段时应设小些。
§2.5.2 AUTOCOMMIT(自动提交)
SET AUTO [COMMIT] { [ OFF | ON | IMM | n] }
用于在操作中是自动提交或是部分提交或是不自动提交。
1) 或IMM使得在完成每条SQL语句时将未提交的改变立刻提交给数据库系统。ON
2) 允许在用户发出COMMIT后,可以执行命令的数量(将n条SQL语句所做的改变进行提交)。N
3) 停止自动提交,用户必须用COMMIT命令才能被提交。OFF
§2.5.3 LINESIZE(行显示宽度)
可以设置LINESIZE环境变量来控制行的显示宽度,缺省是80个字符。
SET Lin[esize]{80|integer}
Integer =设置行宽度(字符个数),最大值999,如:
SQL>set linesize 160
§2.5.4 LONG(长类型显示字节数)
在缺省的SQL> 状态下,SQL>缓冲区用于显示LONG 的字节数只有80个字符。如果我们需要查询的列中含有 LONG类型的字段的话,就需要将LONG缓冲区设置大些。
SET LONG{80|integer}
Integer是 显示或拷贝long值的最大宽度, n=1->32767(但必须小于Maxdata值)
SQL>show Maxdata (最大行宽)
SQL>set long 2000
§2.5.5 PAGESIZE(页行数)
在缺省的SQL> 状态下,SQL>缓冲区显示页的行数是24行,其中22行显示数据,2行显示标题和横线。我们将pagesize 设置大些以减少提示标题和横线。
SET pag[esize] {24|integer}
SQL>SET pagesize 66
§2.5.6 PAUSE(暂停)
可以设置 PAUSE 为ON 或OFF来控制屏幕显示。当设置为ON 时,在select 语句发出后需要按Enter键才能显示一屏。
SET PAUSE [ ON | OFF ]
SQL> setpause on
提示:在发出select 语句并按Enter键后还要再按Enter键才能显示结果.
§2.5.7 SPACE(列间空格)
可用 set space 来设置各列间的空格数,语法为:
SET SPA[CE] {1|n}
N为设置输出行列间的空格数,最大为10。
SQL>set space 2
建议:在一般情况下,不用设置space参数。
§2.5.8 Termout (启/停屏幕显示)
TERMOUT用于设置在屏幕上显示或不显示所输出的信息。
SET TERMOUT { ON | OFF }
set termout off
set termout on
set termout off 常用SPOOL XXX时,即关闭报表在屏幕上的显示(节省时间)
set termout on 常用SPOOL off之后,即恢复报表在屏幕上的显示
§2.5.9 ECHO (启/停命令显示)
可以用ECHO命令来显示或不显示所执行的SQL命令。语法如:
SET ECHO{OFF|ON}
显示执行当中的各命令( 即用start 时)
set echo 受到 set termout 的影响
set pagesize 100
set echo on
select table_name from dict where rownum<20;
select * from cat where rownum<30;
set echo off
--下面只显示结果不显示命令:
select table_name from dict where rownum<20;
select * from cat where rownum<30;
§2.5.10 TRANSACTION (启动事务)
一个很重要的事务环境设置是TRANSACTION。它包括两个部分的内容:
SET TRANSACTION { READ ONLY | USE ROLLBACK SEGMENT segment_name }
READ ONLY是用于保证读的一致性。即其他用户的修改不影响当前查询结果。
USE ROLLBACK SEGMENT segment_name是为当前所处理的事务指定专门的回滚段。这主要是在进行大量的Insert或Delete或Update时,需要一个大的回滚段以保证事务正常完成。详细见数据库管理员。
§2.5.11 SHOW ALL(列出所有参数)
可以用SHOW ALL来显示当前的所有参数情况。它的用法很简单。比如:
SQL> show all
appinfo为ON并且已设置为"SQL*Plus"
arraysize 15
autocommit OFF
autoprint OFF
autorecovery OFF
autotrace OFF
blockterminator "." (hex 2e)
btitle OFF and为下一条SELECT语句的前几个字符
cmdsep OFF
colsep " "
compatibility version NATIVE
concat "." (hex 2e)
copycommit 0
COPYTYPECHECK为ON
define "&" (hex 26)
describe DEPTH 1 LINENUM OFF INDENT ON
markup HTML OFF SPOOL OFF ENTMAP ON PREFORMAT OFF
echo OFF
editfile "afiedt.buf"
embedded OFF
escape OFF
flagger OFF
flush ON
heading ON
headsep "|" (hex 7c)
instance "local"
linesize 80
lno 14
loboffset 1
logsource ""
long 80
longchunksize 80
newpage 1
null ""
numformat ""
numwidth 10
pagesize 14
PAUSE为OFF
pno 0
recsep WRAP
recsepchar " " (hex 20)
release 801070000
repfooter OFF and为NULL
repheader OFF and为NULL
serveroutput OFF
shiftinout INVISIBLE
showmode OFF
spool OFF
sqlblanklines OFF
sqlcase MIXED
sqlcode 0
sqlcontinue "> "
sqlnumber ON
sqlprefix "#" (hex 23)
sqlprompt "SQL> "
sqlterminator ";" (hex 3b)
suffix "sql"
tab ON
termout ON
time OFF
timing OFF
trimout ON
trimspool OFF
ttitle OFF and为下一条SELECT语句的前几个字符
underline "-" (hex 2d)
USER为"SYS"
verify ON
wrap :行将为已换行
SQL>
你可以从上面的参数中看到其当前值,也可以修改某些参数的值。
格式化输出
§2.6.1 一般数据的格式化输出
在Oracle的SQL>下,经常用COLUMN命令来对所输出的列进行格式化,即按照一定的格式进行显示。COLMUN命令语法如下:
COL[UMN] [{ column | expr } [ option_1 ... option_n ] ]
column:列名
expr:有效的SQL表达式
option_1...option_n:可以是下列之一:
ALI[AS] alias
CLE[AR]
FOLD_A[FTER]
FOLD_B[EFORE]
FOR[MAT] format
HEA[DING] text
JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}
LIKE {expr|alias}
NEWL[INE]
NEW_V[ALUE] variable
NOPRI[NT]|PRI[NT]
NUL[L] text
OLD_V[ALUE] variable
ON|OFF
WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]
下面给出常用的关键字的解释:
Alias 给出列的别名,BREAK和COUMN可以引用所定义的别名。
CLEAR 取消列的定义。
FORMAT列显示格式,format为:
9999990 9或0的个数决定最多显示多少位
9,999,999.99按照逗号和小数点来显示数据,若是0以空格显示
099999 显示前面补0
$999,999.99 数字前加美圆号
B99999 若为0,则结果为空白
99999Mi 若数字为负,则负号放在数字后(右边),缺省放在左边
99999PR 负号将以括号括起
9.999EEEE 以科学记数法表示(必须有4个E)
999V99 数字乘以10n ,如1234变为123400
DATE 采用日期数字格式(MM/DD/YY)
Heading重新标记列的显示标题,如:
SQL> col ename heading 姓名format a10
SQL> select ename,sal from emp;
例子:
SQL
COLUMN SALARY FOR $9,999,999.99
COLUMN LAST_NAME FOR A35.
§2.6.2 日期的格式化输出
Oracle系统提供了一个NLS_DATE_FORMAT的环境变量来设置日期的显示格式。用它可以完成按照不同格式要求的显示,比如按照中国的习惯为yyyy年mm月dd日等。
1.系统日期 sysdate 的显示
用sysdate 可以显示ORACLE RDBMS 所在机器的日期及时间,如:
SQL> alter session set nls_date_format ='"公元"yyyy"年"mm"月"dd"日"';
会话已更改。
SQL> select sysdate from dual;
SYSDATE
------------------
公元2001年05月30日
2.日期类型的显示
select sysdate,to_char(sysdate,’yyyy.mm.dd hh24:mi;ss’) from dual;
SQL> connect scott/tiger
已连接。
SQL> alter session set nls_date_format ='yyyy"年"mm"月"dd"日生"';
会话已更改。
SQL> col HIREDATE heading生日
SQL> col sal heading工资
SQL> col sal ename姓名
SQL> select ename,sal,hiredate from emp;
姓名 工资 生日
---------- ---------- -----------------
SMITH 800 1980年12月17日生
ALLEN 1600 1981年02月20日生
WARD 1250 1981年02月22日生
JONES 2975 1981年04月02日生
MARTIN 1250 1981年09月28日生
BLAKE 2850 1981年05月01日生
CLARK 2450 1981年06月09日生
SCOTT 3000 1987年04月19日生
KING 5000 1981年11月17日生
TURNER 1500 1981年09月08日生
ADAMS 1100 1987年05月23日生
JAMES 950 1981年12月03日生
FORD 3000 1981年12月03日生
MILLER 1300 1982年01月23日生
已选择14行。
§2.7 加标题
有时在输出一些结果时,可能需要加一些标题,如表上面的顶标题,落款等。这样的要求可由Ttitle和Btitle来完成。
ttitle和btitle
ttitle [center|left|right]string 顶标题
btitle [center|left|right]string 底标题
ttitle center 'XX公司人员情况表'
btitle left '制表人:xxxx' right '日期:xxxx年xx月'
Clear ttitle
§2.8 建立简单报告
我们可以用TTITLE、BTITLE、COLUMN、BREAK ON、COMPUTE SUM及SET LINESIZE、SET PAGESIZE、SET NEWPAGE来设置查询结果的显示格式;在用SPOOL命令将显示结果输出到一个操作系统文件中去,一般输出文件的类型为.LST。
建立简单报告主要使用下面命令来实现:
1. SPOOL命令
SPOOL filename 将缓冲区的内容写到文件中
SPOOL off 终止写命令
2. COLUMN 命令
column col_name[,heading] format format_spe
把字段的结果指定为一种输出格式
COL name heading '姓名' for a10
COL sal heading '工资' for 9,999.99
3.ttitle、btitle
ttitle [center|left|right]string 顶标题
btitle [center|left|right]string 底标题
ttitle center 'XX公司人员情况表'
btitle left '制表人:赵元杰' right '日期:1998.11月'
Clear ttitle
4.break、compute
clear breaks,clear computes
break on column 在该列上中断
break on row 在每一行上中断
break on Page
break on report
skip n 跳过n行
skip page 跳过未用完的页
compute avg
compute count
compute max
compute min
compute std
compute sum
compute var
compute num 计算所有行
compute sum of sal on deptno
5.set 在报表中的设置
l set termout off、set termout on命令
l set termout off 常用SPOOL XXX前,即关闭报表在屏幕上的显示(节省时间)
l set termout on 常用SPOOL off之后,即恢复报表在屏幕上的显示
l set ECHO{OFF|ON} 显示执行当中的各命令(即用start 时),set echo 受到 set termout 的影响
l set Lin[esize]{80|integer} 设置行宽度,最大值999
l set pag[esize] {24|integer} 设置页的大小
例子:
SQL>COL ename heading ‘姓名’ for a12
SQL>COL sal heading ‘工资’ for a999,999.99
SQL>COL hiredate heading ‘出生’
SQL>SET LINESIZE 200
SQL>SET PAGESIZE 60
SQL>SPOOL c:\all_emp
SQL>select ename,sal,deptno,hiredate from emp order by deptno;
SQL>SPOOL OFF
§2.9 输入变量
Oracle提供一种在处理SQL语句时可以将参数作为变量来对待的技术,即在条件句中可以是变量而不是具体的值,这样的处理就是输入变量。这样做的目的就是可以重复使用同样的语句,每次只要输入相应的值即可。要实现将参数写成为变量,只要在变量前加一个&号即可。看下面语句:
Select sid, serial#,username, command from v$session
Where USERNAME = upper(‘&usr’);
这样的语句在运行中,系统会自动提示你回答变量的具体值,上面语句运行时提示和回答时显示的信息如下:
SQL> Select sid, serial#,username, command from v$session
2 Where USERNAME = upper('&usr');
输入 usr 的值: sys
原值 2: Where USERNAME = upper('&usr')
新值 2: Where USERNAME = upper('sys')
SID SERIAL# USERNAME COMMAND
---------- ---------- ------------------------------ ----------
7 26 SYS 3
在变量说明中,可以使用多个变量,比如:
Alter system kill session ‘&sid,&ser’;
或
Alter system kill session ‘&会话号,&序列号’;
它的运行情况如下:
SQL> Select sid, serial#,username, command from v$session;
SID SERIAL# USERNAME COMMAND
---------- ---------- ------------------------------ ----------
1 1 0
2 1 0
3 1 0
4 1 0
5 1 0
6 1 0
7 26 SYS 3
8 16 ZHAO 0
已选择8行。
SQL> Alter system kill session '&sid,&ser';
输入sid的值: 8
输入ser的值: 16
原值 1: Alter system kill session '&sid,&ser'
新值 1: Alter system kill session '8,16'
系统已更改。
一般系统缺省下是使用 “&” 符号来定义变量,你也可以使用另外的符号来代替,比如不喜欢用 & 而要用 ?,则有:
SQL> set define ?
SQL> select sid,serial#,username from v$session where username='?usr';
输入 usr 的值: SYS
原值 1: select sid,serial#,username from v$session where username='?usr'
新值 1: select sid,serial#,username from v$session where username='SYS'
SID SERIAL# USERNAME
---------- ---------- ------------------------------
7 26 SYS
次时由于我们修改了会话环境的参数值,可以用下面命令查看:
SQL> show define
define "?" (hex 3f)
Oracle创建删除导入导出命令行总结
说明:在创建数据库时输入的密码,是修改系统默认的密码,以system和sysman等系统默认身份登录时要输入的密码就是修改后的密码(创建数据库时输入的密码)如果要创建新的用户就必须以system或者sysman(这二者的权限最大)的身份登录后才可创建创建用户格式:create user 用户名 identified by 密码(例如:create user cht identified by cht;)创建完成后,必须分配权限,否则连不上数据库和sqlplus。因此要做:grant connect,resource,dba to cht;这样数据库就可以通过cht/cht连上了。那些select,update,delete,insert的权限就不必分配了,因为每个用户默认都有这些基本权限。命令行方式连接数据库的方法:开始==》运行==》cmd方式一:输入sqlplus,回车输入用户名: system,回车输入密码: orcl,回车方式二:输入sqlplus system/orcl@orcl,回车(system是用户名,orcl是密码,@后面的orcl是库的名字)(数据库安装完成后,有两个系统级的用户 :1) system 默认密码为 :manager2) sys 默认密码为 :change_on_install)创建用户前必须要先建好临时表空间和数据表空间两个表空间,否则用系统默认的表空间不好。//创建临时表空间create temporary tablespace zfmi_temp tempfile 'D:oracleoradatazfmizfmi_temp.dbf' size 100m autoextend on next 32m maxsize 2048m extent management local;说明:1、zfmi_temp 表空间的名字2、D:oracleoradatazfmi 存放数据库文件的地方,一般是安装数据库后有控制文件,数据文件和日志文件的文件夹,再加上要创建表空间的名字+dbf(数据文件)3、100M 表空间的初始大小4、32M 表空间自动增长的大小5、2048M 表空间最大的大小//创建数据表空间create tablespace zfmi logging datafile 'D:oracleoradatazfmizfmi.dbf' size 100m autoextend on next 32m maxsize 2048m extent management local;//创建用户并指定表空间create user zfmi identified by zfmi default tablespace zfmi temporary tablespace zfmi_temp;//给用户授予权限grant connect,resource dba to zfmi; (dba:指定所有权限)到这一步新建一个用户的工作就完成了。//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////删除用户以及用户所有的对象drop user zfmi cascade;//cascade参数是级联删除该用户所有对象,经常遇到如用户有对象而未加此参数则用户删不了的问题,所以习惯性的加此参数//删除表空间前提:删除表空间之前要确认该表空间没有被其他用户使用之后再做删除drop tablespace zfmi including contents and datafiles cascade onstraints;//including contents 删除表空间中的内容,如果删除表空间之前表空间中有内容,而未加此参数,表空间删不掉,所以习惯性的加此参数//including datafiles 删除表空间中的数据文件//cascade constraints 同时删除tablespace中表的外键参照如果删除表空间之前删除了表空间文件,解决办法:如果在清除表空间之前,先删除了表空间对应的数据文件,会造成数据库无法正常启动和关闭。可使用如下方法恢复(此方法已经在oracle9i中验证通过):下面的过程中,filename是已经被删除的数据文件,如果有多个,则需要多次执行;tablespace_name是相应的表空间的名称。$ sqlplus /nologSQL conn / as sysdba;如果数据库已经启动,则需要先执行下面这行:SQL shutdown abortSQL startup mountSQL alter database datafile 'filename' offline drop;SQL alter database open;SQL drop tablespace tablespace_name including contents;导入导出命令:Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件, imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。下面介绍的是导入导出的实例。(注意:不用连接到SQL/plus,直接在DOS下就可以导出。)数据导出:1 将数据库TEST完全导出,用户名system 密码manager 导出到D:daochu.dmp中exp system/manager@TEST file=d:daochu.dmp full=y2 将数据库中system用户与sys用户的表导出exp system/manager@TEST file=d:daochu.dmp owner=(system,sys)3 将数据库中的表inner_notify、notify_staff_relat导出exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)4 将数据库中的表table1中的字段filed1以"00"打头的数据导出exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。也可以在上面命令后面 加上 compress=y 来实现。数据的导入1 将D:daochu.dmp 中的数据导入 TEST数据库中。imp system/manager@TEST file=d:daochu.dmpimp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。在后面加上 ignore=y 就可以了。2 将d:daochu.dmp中的表table1 导入imp system/manager@TEST file=d:daochu.dmp tables=(table1)基本上上面的导入导出够用了。不少情况要先是将表彻底删除,然后导入。注意:操作者要有足够的权限,权限不够它会提示。数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。附录一:给用户增加导入数据权限的操作第一,启动sql*puls第二,以system/manager登陆第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字第五, 运行-cmd-进入dmp文件所在的目录,imp userid=system/manager full=y file=*.dmp或者 imp userid=system/manager full=y file=filename.dmp执行示例:F:WorkOracle_Databackupimp userid=test/test full=y file=inner_notify.dmp屏幕显示Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006(c) Copyright 2000 Oracle Corporation. All rights reserved.连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - ProductionWith the Partitioning optionJServer Release 8.1.7.0.0 - Production经由常规路径导出由EXPORT:V08.01.07创建的文件已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换). 正在将AICHANNEL的对象导入到 AICHANNEL. . 正在导入表 "INNER_NOTIFY" 4行被导入准备启用约束条件成功终止导入,但出现警告。附录二:Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的。先建立import9.par,然后,使用时命令如下:imp parfile=/filepath/import9.par例 import9.par 内容如下:FROMUSER=TGPMSTOUSER=TGPMS2 (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)ROWS=YINDEXES=YGRANTS=YCONSTRAINTS=YBUFFER=409600file==/backup/ctgpc_20030623.dmplog==/backup/import_20030623.log
查看ORACLE执行计划的几种常用方法
SQL的执行计划实际代表了目标SQL在Oracle数据库内部的具体执行步骤,作为调优,只有知道了优化器选择的执行计划是否为当前情形下最优的执行计划,才能够知道下一步往什么方向。执行计划的定义:执行目标SQL的所有步骤的组合。我们首先列出查看执行计划的一些常用方法:1.explain plan命令PL/SQL Developer中通过快捷键F5就可以查看目标SQL的执行计划了。但其实按下F5后,实际后台调用的就是explain plan命令,相当于封装了该命令。explain plan使用方法:(1) 执行explain plan for + SQL(2) 执行select * from table(dbms_xplan.display);实验表准备:SQL> desc test1;Name NullType----------------------------------------- -------- ----------------------------T1IDNOT NULL NUMBER(38)T1VVARCHAR2(10)SQL> desc test2;Name NullType----------------------------------------- -------- ----------------------------T2IDNOT NULL NUMBER(38)T2VVARCHAR2(10)实验:SQL> set linesize 100SQL> explain plan for select t1id, t1v, t2id, t2v from test1, test2 where test1.t1id = test2.t2id;Explained.第一步使用explain plan对目标SQL进行了explain,第二步使用select * from table(dbms_xplan.display)语句展示出该SQL的执行计划。这里test2作为驱动表,进行了全表扫描,test1作为被驱动表,由于其包含主键,所以用的是索引全扫描。左侧ID带*号的第四步操作,表示有谓词条件,这里可以看到既使用了主键索引(access),又使用了过滤条件(filter)。2.DBMS_XPLAN包(1) select * from table(dbms_xplan.display);--上面以说明。(2)select * from table(dbms_xplan.display_cursor(null, null, ‘advanced‘));(3)select * from table(dbms_xplan.display_cursor(‘sql_id/hash_value‘, child_cursor_number, ‘advanced‘));(4)select * from table(dbms_xplan.display_awr(‘sql_id‘));(2)select * from table(dbms_xplan.display_cursor(null, null, ‘advanced‘));主要用于SQLPLUS中查看刚执行过SQL的执行计划。首先第三个参数可以选择‘advanced‘:接下来,第三个参数使用‘all‘:可以看出‘advanced‘记录的信息要比‘all’多,主要就是多一个Outline Data。Outline Data主要是执行SQL时用于固定执行计划的内部HINT组合,可以将这部分内容摘出来加到目标SQL中以固定其执行计划。(3)select * from table(dbms_xplan.display_cursor(‘sql_id/hash_value‘, child_cursor_number, ‘advanced‘));其中第一个参数可以输入SQL的sql_id或hash value,方法就是如果执行的SQL仍在库缓存中,则可以使用V$SQL查询:其中,使用@dbsnake大牛的SQL可以知道SQL_ID和HASH_VALUE的一一对应关系:隐藏问题1:这里的截图可能有点问题,结果并不准确,问题就出在这个SQL中使用的算法中,在另一篇博文中会仔细说明这个问题。使用:SQL>select * from table(dbms_xplan.display_cursor(‘1p2fk2v00c865‘, 0, ‘advanced‘));或select * from table(dbms_xplan.display_cursor(‘3221627077‘, 0, ‘advanced‘));就可以查出对应这条SQL的执行计划,内容同(2)中的‘advanced‘,这就不展示了。注意这还有第二个参数child_cursor_number,指的是子游标编号,如果未生成新的子游标,则此处写的是0。(2)和(3)的结论相近,区别就是(2)只是针对最近一次执行SQL查看执行计划,(3)可以针对仍在库缓存中的任意一次SQL查看执行计划。(4)select * from table(dbms_xplan.display_awr(‘sql_id‘));(1)是使用explain plan for +SQL作为前提,(2)和(3)的前提则是SQL的执行计划还在共享池中,具体讲是在库缓存中。如果已经被age out交换出共享池,则不能用这两种方法了。若该SQL的执行计划被采集到AWR库中,则可以用(4)来查询历史执行计划。隐藏问题2:实验这部分内容发现使用select * from table(dbms_xplan.display_awr(‘sql_id‘));并没有结果,@黄玮老师说有可能是AWR收集的是top的SQL,有可能测试用的SQL不是most intensive SQL,但我是用alter system flush shared_pool后执行的手工采集快照,还是未被AWR抓到,比较奇怪的问题,这个也会在另一篇博文中仔细说明。查看ORACLE执行计划的几种常用方法标签:
如何查看oracle归档日志位置?
(1)常用命令 SQL> show parameter log_archive_dest; SQL> archive log list; SQL> select * from V$FLASH_RECOVERY_AREA_USAGE; ARCHIVELOG 96.62 0 141 SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage; 2.9904 SQL> show parameter recover; db_recovery_file_dest string /u01/oracle/flash_recovery_area db_recovery_file_dest_size big integer 2G。
(2)删除日志 cd $ORACLE_BASE/flash_recovery_area/orcl/archivelog 转移或清除对应的归档日志, 删除一些不用的日期目录的文件,注意保留最后几个文件在删除归档日志后,必须用RMAN维护控制文件,否则空间显示仍然不释放。
(3)rman target sys/password RMAN> crosscheck archivelog all; RMAN> delete expired archivelog all; 或者 RMAN> delete archivelog until time “sysdate-1″。
(4)再查 SQL> select * from V$FLASH_RECOVERY_AREA_USAGE。
(5)修改大小 SQL> alter system set db_recovery_file_dest_size=4G scope=both。
输入命令时,oracle中,提示表或视图不存在
1、应该是dba_users
2、oracle常用命令
查看所有表和view
SQL> select * from tab;
查看所有参数
SQL>show parameter
查看表或视图结构
SQL>desc dba_users
查看日期
SQL>select sysdate from dual;
查看用户
SQL>select username,account_status from dba_users;
查看表空间及相应文件
SQL>select a.name,b.name from v$tablespace a ,v$datafile b where a.TS#=b.TS#;
SQL>select TABLESPACE_NAME,FILE_NAME from dba_data_files order by TABLESPACE_NAME;
oracle中用什么命令查找数据文件所在路径呢?
分类: 电脑/网络 >> 电脑常识
问题描述:
在pl/sql中执行的。因为是远程。装过后给忘了。
解析:
一、ORACLE的启动和关闭
1、在单机环境下
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下
su - oracle
a、启动ORACLE系统
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>startup
SVRMGR>quit
b、关闭ORACLE系统
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>shutdown
SVRMGR>quit
启动oracle9i数据库命令:
$ sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Production on Fri Oct 31 13:53:53 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> connect / as sysdba
Connected to an idle instance.
SQL> startup^C
SQL> startup
ORACLE instance started.
2、在双机环境下
要想启动或关闭ORACLE系统必须首先切换到root用户,如下
su - root
a、启动ORACLE系统
hareg -y oracle
b、关闭ORACLE系统
hareg -n oracle
Oracle数据库有哪几种启动方式
说明:
有以下几种启动方式:
1、startup nomount
非安装启动,这种方式启动下可执行:重建控制文件、重建数据库
读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。
2、startup mount dbname
安装启动,这种方式启动下可执行:
数据库日志归档、
数据库介质恢复、
使数据文件联机或脱机,
重新定位数据文件、重做日志文件。
执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,
但此时不对数据文件和日志文件进行校验检查。
3、startup open dbname
先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,
这种方式下可访问数据库中的数据。
4、startup,等于以下三个命令
startup nomount
alter database mount
alter database open
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的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化,
体现为sys用户下的一些表和视图。数据字典名称是大写的英文字符。
数据字典里存有用户信息、用户的权限信息、所有数据对象信息、表的约束条件、统计分析数据库的视图等。
我们不能手工修改数据字典里的信息。
很多时候,一般的ORACLE用户不知道如何有效地利用它。
dictionary 全部数据字典表的名称和解释,它有一个同义词dict
dict_column 全部数据字典表里字段名称和解释
如果我们想查询跟索引有关的数据字典时,可以用下面这条SQL语句:
SQL>select * from dictionary where instr(ments,'index')>0;
如果我们想知道user_indexes表各字段名称的详细含义,可以用下面这条SQL语句:
SQL>select column_name,ments from dict_columns where table_name='USER_INDEXES';
依此类推,就可以轻松知道数据字典的详细名称和解释,不用查看ORACLE的其它文档资料了。
下面按类别列出一些ORACLE用户常用数据字典的查询使用方法。
1、用户
查看当前用户的缺省表空间
SQL>select username,default_tablespace from user_users;
查看当前用户的角色
SQL>select * from user_role_privs;
查看当前用户的系统权限和表级权限
SQL>select * from user_sys_privs;
SQL>select * from user_tab_privs;
2、表
查看用户下所有的表
SQL>select * from user_tables;
查看名称包含log字符的表
SQL>select object_name,object_id from user_objects
where instr(object_name,'LOG')>0;
查看某表的创建时间
SQL>select object_name,created from user_objects where object_name=upper('&table_name');
查看某表的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('&table_name');
查看放在ORACLE的内存区里的表
SQL>select table_name,cache from user_tables where instr(cache,'Y')>0;
3、索引
查看索引个数和类别
SQL>select index_name,index_type,table_name from user_indexes order by table_name;
查看索引被索引的字段
SQL>select * from user_ind_columns where index_name=upper('&index_name');
查看索引的大小
SQL>select sum(bytes)/(1024*1024) as "size(M)" from user_segments
where segment_name=upper('&index_name');
4、序列号
查看序列号,last_number是当前值
SQL>select * from user_sequences;
5、视图
查看视图的名称
SQL>select view_name from user_views;
查看创建视图的select语句
SQL>set view_name,text_length from user_views;
SQL>set long 2000; 说明:可以根据视图的text_length值设定set long 的大小
SQL>select text from user_views where view_name=upper('&view_name');
6、同义词
查看同义词的名称
SQL>select * from user_synonyms;
7、约束条件
查看某表的约束条件
SQL>select constraint_name, constraint_type,search_condition, r_constraint_name
from user_constraints where table_name = upper('&table_name');
SQL>select c.constraint_name,c.constraint_type,cc.column_name
from user_constraints c,user_cons_columns cc
where c.owner = upper('&table_owner') and c.table_name = upper('&table_name')
and c.owner = cc.owner and c.constraint_name = cc.constraint_name
order by cc.position;
8、存储函数和过程
查看函数和过程的状态
SQL>select object_name,status from user_objects where object_type='FUNCTION';
SQL>select object_name,status from user_objects where object_type='PROCEDURE';
查看函数和过程的源代码
SQL>select text from all_source where owner=user and name=upper('&plsql_name');
三、查看数据库的SQL
1、查看表空间的名称及大小
select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size
from dba_tablespaces t, dba_data_files d
where t.tablespace_name = d.tablespace_name
group by t.tablespace_name;
2、查看表空间物理文件的名称及大小
select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;
3、查看回滚段名称及大小
select segment_name, tablespace_name, r.status,
(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
max_extents, v.curext CurExtent
From dba_rollback_segs r, v$ro
Oracle常用的命令如何查看表的结构
以下的文章主要是介绍Oracle常用的命令中如何查看表的结构.EDITDATA 表名;修改表字段:Alter table 表名 modify(字段名 类型 约束);alter table test modify (addd varchar2(10) null); alter table 表名 add(字段名 类型 约束);alter table test add(age varchar2(5)); 1.登陆系统用户在Oracle常用命令中查看表结构sqlplus 然后输入系统用户名和密码登陆别的用户conn 用户名/密码;2.创建表空间create tablespace 空间名 datafile 'c:\空间名' size 15M --表空间的存放路径,初始值为15M autoExtend on next 10M --空间的自动增长的值是10M permanent online; --永久使用 3.创建用户create user shi --创建用户名为shi identified by scj --创建密码为scj default tablespace 表空间名 --默认表空间名 temporary tablespace temp --临时表空间为temp profile default --受profile文件的限制 quota unlimited on 表空间名; --在表空间下面建表不受限制 4.创建角色create role 角色名 identified by 密码;5.给角色授权grant create session to 角色名;--给角色授予创建会话的权限grant 角色名 to 用户名; --把角色授予用户6.给用户授予权限grant connect,resource to shi;--给shi用户授予所有权限 Grant dba to shi;-给shi 用户授予DBA权限 grant create table to shi; --给shi用户授予创建表的权限 7.select table_name from user_tables; 察看当前用户下的所有表8.select tablespace_name from user_tablespaces; 察看当前用户下的 表空间9.select username from dba_users;察看所有用户名称命令 必须用sys as sysdba登陆10.创建表create table 表名( id int not null, name varchar2(20) not null )tablespace 表空间名 --所属的表空间 storage ( initial 64K --表的初始值 minextents 1 --最小扩展值 maxextents unlimited --最大扩展值 ); 11.为usrs表添加主键和索引alter table users add constraint pk primary key (ID); 12.为已经创建users表添加外键alter table users add constraint fk_roleid foreign key (roleid) references role(role_id) on delete cascad; --下边写主表的列 on delete cascad是创建级联 13.把两个列连接起来select concat(name,id) from 表名; --把name和id连接起来14.截取字符串select column(name,'李') from 表名;把name中的‘李’去掉15.运行事务之前必须写set serveroutput on; 打开输入输出(不写的话,打印不出信息)16.while的应用declare --声明部分 ccc number:=1; --复职 a number:=0; begin --事务的开始 while ccc<=100 loop --循环 if((ccc mod 3)=0) then --条件 dbms_output.put_line(ccc||','); --打印显示 aa:=a+ccc; end if; --结束if cc:=ccc+1; end loop; --结束循环 dbms_output.put_line(a); end; --结束事务 / 17.select into 的用法 --只能处理一行结果集declare name varchar(30); begin select username into name from users where id=2; dbms_output.put_line('姓名为:'||name); end; / 上述的相关内容就是对Oracle常用命令中查看表结构的描述,希望会给你带来一些帮助在此方面。
oracle查看text文件内容有哪些命令
1.create user username identified by password;//建用户名和密码oracle ,oracle
2.grant connect,resource,dba to username;//授权 grant connect,resource,dba,sysdba to username;
3.connect username/password//进入。
4.select table_name,column_name from user_tab_columns where table_name='mview_log';//查询表中的表名,字段名等等。
5. 如何执行脚本SQL文件? SQL>@PATH/filename.sql;
6.Oracle oledb 提供者在command中执行多条SQL语句与SQL SERVER有少许差别,SQL Server只需使用";"分割多条SQL语句,而Oracle需要遵守ORACLE调用规范,即除分号分割外,还需以begin /end;包围语句体.
使用C#描述应如下所示:
this.oleDbCommand1.CommandText = "begin INSERT INTO GROUP_INFO (GROUP_ID, GROUP_NAME) VALUES (1, \'2\'); INSERT INTO GROUP_INFO(GROUP_ID, GROUP_NAME) VALUES (2, \'2\'); end;";
7.查询用户下的所有表 select distinct table_name from user_tab_columns;
8.如何搜索出前N条记录?Select a.*,rownum from (select * from cardkind order by cardkind ) a where rownum
<n
9.查找用户下的所有表:select * from tab;
2、显示当前连接用户
SQL> show user
3、查看系统拥有哪些用户
SQL> select * from all_users;
4、新建用户并授权
SQL> create user a identified by a;(默认建在SYSTEM表空间下)
SQL> grant connect,resource to a;
5、连接到新用户
SQL> conn a/a
6、查询当前用户下所有对象
SQL> select * from tab;
7、建立第一个表
SQL> create table a(a number);
8、查询表结构
SQL> desc a
9、插入新记录
SQL> insert into a values(1);
10、查询记录
SQL> select * from a;
11、更改记录
SQL> update a set a=2;
12、删除记录
SQL> delete from a;
13、回滚
SQL> roll;
SQL> rollback;
14、提交
SQL> commit;
select * from
(select t.*,dense_rank() over (order by cardkind) rank from cardkind t)
where rank = 2;
46. 如何在字符串里加回车?
select 'Welcome to visit'||chr(10)||'www.CSDN.NET' from dual ;
47. 中文是如何排序的?
Oracle9i之前,中文是按照二进制编码进行排序的。
在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值
SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序
SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序
SCHINESE_PINYIN_M 按照拼音排序
48. Oracle8i中对象名可以用中文吗?
可以
49. 如何改变WIN中SQL*Plus启动选项?
SQL*PLUS自身的选项设置我们可以在$ORACLE_HOME/sqlplus/admin/glogin.sql中设置。
50. 怎样修改oracel数据库的默认日期?
alter session set nls_date_format='yyyymmddhh24miss';
OR
可以在init.ora中加上一行
nls_date_format='yyyymmddhh24miss'
51. 如何将小表放入keep池中?
alter table xxx storage(buffer_pool keep);
52. 如何检查是否安装了某个patch?
check that oraInventory
53. 如何使select语句使查询结果自动生成序号?
select rownum,COL from table;
54. 如何知道数据裤中某个表所在的tablespace?
select tablespace_name from user_tables where table_name='TEST';
select * from user_tables中有个字段TABLESPACE_NAME,(oracle);
select * from dba_segments where …;
55. 怎么可以快速做一个和原表一样的备份表?
create table new_table as (select * from old_table);
55. 怎么在sqlplus下修改procedure?
select line,trim(text) t from user_source where name ='A' order by line;
56. 怎样解除PROCEDURE被意外锁定?
alter system kill session ,把那个session给杀掉,不过你要先查出她的session id
or
把该过程重新改个名字就可以了。
57. SQL Reference是个什么东西?
是一本sql的使用手册,包括语法、函数等等,oracle官方网站的文档中心有下载.
58. 如何查看数据库的状态?
unix下
ps -ef | grep ora
windows下
看服务是否起来
是否可以连上数据库
59. 请问如何修改一张表的主键?
alter table aaa
drop constraint aaa_key ;
alter table aaa
add constraint aaa_key primary key(a1,b1) ;
60. 改变数据文件的大小?
用 ALTER DATABASE .... DATAFILE .... ;
手工改变数据文件的大小,对于原来的 数据文件有没有损害。
61. 怎样查看ORACLE中有哪些程序在运行之中?
查看v$sessions表
62. 怎么可以看到数据库有多少个tablespace?
select * from dba_tablespaces;
63. 如何修改oracle数据库的用户连接数?
修改initSID.ora,将process加大,重启数据库.
64. 如何查出一条记录的最后更新时间?
可以用logminer 察看
65. 如何在PL/SQL中读写文件?
UTL_FILE包允许用户通过PL/SQL读写操作系统文件。
66. 怎样把"&"放入一条记录中?
insert into a values (translate ('at{&}t','at{}','at'));
67. EXP 如何加QUERY参数?
EXP USER/PASS FILE=A.DMP TABLES(BSEMPMS)
QUERY='"WHERE EMP_NO=\'S09394\'\" ﹔
68. 关于oracle8i支持简体和繁体的字符集问题?
ZHS16GBK可以支
69. Data Guard是什么软件?
就是Standby的换代产品
70. 如何创建SPFILE?
SQL> connect / as sysdba
SQL> select * from v$version;
SQL> create pfile from spfile;
SQL> CREATE SPFILE FROM PFILE='E:\ora9i\admin\eygle\pfile\init.ora';
文件已创建。
SQL> CREATE SPFILE='E:\ora9i\database\SPFILEEYGLE.ORA' FROM
PFILE='E:\ora9i\admin\eygle\pfile\init.ora';
文件已创建。
71. 内核参数的应用?
shmmax
含义:这个设置并不决定究竟Oracle数据库或者操作系统使用多少物理内存,只决定了
最多可以使用的内存数目。这个设置也不影响操作系统的内核资源。
设置方法:0.5*物理内存
例子:Set shmsys:shminfo_shmmax=10485760
shmmin
含义:共享内存的最小大小。
设置方法:一般都设置成为1。
例子:Set shmsys:shminfo_shmmin=1:
shmmni
含义:系统中共享内存段的最大个数。
例子:Set shmsys:shminfo_shmmni=100
shmseg
含义:每个用户进程可以使用的最多的共享内存段的数目。
例子:Set shmsys:shminfo_shmseg=20:
semmni
含义:系统中semaphore identifierer的最大个数。
设置方法:把这个变量的值设置为这个系统上的所有Oracle的实例的init.ora中的最大
的那个processes的那个值加10。
例子:Set semsys:seminfo_semmni=100
semmns
含义:系统中emaphores的最大个数。
设置方法:这个值可以通过以下方式计算得到:各个Oracle实例的initSID.ora里边的
processes的值的总和(除去最大的Processes参数)+最大的那个Processes×2+10×
Oracle实例的个数。
例子:Set semsys:seminfo_semmns=200
semmsl:
含义:一个set中semaphore的最大个数。
设置方法:设置成为10+所有Oracle实例的InitSID.ora中最大的Processes的值。
例子:Set semsys:seminfo_semmsl=-200
72. 怎样查看哪些用户拥有SYSDBA、SYSOPER权限?
SQL>conn sys/change_on_install
SQL>select * from V_$PWFILE_USERS;
73. 如何单独备份一个或多个表?
exp 用户/密码 tables=(表1,…,表2)
74. 如何单独备份一个或多个用户?
exp system/manager owner=(用户1,用户2,…,用户n) file=导出文件
75. 如何对CLOB字段进行全文检索?
SELECT * FROM A WHERE dbms_lob.instr(a.a,'K',1,1)>0; 76. 如何显示当前连接用户?
SHOW USER
77. 如何查看数据文件放置的路径 ?
col file_name format a50
SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files
order by file_id;
78. 如何查看现有回滚段及其状态 ?
SQL> col segment format a30
SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE _ID,STATUS FROM
DBA_ROLLBACK_SEGS
79. 如何改变一个字段初始定义的Check范围?
SQL> alter table xxx drop constraint constraint_name;
之后再创建新约束:
SQL> alter table xxx add constraint constraint_name check();
80. Oracle常用系统文件有哪些?
通过以下视图显示这些文件信息:v$database,v$datafile,v$logfile v$controlfile
v$parameter;
81. 内连接INNER JOIN?
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no;
82. 如何外连接?
Select a.* from bsempms a,bsdptms b where a.dpt_no=b.dpt_no(+);
Select a.* from bsempms a,bsdptms b wherea.dpt_no(+)=b.dpt_no;
83. 如何执行脚本SQL文件?
SQL>@$PATH/filename.sql;
84. 如何快速清空一个大表?
SQL>truncate table table_name;
85. 如何查有多少个数据库实例?
SQL>SELECT * FROM V$INSTANCE;
86. 如何查询数据库有多少表?
SQL>select * from all_tables;
87. 如何测试SQL语句执行所用的时间?
SQL>set timing on ;
SQL>select * from tablename;
88. CHR()的反函数是?
ASCII()
SELECT CHAR(65) FROM DUAL;
SELECT ASCII('A') FROM DUAL;
89. 字符串的连接
SELECT CONCAT(COL1,COL2) FROM TABLE ;
SELECT COL1||COL2 FROM TABLE ;
90. 怎么把select出来的结果导到一个文本文件中?
SQL>SPOOL C:\ABCD.TXT;
SQL>select * from table;
SQL >spool off;
91. 怎样估算SQL执行的I/O数 ?
SQL>SET AUTOTRACE ON ;
SQL>SELECT * FROM TABLE;
OR
SQL>SELECT * FROM v$filestat ;
可以查看IO数
92. 如何在sqlplus下改变字段大小?
alter table table_name modify (field_name varchar2(100));
改大行,改小不行(除非都是空的)
93. 如何查询某天的数据?
select * from table_name where trunc(日期字段)=to_date('2003-05-02','yyyy-mm-
dd');
94. sql 语句如何插入全年日期?
create table BSYEAR (d date);
insert into BSYEAR
select to_date('20030101','yyyymmdd')+rownum-1
from all_objects
where rownum <= to_char(to_date('20031231','yyyymmdd'),'ddd');
95. 如果修改表名?
alter table old_table_name rename to new_table_name;
96. 如何取得命令的返回状态值?
sqlcode=0
97. 如何知道用户拥有的权限?
SELECT * FROM dba_sys_privs ;
98. 从网上下载的ORACLE9I与市场上卖的标准版有什么区别?
从功能上说没有区别,只不过oracle公司有明文规定;从网站上下载的oracle产品不得用于
商业用途,否则侵权。
99. 怎样判断数据库是运行在归档模式下还是运行在非归档模式下?
进入dbastudio,历程--〉数据库---〉归档查看。
100. sql>startup pfile和ifile,spfiled有什么区别?
pfile就是Oracle传统的初始化参数文件,文本格式的。
ifile类似于c语言里的include,用于把另一个文件引入
spfile是9i里新增的并且是默认的参数文件,二进制格式
startup后应该只可接pfile
101. 如何搜索出前N条记录?
SELECT * FROM empLOYEE WHERE ROWNUM < n ORDER BY empno;
102. 如何知道机器上的Oracle支持多少并发用户数?
SQL>conn internal ;
SQL>show parameter processes ;
103. db_block_size可以修改吗?
一般不可以﹐不建议这样做的。
104. 如何统计两个表的记录总数?
select (select count(id) from aa)+(select count(id) from bb) 总数 from dual;
105. 怎样用Sql语句实现查找一列中第N大值?
select * from
(select t.*,dense_rank() over (order by sal) rank from employee)
where rank = N;
106. 如何在给现有的日期加上2年?(
select add_months(sysdate,24) from dual;
107. USED_UBLK为负值表示什么意思?
It is "harmless".
108. Connect string是指什么?
应该是tnsnames.ora中的服务名后面的内容
109. 怎样扩大REDO LOG的大小?
建立一个临时的redolog组,然后切换日志,删除以前的日志,建立新的日志。
110. tablespace 是否不能大于4G?
没有限制.
111. 返回大于等于N的最小整数值?
SELECT CEIL(N) FROM DUAL;
112. 返回小于等于N的最小整数值?
SELECT FLOOR(N) FROM DUAL;
113. 返回当前月的最后一天?
SELECT LAST_DAY(SYSDATE) FROM DUAL;
114. 如何不同用户间数据导入?
IMP SYSTEM/MANAGER FILE=AA.DMP FROMUSER=USER_OLD TOUSER=USER_NEW ROWS=Y INDEXES=Y
115. 如何找数据库表的主键字段的名称?
SQL>SELECT * FROM user_constraints WHERE CONSTRAINT_TYPE='P' and
table_name='TABLE_NAME';
116. 两个结果集互加的函数?
SQL>SELECT * FROM BSEMPMS_OLD INTERSECT SELECT * FROM BSEMPMS_NEW;
SQL>SELECT * FROM BSEMPMS_OLD UNION SELECT * FROM BSEMPMS_NEW;
SQL>SELECT * FROM BSEMPMS_OLD UNION ALL SELECT * FROM BSEMPMS_NEW;
117. 两个结果集互减的函数?
SQL>SELECT * FROM BSEMPMS_OLD MINUS SELECT * FROM BSEMPMS_NEW;
118. 如何配置Sequence?
建sequence seq_custid
create sequence seq_custid start 1 incrememt by 1;
建表时:
create table cust
{ cust_id smallint not null,
...}
insert 时:
insert into table cust
values( seq_cust.nextval, ...)
日期的各部分的常用的的写法
119>.取时间点的年份的写法:
SELECT TO_CHAR(SYSDATE,'YYYY') FROM DUAL;
120>.取时间点的月份的写法:
SELECT TO_CHAR(SYSDATE,'MM') FROM DUAL;
121>.取时间点的日的写法:
SELECT TO_CHAR(SYSDATE,'DD') FROM DUAL;
122>.取时间点的时的写法:
SELECT TO_CHAR(SYSDATE,'HH24') FROM DUAL;
123>.取时间点的分的写法:
SELECT TO_CHAR(SYSDATE,'MI') FROM DUAL;
124>.取时间点的秒的写法:
SELECT TO_CHAR(SYSDATE,'SS') FROM DUAL;
125>.取时间点的日期的写法:
SELECT TRUNC(SYSDATE) FROM DUAL;
126>.取时间点的时间的写法:
SELECT TO_CHAR(SYSDATE,'HH24:MI:SS') FROM DUAL;
127>.日期,时间形态变为字符形态
SELECT TO_CHAR(SYSDATE) FROM DUAL;