专注于 JAVA WEB开发

查看oracle当前的连接数

怎样查看oracle当前的连接数呢?[via]只需要用下面的SQL语句查询一下就可以了。

select * from v$session where username is not null

select username,count(username) from v$session where username is not null group by username #查看不同用户的连接数

select count(*) from v$session #连接数

Select count(*) from v$session where status=’ACTIVE’ #并发连接数

show parameter processes #最大连接

alter system set processes = value scope = spfile;重启数据库 #修改连接

1。查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常逼近

SQL> conn / as sysdba已连接。

SQL> select count(*) from v$session;

SQL> show parameter processes;

SQL> show parameter sessions;

2。修改processes和sessions值

SQL> alter system set processes=300 scope=spfile;

系统已更改。

SQL> alter system set sessions=300 scope=spfile;

系统已更改。

3。查看processes和sessions参数,但更改并未生效

4。重启数据库,使更改生效

SQL> shutdown immediate

SQL> startup

SQL> show parameter processes
SQL> show parameter sessions

2009-09-15IT技术,转载

1条评论
208 views

Mysql/SQLServer数据类型对应的JDBC类型、JAVA类型,数据类型长度 速查表

[via]
Mysql
************************************
当前列  ClassName     ColumnType  DisplaySize  TypeName
0:   java.lang.Integer  ColumnType:4  11  INTEGER
1:   java.lang.Integer  ColumnType:-6  4  TINYINT
2:   java.lang.String   ColumnType:12  0  UNKNOWN
3:   java.lang.Boolean  ColumnType:-7  1  TINYINT
4:   java.lang.Integer  ColumnType:5   6  SMALLINT
5:   java.lang.Integer  ColumnType:4   9  MEDIUMINT
6:   java.lang.Integer  ColumnType:4  11  INTEGER
7:   java.lang.Long    ColumnType:-5  20  BIGINT
8:   java.lang.Double   ColumnType:8  22  DOUBLE
9:   java.lang.Double   ColumnType:8  22  DOUBLE
10:  java.lang.Float   ColumnType:7  12  FLOAT
11:  java.lang.String   ColumnType:12  11  UNKNOWN
12:  java.lang.String   ColumnType:12  11  UNKNOWN
13:  java.lang.String   ColumnType:1  300  CHAR
14:  java.lang.String   ColumnType:12 300  VARCHAR
15:  java.sql.Date    ColumnType:91  10  DATE
16:  java.sql.Time    ColumnType:92  8  TIME
17:  java.sql.Date    ColumnType:91  4  YEAR
18:  java.sql.Timestamp  ColumnType:93  19  TIMESTAMP
19:  java.sql.Timestamp  ColumnType:93  19  DATETIME
20:  [B       ColumnType:-3 255   TINYBLOB
21:  [B       ColumnType:-4 65535   BLOB
22:  [B       ColumnType:-4 16777215  MEDIUMBLOB
23:  [B       ColumnType:-4 -1   BLOB
24:  java.lang.String  ColumnType:12  255  TINYBLOB
25:  java.lang.String  ColumnType:-1  65535  TEXT
26:  java.lang.String  ColumnType:-1  16777215  MEDIUMBLOB
27:  java.lang.String  ColumnType:-1  -1   TEXT
28:  java.lang.String  ColumnType:1   3   CHAR
29:  java.lang.String  ColumnType:1   3   CHAR

SQLServer
***********************************
0:  java.lang.Integer  ColumnType:4  11  int identity
1:  java.lang.Long    ColumnType:-5  20  bigint
2:  byte[]       ColumnType:-2  100  binary
3:  java.lang.Boolean  ColumnType:-7  1  bit
4:  java.lang.String   ColumnType:1  10  char
5:  java.sql.Timestamp  ColumnType:93  23  datetime
6:  java.sql.Timestamp  ColumnType:93  23  datetime
7:  java.math.BigDecimal ColumnType:3  20  decimal
8:  java.lang.Double   ColumnType:6  22  float
9:  byte[]       ColumnType:-4 2147483647  image
10:  java.math.BigDecimal ColumnType:3  21  money
11:  java.lang.String   ColumnType:1  10  nchar
12:  java.lang.String   ColumnType:-1 1073741823  ntext
13:  java.math.BigDecimal ColumnType:2  20  numeric
14:  java.lang.String   ColumnType:12  50  nvarchar
15:  java.lang.Float   ColumnType:7  13  real
16:  java.sql.Timestamp  ColumnType:93  16  smalldatetime
17:  java.lang.Integer  ColumnType:5   6  smallint
18:  java.math.BigDecimal ColumnType:3  12  smallmoney
19:  java.lang.String   ColumnType:12 8000  sql_variant
20:  java.lang.String   ColumnType:-1 2147483647  text
21:  byte[]       ColumnType:-2  16  timestamp
22:  java.lang.Integer  ColumnType:-6  3  tinyint
23:  java.lang.String   ColumnType:1  36  uniqueidentifier
24:  byte[]       ColumnType:-3 100  varbinary
25:  java.lang.String   ColumnType:12  50  varchar

MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类
型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许
格式。

由MySQL支持的列类型列在下面。下列代码字母用于描述中:

M
指出最大的显示尺寸。最大的合法的显示尺寸是 255 。
D
适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。
方括号(“[”和“]”)指出可选的类型修饰符的部分。

注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。

TINYINT[(M)] [UNSIGNED] [ZEROFILL]
一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255。

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]
一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]
一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]
一个正常大小整数。有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。

INTEGER[(M)] [UNSIGNED] [ZEROFILL]
这是INT的一个同义词。

BIGINT[(M)] [UNSIGNED] [ZEROFILL]

一个大整数。有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到

18446744073709551615。注意,所有算术运算用有符号的BIGINT或DOUBLE值完成,因此你不应该使用大于
9223372036854775807(63位)的有符号大整数,除了位函数!注意,当两个参数是INTEGER值时,-、+和*将使用BIGINT
运算!这意味着如果你乘2个大整数(或来自于返回整数的函数),如果结果大于9223372036854775807,你可以得到意外的结果。一个浮点
数字,不能是无符号的,对一个单精度浮点数,其精度可以是<= 24,对一个双精度浮点数,是在25和53之间,这些类型如FLOAT和DOUBLE类
型马上在下面描述。FLOAT(X)有对应的FLOAT和 DOUBLE相同的范围,但是显示尺寸和小数位数是未定义的。在MySQL3.23中,这是
一个真正的浮点值。在更早的MySQL版本中,FLOAT (precision)总是有2位小数。该句法为了ODBC兼容性而提供。

FLOAT[(M,D)] [ZEROFILL]
一个小(单精密)浮点数字。不能无符号。允许的值是-3.402823466E+38到-1.175494351E-38,0和
1.175494351E- 38到3.402823466E+38。M是显示宽度而D是小数的位数。没有参数的FLOAT或有<24的一个参数表示一
个单精密浮点数字。

DOUBLE[(M,D)] [ZEROFILL]
一个正常大小(双精密)浮点数字。不能无符号。允许的值是-1.7976931348623157E+308
到-2.2250738585072014E- 308、0和2.2250738585072014E-308到
1.7976931348623157E+308。M是显示宽度而D是小数位数。没有一个参数的DOUBLE或FLOAT(X)(25 < = X < = 53)代表一个双精密浮点数字。

DOUBLE PRECISION[(M,D)] [ZEROFILL]

REAL[(M,D)] [ZEROFILL]
这些是DOUBLE同义词。

DECIMAL[(M[,D])] [ZEROFILL]
一个未压缩(unpack)的浮点数字。不能无符号。行为如同一个CHAR列:“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符。小
数点,并且对于负数,“-”符号不在M中计算。如果D是0,值将没有小数点或小数部分。DECIMAL值的最大范围与DOUBLE相同,但是对一个给定
的 DECIMAL列,实际的范围可以通过M和D的选择被限制。如果D被省略,它被设置为0。如果M被省掉,它被设置为10。注意,在
MySQL3.22里, M参数包括符号和小数点。

NUMERIC(M,D) [ZEROFILL]
这是DECIMAL的一个同义词。
DATE
一个日期。支持的范围是’1000-01-01′到’9999-12-31′。MySQL以’YYYY-MM-DD’格式来显示DATE值,但是允许你
使用字符串或数字把值赋给DATE列。

DATETIME
一个日期和时间组合。支持的范围是’1000-01-01 00:00:00′到’9999-12-3123:59:59′。MySQL以’YYYY-
MM-DDHH:MM:SS’格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME的列。

TIMESTAMP[(M)]
一个时间戳记。范围是’1970 -01-0100:00:00′到2037年的某时。MySQL以
YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或 YYMMDD格式来显示TIMESTAMP值,取决于是否M是14(或
省略)、12、8或6,但是允许你使用字符串或数字把值赋给TIMESTAMP列。一个TIMESTAMP列对于记录一个INSERT或UPDATE操
作的日期和时间是有用的,因为如果你不自己给它赋值,它自动地被设置为最近操作的日期和时间。你以可以通过赋给它一个NULL值设置它为当前的日期和时
间。
TIME
一个时间。范围是’-838:59:59′到’838:59:59′。MySQL以’HH:MM:SS’格式来显示TIME值,但是允许你使用字符串或
数字把值赋给TIME列。

YEAR[(2|4)]
一个2或4位数字格式的年(缺省是4位)。允许的值是1901到2155,和0000(4位年格式),如果你使用2
位,1970-2069(70-69)。 MySQL以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR列。(YEAR类型
在MySQL3.22中是新类型。)

CHAR(M) [BINARY]
一个定长字符串,当存储时,总是是用空格填满右边到指定的长度。M的范围是1~255个字符。当值被检索时,空格尾部被删除。CHAR值根据缺省字符集
以大小写不区分的方式排序和比较,除非给出BINARY关键词。NATIONALCHAR(短形式NCHAR)是ANSISQL的方式来定义CHAR列
应该使用缺省字符集。这是MySQL的缺省。CHAR是CHARACTER的一个缩写。

[NATIONAL] VARCHAR(M) [BINARY]
一个变长字符串。注意:当值被存储时,尾部的空格被删除(这不同于ANSI SQL规范)。M的范围是1 ~ 255个字符。VARCHAR值根据缺省
字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词值。 VARCHAR是CHARACTERVARYING一个缩写。

TINYBLOB

TINYTEXT
一个BLOB或TEXT列,最大长度为255(2^8-1)个字符。
BLOB

TEXT
一个BLOB或TEXT列,最大长度为65535(2^16-1)个字符。

MEDIUMBLOB

MEDIUMTEXT
一个BLOB或TEXT列,最大长度为16777215(2^24-1)个字符。
LONGBLOB

LONGTEXT
一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。

ENUM(‘value1′,’value2′,…)
枚举。一个仅有一个值的字符串对象,这个值式选自与值列表’value1′、’value2′, …,或NULL。一个ENUM最多能有65535
不同的值。

SET(‘value1′,’value2′,…)
一个集合。能有零个或多个值的一个字符串对象,其中每一个必须从值列表’value1′, ‘value2′, …选出。一个SET最多能有64个
成员。

2009-06-22IT技术,转载

没有评论
196 views

Grep学习笔记

前段时间因为需要分析项目的log,工作量巨大,特意看了一下grep,想整理一下,发现已经有了,所以也就不再重复造轮子了,下面这篇不错,不过访问速度有点慢,特转载过来。

整理:Jims of 肥肥世家

1. grep简介

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同。egrep是grep的扩展,支持更多的re元字符,fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能。

grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到屏幕,不影响原文件内容。
继续阅读 »

2009-05-04转载

没有评论
84 views

Oracle中SQLPLUS的常用指令收集与技巧

说明:转载自http://www.knowsky.com

安装了oracle9i,进入sal*plus需要输入用户名、口令和主机标志符

system/manager

sys/change_on_intall

scott/tiger

internal/oracle

以上为初始密码
主机字符串空或者是@+你的服务名,在本地登陆不需要本地服务名。
下面就介绍一下一些常用的sql*plus命令:

首先查看当前使用的数据库实例:
select name from V$database;
切换两个数据库实例
在sqlplus里connect username/password@sid

或host set ORACLE_SID=sid

或cmd里set ORACLE_SID=sid

或修改注册表里ORACLE_SID项  <!–more–>
◆1. 执行一个SQL脚本文件

SQL>start file_name

SQL>@ file_name

我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。
◆2. 对当前的输入进行编辑

SQL>edit
◆3. 重新运行上一次运行的sql语句

SQL>/
◆4. 将显示的内容输出到指定文件

SQL> SPOOL file_name

在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。
◆5. 关闭spool输出

SQL> SPOOL OFF

只有关闭spool输出,才会在输出文件中看到输出的内容。
◆6.显示一个表的结构

SQL> desc table_name
◆7. COL命令:

主要格式化列的显示形式。

该命令有许多选项,具体如下:

COL[UMN] [{ column|expr} [ option ...]]

Option选项可以是如下的子句:

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]
1). 改变缺省的列标题

COLUMN column_name HEADING column_heading

For example:

Sql>select * from dept;

DEPTNO DNAME LOC

———- —————————- ———

10 ACCOUNTING NEW YORK

sql>col LOC heading location

sql>select * from dept;

DEPTNO DNAME location

——— —————————- ———–

10 ACCOUNTING NEW YORK
2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上:

Sql>select * from emp

Department name Salary

———- ———- ———-

10 aaa 11

SQL> COLUMN ENAME HEADING ’Employee|Name’

Sql>select * from emp

Employee

Department name Salary

———- ———- ———-

10 aaa 11

note: the col heading turn into two lines from one line.
3). 改变列的显示长度:

FOR[MAT] format

Sql>select empno,ename,job from emp;

EMPNO ENAME JOB

———- ———- ———

7369 SMITH CLERK

7499 ALLEN SALESMAN

7521 WARD SALESMAN

Sql> col ename format a40

EMPNO ENAME JOB

———- —————————————- ———

7369 SMITH CLERK

7499 ALLEN SALESMAN

7521 WARD SALESMAN
4). 设置列标题的对齐方式

JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]}

SQL> col ename justify center

SQL> /

EMPNO ENAME JOB

———- —————————————- ———

7369 SMITH CLERK

7499 ALLEN SALESMAN

7521 WARD SALESMAN

对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边
5). 不让一个列显示在屏幕上

NOPRI[NT]|PRI[NT]

SQL> col job noprint

SQL> /

EMPNO ENAME

———- —————————————-

7369 SMITH

7499 ALLEN

7521 WARD
6). 格式化NUMBER类型列的显示:

SQL> COLUMN SAL FORMAT $99,990

SQL> /

Employee

Department Name Salary Commission

———- ———- ——— ———-

30 ALLEN $1,600 300
7). 显示列值时,如果列值为NULL值,用text值代替NULL值

COMM NUL[L] text

SQL>COL COMM NUL[L] text
8). 设置一个列的回绕方式

WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED]

COL1

——————–

HOW ARE YOU?
SQL>COL COL1 FORMAT A5

SQL>COL COL1 WRAPPED

COL1

—–

HOW A

RE YO

U?
SQL> COL COL1 WORD_WRAPPED

COL1

—–

HOW

ARE

YOU?
SQL> COL COL1 WORD_WRAPPED

COL1

—–

HOW A
9). 显示列的当前的显示属性值

SQL> COLUMN column_name
10). 将所有列的显示属性设为缺省值

SQL> CLEAR COLUMNS
◆8. 屏蔽掉一个列中显示的相同的值

BREAK ON break_column

SQL> BREAK ON DEPTNO

SQL> SELECT DEPTNO, ENAME, SAL

FROM EMP

WHERE SAL < 2500

ORDER BY DEPTNO;

DEPTNO ENAME SAL

———- ———– ———

10 CLARK 2450

MILLER 1300

20 SMITH 800

ADAMS 1100
◆9. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行。

BREAK ON break_column SKIP n
SQL> BREAK ON DEPTNO SKIP 1

SQL> /

DEPTNO ENAME SAL

———- ———– ———

10 CLARK 2450

MILLER 1300
20 SMITH 800

ADAMS 1100
◆10. 显示对BREAK的设置

SQL> BREAK
◆11. 删除6、7的设置

SQL> CLEAR BREAKS
◆12. Set 命令:

该命令包含许多子命令:

SET system_variable value

system_variable value 可以是如下的子句之一:

APPI[NFO]{ON|OFF|text}

ARRAY[SIZE] {15|n}

AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n}

AUTOP[RINT] {ON|OFF}

AUTORECOVERY [ON|OFF]

AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

BLO[CKTERMINATOR] {.|c}

CMDS[EP] {;|c|ON|OFF}

COLSEP {_|text}

COM[PATIBILITY]{V7|V8|NATIVE}

CON[CAT] {.|c|ON|OFF}

COPYC[OMMIT] {0|n}

COPYTYPECHECK {ON|OFF}

DEF[INE] {&|c|ON|OFF}

DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}]

ECHO {ON|OFF}

EDITF[ILE] file_name[.ext]

EMB[EDDED] {ON|OFF}

ESC[APE] {|c|ON|OFF}

FEED[BACK] {6|n|ON|OFF}

FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL}

FLU[SH] {ON|OFF}

HEA[DING] {ON|OFF}

HEADS[EP] {||c|ON|OFF}

INSTANCE [instance_path|LOCAL]

LIN[ESIZE] {80|n}

LOBOF[FSET] {n|1}

LOGSOURCE [pathname]

LONG {80|n}

LONGC[HUNKSIZE] {80|n}

MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL

{ON|OFF}] [PRE[FORMAT] {ON|OFF}]

NEWP[AGE] {1|n|NONE}

NULL text

NUMF[ORMAT] format

NUM[WIDTH] {10|n}

PAGES[IZE] {24|n}

PAU[SE] {ON|OFF|text}

RECSEP {WR[APPED]|EA[CH]|OFF}

RECSEPCHAR {_|c}

SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_

WRAPPED]|TRU[NCATED]}]

SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]}

SHOW[MODE] {ON|OFF}

SQLBL[ANKLINES] {ON|OFF}

SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]}

SQLCO[NTINUE] {> |text}

SQLN[UMBER] {ON|OFF}

SQLPRE[FIX] {#|c}

SQLP[ROMPT] {SQL>|text}

SQLT[ERMINATOR] {;|c|ON|OFF}

SUF[FIX] {SQL|text}

TAB {ON|OFF}

TERM[OUT] {ON|OFF}

TI[ME] {ON|OFF}

TIMI[NG] {ON|OFF}

TRIM[OUT] {ON|OFF}

TRIMS[POOL] {ON|OFF}

UND[ERLINE] {-|c|ON|OFF}

VER[IFY] {ON|OFF}

WRA[P] {ON|OFF}
1). 设置当前session是否对修改的数据进行自动提交

SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n}
2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句

SQL> SET ECHO {ON|OFF}
3).是否显示当前sql语句查询或修改的行数

SQL> SET FEED[BACK] {6|n|ON|OFF}

默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数
4).是否显示列标题

SQL> SET HEA[DING] {ON|OFF}

当set heading off 时,在每页的上面不显示列标题,而是以空白行代替
5).设置一行可以容纳的字符数

SQL> SET LIN[ESIZE] {80|n}

如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。
6).设置页与页之间的分隔

SQL> SET NEWP[AGE] {1|n|NONE}

当set newpage 0 时,会在每页的开头有一个小的黑方框。

当set newpage n 时,会在页和页之间隔着n个空行。

当set newpage none 时,会在页和页之间没有任何间隔。
7).显示时,用text值代替NULL值

SQL> SET NULL text
8).设置一页有多少行数

SQL> SET PAGES[IZE] {24|n}

如果设为0,则所有的输出内容为一页并且不显示列标题
9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。

SQL> SET SERVEROUT[PUT] {ON|OFF}

在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。
10).当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。

SQL> SET WRA[P] {ON|OFF}

当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。
11).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。

SQL> SET TERM[OUT] {ON|OFF}

在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。
12).将SPOOL输出中每行后面多余的空格去掉

SQL> SET TRIMS[OUT] {ON|OFF}
13)显示每个sql语句花费的执行时间

set TIMING {ON|OFF}
◆14.修改sql buffer中的当前行中,第一个出现的字符串

C[HANGE] /old_value/new_value

SQL> l

1* select * from dept

SQL> c/dept/emp

1* select * from emp
◆15.编辑sql buffer中的sql语句

EDI[T]
◆16.显示sql buffer中的sql语句,list n显示sql buffer中的第n行,并使第n行成为当前行

L[IST] [n]
◆17.在sql buffer的当前行下面加一行或多行

I[NPUT]
◆18.将指定的文本加到sql buffer的当前行后面

A[PPEND]

SQL> select deptno,

2 dname

3 from dept;

DEPTNO DNAME

———- ————–

10 ACCOUNTING

20 RESEARCH

30 SALES

40 OPERATIONS
SQL> L 2

2* dname

SQL> a ,loc

2* dname,loc

SQL> L

1 select deptno,

2 dname,loc

3* from dept

SQL> /
DEPTNO DNAME LOC

———- ————– ————-

10 ACCOUNTING NEW YORK

20 RESEARCH DALLAS

30 SALES CHICAGO

40 OPERATIONS BOSTON

 
◆19.将sql buffer中的sql语句保存到一个文件中

SAVE file_name
◆20.将一个文件中的sql语句导入到sql buffer中

GET file_name
◆21.再次执行刚才已经执行的sql语句

RUN

or

/
◆22.执行一个存储过程

EXECUTE procedure_name
◆23.在sql*plus中连接到指定的数据库

CONNECT user_name/passwd@db_alias
◆24.设置每个报表的顶部标题

TTITLE
◆25.设置每个报表的尾部标题

BTITLE
◆26.写一个注释

REMARK [text]
◆27.将指定的信息或一个空行输出到屏幕上

PROMPT [text]
◆28.将执行的过程暂停,等待用户响应后继续执行

PAUSE [text]
Sql>PAUSE Adjust paper and press RETURN to continue.
◆29.将一个数据库中的一些数据拷贝到另外一个数据库(如将一个表的数据拷贝到另一个数据库)

COPY {FROM database | TO database | FROM database TO database}

{APPEND|CREATE|INSERT|REPLACE} destination_table

[(column, column, column, ...)] USING query
sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST

create emp_temp

USING SELECT * FROM EMP
◆30.不退出sql*plus,在sql*plus中执行一个操作系统命令:

HOST
Sql> host hostname

该命令在windows下可能被支持。
◆31.在sql*plus中,切换到操作系统命令提示符下,运行操作系统命令后,可以再次切换回sql*plus:

!
sql>!

$hostname

$exit

sql>
该命令在windows下不被支持。
◆32.显示sql*plus命令的帮助

HELP

如何安装帮助文件:

Sql>@ ?sqlplusadminhelphlpbld.sql ?sqlplusadminhelphelpus.sql

Sql>help index
◆33.显示sql*plus系统变量的值或sql*plus环境变量的值

Syntax

SHO[W] option

where option represents one of the following terms or clauses:

system_variable

ALL

BTI[TLE]

ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY|

TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name]

LNO

PARAMETERS [parameter_name]

PNO

REL[EASE]

REPF[OOTER]

REPH[EADER]

SGA

SPOO[L]

SQLCODE

TTI[TLE]

USER
1) . 显示当前环境变量的值:

Show all
2) . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息

Show error

当创建一个函数、存储过程等出错时,变可以用该命令查看在那个地方出错及相应的出错信息,进行修改后再次进行编译。
3) . 显示初始化参数的值:

show PARAMETERS [parameter_name]
4) . 显示数据库的版本:

show REL[EASE]
5) . 显示SGA的大小

show SGA
6). 显示当前的用户名

show user
SQL>SET DEFINE ON

经常用于运行SQL 脚本中, 对变量的宏替换(&)

SQL>DEFINE TSTEMP=TEMPTS

将运行脚本中的&TSTEMP 替换成 TEMPTS
SQL>SET DEFINE OFF

关闭宏替换, 经常用于运行PACKAGE或存储过程
Sql*plus中蕴藏着好多技巧,如果掌握这些技巧,对于在oracle数据库下进行快速开发与有效维护数据库都是有益的。

◆1.使用SQL*PLUS动态生成批量脚本

将spool与select命令结合起来使用,可以生成一个脚本,脚本中包含有可以批量执行某一任务的语句。

例1:

生成一个脚本,删除SCOTT用户下的所有的表:

a. 创建gen_drop_table.sql文件,包含如下语句:

SPOOL c:drop_table.sql

SELECT ‘DROP TABLE ‘|| table_name ||’;’ FROM user_tables;

SPOOL OFF

b. 以SCOTT用户登录数据库

SQLPLUS > @ …..gen_dorp_table.sql

c. 在c盘根目录下会生成文件drop_table.sql文件,包含删除所有表的语句,如下所示:

SQL> SELECT ‘DROP TABLE ‘|| table_name ||’;’ FROM user_tables;
‘DROPTABLE’||TABLE_NAME||’;’

——————————————————————————–

DROP TABLE DEPT;

DROP TABLE EMP;

DROP TABLE PARENT;

DROP TABLE STAT_VENDER_TEMP;

DROP TABLE TABLE_FORUM;
5 rows selected.
SQL> SPOOL OFF

d. 对生成的drop_table.sql文件进行编辑去掉不必要的部分,只留下drop table …..语句

e. 在scott用户下运行dorp_table.sql文件,删除scott用户下所有的表。

SQLPLUS > @ c:dorp_table.sql
在上面的操作中,在生成的脚本文件中会有多余的字符,如运行的sql语句,标题,或返回的行数,需要我们编辑该脚本后再运行,给实际的操作带来诸多不便。懒惰是人的本性,这促使我们用更简单的办法来实现上面的任务。
a. 创建gen_drop_table.sql文件,包含如下语句:

set echo off

set feedback off

set newpage none

set pagesize 5000

set linesize 500

set verify off

set pagesize 0

set term off

set trims on

set linesize 600

set heading off

set timing off

set verify off

set numwidth 38

SPOOL c:drop_table.sql

SELECT ‘DROP TABLE ‘|| table_name ||’;’ FROM user_tables;

SPOOL OFF

b. 以SCOTT用户登录数据库

SQLPLUS > @ …..gen_dorp_table.sql

c. 在c盘根目录下会生成文件drop_table.sql文件,包含删除所有表的语句,如下所示:

DROP TABLE DEPT;

DROP TABLE EMP;

DROP TABLE PARENT;

DROP TABLE STAT_VENDER_TEMP;

DROP TABLE TABLE_FORUM;

d. 在scott用户下运行dorp_table.sql文件,删除scott用户下所有的表。

SQLPLUS > @ c:dorp_table.sql

 

◆2.将一个表中的数据导出生成一个文本文件,列与列之间以”,”隔开

set echo off

set feedback off

set newpage none

set pagesize 5000

set linesize 500

set verify off

set pagesize 0

set term off

set trims on

set linesize 600

set heading off

set timing off

set verify off

set numwidth 38

SPOOL c:drop_table.sql

select DEPTNO || ‘,’ || DNAME FROM DEPT;

SPOOL OFF

将上面的内容保存为一个文本文件后,以scott登录,执行该文件后显示结果:

10,ACCOUNTING

20,RESEARCH

30,SALES

40,OPERATIONS

 

通过上面的两个例子,我们可以将:

set echo off

set feedback off

set newpage none

set pagesize 5000

set linesize 500

set verify off

set pagesize 0

set term off

set trims on

set linesize 600

set heading off

set timing off

set verify off

set numwidth 38

SPOOL c:具体的文件名

你要运行的sql语句

SPOOL OFF

作为一个模版,只要将必要的语句假如这个模版就可以了。
在oracle的较新版本中,还可以用set colsep命令来实现上面的功能:

SQL> set colsep ,

SQL> select * from dept;

10,ACCOUNTING ,NEW YORK

20,RESEARCH ,DALLAS

30,SALES ,CHICAGO

40,OPERATIONS ,BOSTON

35,aa ,bb
◆3.动态生成spool命令所需的文件名

在我们上面的例子中,spool命令所需要的文件名都是固定的。有时我们需要每天spool一次,并且每次spool的文件名都不相同,如文件名包含当天的日期,该如何实现呢?

column dat1 new_value filename;

select to_char(sysdate,’yyyymmddhh24mi’) dat1 from dual;

spool c:&&filename..txt

select * from dept;

spool off;
◆4.如何从脚本文件中得到WINDOWS环境变量的值:

在windos中:

spool c:temp%ORACLE_SID%.txt

select * from dept;

spool off
在上面的例子中,通过%ORACLE_SID%的方式引用环境变量ORACLE_SID的值,如果ORACLE_SID的值为orcl,则生成的spool文件名为:orcl.txt
在UNIX中:

spool c:temp$ORACLE_SID.txt

select * from dept;

spool off
在上面的例子中,通过$ORACLE_SID的方式引用环境变量ORACLE_SID的值,如果ORACLE_SID的值为orcl,则生成的spool文件名为:orcl.txt
◆5.如何指定缺省的编辑脚本的目录

在sql*plus中,可以用save命令,将上一条执行的sql语句保存到一个文件中,但是如何设置该文件的缺省目录呢?

通过SQL> set editfile c:tempfile.sql 命令,可以设置其缺省目录为c:tmpe,缺省文件名为file.sql。
◆6.如何除去表中相同的行

找到相同的行:

SELECT * FROM dept a

WHERE ROWID <> (SELECT MAX(ROWID)

FROM dept b

WHERE a.deptno = b.deptno

AND a.dname = b.dname — Make sure all columns are compared

AND a.loc = b.loc);
注释:

如果只找deptno列相同的行,上面的查询可以改为:

SELECT * FROM dept a

WHERE ROWID <> (SELECT MAX(ROWID)

FROM dept b

WHERE a.deptno = b.deptno)
删除相同的行:

DELETE FROM dept a

WHERE ROWID <> (SELECT MAX(ROWID

FROM dept b

WHERE a.deptno = b.deptno

AND a.dname = b.dname — Make sure all columns are compared

AND a.loc = b.loc);
注意:上面并不删除列值为null的行。
◆7.如何向数据库中插入两个单引号(’’)

Insert inot dept values(35,’aa’’’’bb’,’a’’b’);
在插入时,用两个’表示一个’。
◆8.如何设置sql*plus的搜寻路径,这样在用@命令时,就不用输入文件的全路径。

设置SQLPATH环境变量。

如:

SQLPATH = C:ORANTDBS;C:APPSSCRIPTS;C:MYSCRIPTS
◆9.@与@@的区别是什么?

@等于start命令,用来运行一个sql脚本文件。

@命令调用当前目录下的,或指定全路径,或可以通过SQLPATH环境变量搜寻到的脚本文件。

@@用在脚本文件中,用来指定用@@执行的文件与@@所在的文件在同一目录,而不用指定全路径,也不从SQLPATH环境变量指定的路径中寻找文件,该命令一般用在嵌套脚本文件中。
◆10.&与&&的区别

&用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值。

&&用来创建一个持久变量,就像用用define命令或带new_vlaue字句的column命令创建的持久变量一样。当用&&命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次。
如,将下面三行语句存为一个脚本文件,运行该脚本文件,会提示三次,让输入deptnoval的值:

select count(*) from emp where deptno = &deptnoval;

select count(*) from emp where deptno = &deptnoval;

select count(*) from emp where deptno = &deptnoval;
将下面三行语句存为一个脚本文件,运行该脚本文件,则只会提示一次,让输入deptnoval的值:

select count(*) from emp where deptno = &deptnoval;

select count(*) from emp where deptno = &deptnoval;

select count(*) from emp where deptno = &deptnoval;
◆11.引入copy的目的

Copy命令在两个数据库之间拷贝数据时特别有用,特别是该命令可以在两个数据库之间传递long型字段的数据。

缺点:

在两个数据库之间传递数据时,有可能丢失精度(lose precision)。
◆12.问什么在修改大量的行时,我的脚本会变得很慢?

当通过PL/SQL块修改一个表中的许多行时,你会创建在表上创建一个cursor,但是只有在你关闭cursor时,才会释放ROLLBACK SEGMENT,这样,当cursor仍然打开时,修改过程会变慢,这是因为数据库不得不搜寻大量的rollback segment以便于维护读一致性。为了避免这样情况,试着在表上加一个标志字段来描述该行是否已经被修改,然后关闭该cursor,然后再打开该cursor。每次可以修改5000行.

2009-05-04转载

没有评论
89 views

MySQL数据库常用命令

1、MySQL常用命令

create database name; 创建数据库

use databasename; 选择数据库

drop database name 直接删除数据库,不提醒

show tables; 显示表

describe tablename; 表的详细描述

select 中加上distinct去除重复字段

mysqladmin drop databasename 删除数据库前,有提示。

显示当前mysql版本和当前日期

select version(),current_date;

2、修改mysql中root的密码:

shell>mysql -u root -p

mysql> update user set password=password(”yourpassword″) where user=’root’;

mysql> flush privileges //刷新数据库

mysql>use dbname; 打开数据库:

mysql>show databases; 显示所有数据库

mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后

mysql>describe user; 显示表mysql数据库中user表的列信息);

3、grant

创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个

mysql> grant all privileges on *.* to user@localhost identified by ’something’ with

增加新用户

格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”

GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY ’something’ WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* TO monty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;

删除授权:

mysql> revoke all privileges on *.* from root@”%”;

mysql> delete from user where user=”root” and host=”%”;

mysql> flush privileges;

创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb

mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@ it363.com identified by ‘ passwd’

重命名表:

mysql > alter table t1 rename t2;

4、mysqldump

备份数据库

shell> mysqldump -h host -u root -p dbname >dbname_backup.sql

恢复数据库

shell> mysqladmin -h myhost -u root -p create dbname

shell> mysqldump -h host -u root -p dbname < dbname_backup.sql

如果只想卸出建表指令,则命令如下:

shell> mysqladmin -u root -p -d databasename > a.sql

如果只想卸出插入数据的sql命令,而不需要建表命令,则命令如下:

shell> mysqladmin -u root -p -t databasename > a.sql

那么如果我只想要数据,而不想要什么sql命令时,应该如何操作呢?

   mysqldump -T./ phptest driver

其中,只有指定了-T参数才可以卸出纯文本文件,表示卸出数据的目录,./表示当前目录,即与mysqldump同一目录。如果不指定driver 表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包含建表执行。另一个为.txt文件,只包含数据,且没有sql指令。

5、可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳程序键入重定向实用程序来完成这项工作。例如,如果在文件my_file.sql 中存放有查

询,可如下执行这些查询:

例如,如果您想将建表语句提前写在sql.txt中:

mysql > mysql -h myhost -u root -p database < sql.txt

返回顶部