当前位置:文档之家› Oracle笔记一(基础介绍,客户端设置,SQLPLUS)

Oracle笔记一(基础介绍,客户端设置,SQLPLUS)

一、oracle基础
1、安装路径中CTL为控制文件,DBF为数据文件,LOG日志文件。日志文件分为两种:联机日志文件(重复日志文件:共几个按着序号排列的文档,每个文档大小相同,写满后就移到下一个,全部写满后又从第一个开始。在安装之后默认的情形下将原来的写满的覆盖掉不做备份),和归档日志文件(备份时用)。控制文件控制管理数据文件和日志文件。数据库装载控制文件->打开数据库文件。
参数文件调用控制文件,控制文件管理数据文件和日志文件。

2、Oracle安装会自动生成sys用户和system用户
(1)sys是超级用户,具有最高权限,具有sysdba角色。有create database的权限,该用户默认密码是manager。
(2)system用户是管理操作员,权限也很大,具有sysoper角色,没有create databse权限,默认密码是change_on_install。
(3)一般数据库维护使用system登陆操作即可。

SQL server与Oracle区别
SQL server只能有一个服务,不同的用户可以被授予权限访问同一个数据库,数据库与用户之间没有绝对所属关系,数据库与用户是两条平行的界面。
而Oracle一个服务实例只应对一个数据库,不同的用户模式下拥有用户自己的表,不同的用户可以被授予权限访问另一个用户的表。

3、DESC v$controlfile 查看控制文件的数据结构
select name from v$controlfile; 查看控制文件的名字
DESC v$datafile 查看控制文件的数据结构
select status,name from v$datafile; 查看数据文件的名字和状态
DESC v$logfile 查看控制文件的数据结构
select member from v$logfile; 查看数据文件的名字和状态

show users; 查看当前用户
图像界面:Oracle Enterprise Manager Console
pl/sql developer 开发或管理软件
连接:connect
或者sqlplus "sys/密码 as sysdba"
断开连接:disconnect
修改密码:password 修改其他用户密码需要用sys登陆
运行sql脚本:start和@
编辑脚本:edit
spool 将显示在sqlplus屏幕上内容输出到指定的文件。

4、启动数据库的命令有如下3种:
SQL>startup (正常启动,启动数据库实例,并打开控制文件和数据文件)
SQL>startup mount (启动数据库实例,并打开控制文件,不打开数据文件)
SQL>startup nomount (只启动数据库实例,不打开控制文件和数据文件

startup
直接正常启动,这也是通常用的最多的一种启动方式。它的启动过程分成3个环节:首先把数据库实例启动起来,接着打开控制文件,也就是database mount,然后打开数据文件,也就是database open

startup mount
数据库日志模式默认的情况下是:非存档模式。我们要修改,在存档模式下进行热备份。但是数据库在启动的情况下,是不允许做修改的。只能

是把数据库先关闭,关闭之后,再启动数据库实例,在启动实例的时候打开控制文件,但是不能打开数据文件,在这个时候才能修改数据库日志模式。在mount模式下,修改:"alter database archivelog;" ,接着:"arter database open;" ;这样就把数据库的非存档模式改为了存档模式。

startup nomount
当我们的控制文件丢失一个或多个的时候,控制文件根本没有办法打开,这个时候我们就用"startup nomount" 启动数据库,以便在启动实例之后,重新创建控制文件。

5、关闭数据库的命令有如下几种:
SQL>shutdown (正常关闭,等待所有用户全部断开连接之后,才关闭数据库实例,当有空闲用户没有断开连接时,会造成长时间实例无法关闭。)
SQL>shutdown immediate (迫使每个用户执行完当前SQL语句之后,立即断开连接,关闭数据库实例。建议使用该命令。)
SQL>shutdown transactional (迫使用户在当前执行完成后,断开连接,终止实例。是事务关闭,可以恢复破坏文件)
SQL>shutdown abort (强制关闭数据库,关闭实例,很可能会造成文件的破坏。)

6、内存结构
当一个oracle实例开始运行时,他分配一个SGA(系统全局区)大的内存块,包括db buffer(数据库高速缓冲区),大共享区,共享池,redo buffer(日志缓冲区),固定SGA.
db buffer,是内存最大的一个部分,被频繁访问的的区域,包括保持缓存池,再生缓存池和默认缓存池
保持缓存池,对于在内存中长期保持的、频繁访问的使用该缓存池。在关闭数据库之前一直保留,并不释放空间。
再生缓存池,想尽快从内存中排除的对象可以使用,比如频繁访问的大表。
除了高速缓存池外,还有共享池,主要有库缓存区,字典缓存区构成,用来缓存pl/sql的程序单元,sql语句的执行版本,以及相关的执行计划。共享池的规模对数据库的性能有着非常重要的影响。

库缓存区中包括:共享sql区、pl/sql区。共享sql区保留了sql语句的解释版本,以便于再次使用的时候不必重新解释,能够提高进程的速度。pl/sql区保留了pl/sql的过程、函数等程序单元的编译版本,以便于所有的用户能够共享。执行一个单元的时候,当有两个或两个以上的用户执行同一个函数、过程、触发器等相关内容的时候,oracle并不缓存两个和两个以上的内存区域。oracle把相同的代码做一个拷贝,被不同的用户所缓存。

数据字典:缓存数据字典
当分析sql语句来校验表名、列名等数据信息的时候,oracle将频繁地数据字典,通过把最频繁使用的数据字典的信息放在字典缓冲区,oracle减少了sql语句所引起的相关性能上的冲突。
redo buffer放置需要写入磁盘的redo记录,通过一个日志的书写

进程来对日志文件进行操作,循环的方式,先进先出的缓存器池。
大共享区时oracle可选的一个特征。他提供 了一个分配大内存块的隔离内存区。如果选择多线程的服务器或者进行备份等相关的rman的相关的操作,可能会需要大共享区。
固定SGA区,不能有用户设定大小,完全有oracle自己独立的去控制。

7、安装各种客户端设置
(1)首先去oracle网站下载客户端,解压。
(2)在客户端目录里建立一个文件夹network,在network中建立admin,在admin中放入tnsnames.ora。
(3)oracle客户端配置文件tnsnames.ora,windows一般在C:\Oracle\ora90\network\ADMIN,而这个hp-unix在/oracle/product/rac11gr2/db_1/network/admin/tnsnames.ora。
(4)tnsnames.ora里类似的内容:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.10.9)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
(5)在远程管理软件里设置OCI Library为客户端目录\oci.dll,Oracle_home为客户端目录。
(7)在plsql develop中设置如下:
配置工作基本完成,再做一个bat 批处理来解决字符集乱码的问题:
写一个批处理plsql. bat放到plsqldeveloper安装目录下,内容如下:
set nls_lang=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
PLSQLDev.exe
这个字符集,指的是服务器端的字符集.
----
常设的字符集:
set nls_lang=simplified chinese_china.zhs16cgb231280
set nls_lang=simplified chinese_china.ZHS16GBK
set nls_lang=simplified chinese_china.Utf8
hp-unix下的设置:
set nls_lang=AMERICAN_AMERICA.UTF8

二 、SQLPLUS基础
1、 查看SQL/PLUS支持的所有命令:help index或者? index

2、 查看某个命令的具体用法的命令:SQL>? 命令名

3、 忽略空行,使命令输入时空行不退出当前命令。就是说:我输入命令为多行时,某一行为空的情况下,不退出命令。这时我们要用到SET命令。设置命令如下:
SQL>SET SQLBLANKLINES ON

4、在Oracle中写SQL语句是不区分大小写的,在语句部分以分号结尾。

5、在通常查询中,我们可以使用替代变量查询。
SQL>SELECT * FROM dept WHERE deptno = &&t;
在查询时,输入条件变量值。无论我们查询哪样信息,它都只安排一个查询计划,这样就能有效的提高查询语句的执行效率,这也是Oracle建议我们使用的查询方式。
如果不使用替代变量,而是直接输入查询条件,如:
SQL>SELECT * FROM dept WHERE deptno=10;
SQL>SELECT * FROM dept WHERE deptno=20;
它查询一次就会安排一个查询计划,查询几次就会有几个查询计划,这样也查询语句的执行效率就不高了。

6、Oracle缓存区查看命令,用LIST。
修改Oracle缓存区里的SQL语句命令,用CHANGE, 简写C 。
执行缓存区里的命令,用“/

” 。
删除缓存区里的SQL语句命令,用 DEL 。
在缓存区中追加信息命令,用 APPEND ,简写为:A
保存缓存区SQL语句命令,用 SAVE
执行保存的脚本文件命令,用 @ 如@C:\test.txt
查看脚本文件内容,但不执行的命令, 用 GET
直接编辑刚刚保存到缓存区里的SQL语句的命令,用 EDIT,保存修改后,用“/”命令执行

7、查看表中对应字段的数据类型命令, 用 DESCRIBE , 简写为:DESC

8、给指定的列加标签的命令,用 COLUMN ,简写为COL,COL deptno HEADING "编号";
格式化输出,也是用 COL 命令。COL dname FORMAT A10; (10个字符输出)
加标签和格式化输出,我们可以一起设置,例如:COL dname FORMAT A10 HEADING "部门名称";
把整型字段,格式化输出。例如:我们把数据文件的字节数(整型)格式化,命令如下:COL bytes FORMAT 999,999,999

9、设置表的标题和标签命令 。例如:
SQL>SET LINESIZE 80 (设置行宽) set linesize 设置一行显示多少字符
pagesize 分页
SQL>TTITLE CENTER "我的标题" SKIP 1- (设置标题,并空一行)
>LEFT "测试报表" RIGHT "页" - (设置左边标签,设置右边标签)
>FORMAT 999 SQL.PNO SKIP 2
SQL>BTITLE CENTER "我的版权所有2008-2010"
SQL>SELECT * FROM dept;
当我们不需要时,可以把显示的标签去掉,例如:
SQL>BTITLE OFF

10、报表制作命令,"BREAK"和"COMPUTE"。
我们想实现重复的显示一条,如何来实现,实现如下:SQL>BREAK ON pub
利用"COMPUTE"来做统计工作。示例如下:SQL> COMP COUNT LABEL "计数" OF BOOKS_NAME ON PUB

11、保存查询得到的结果集命令,用 SPOOL ,简写为:SPO
例如:我们把books表刚才查询的结果集放到d盘根目录下的spool.txt文件中,具体操作如下:
SQL> SPOOL d:\spool.txt
SQL> SELECT * FROM books;
SQL> SPOOL OFF

相关主题
文本预览
相关文档 最新文档