SQL*Plus是一个交互式批查询工具,它随着DB被安装,有一个命令行接口。SQL*Plus有自己的命令和环境,提供了面向DB的入口。通过SQL*Plus,用户可以运行SQL,PL/SQL,SQL*Plus和系统命令,从而实现下述任务:
对查询结构进行格式化、计算、存储和输出;
检测表和对象定义;
开发并运行批处理脚本;
进行DB的管理
SQL*Plus可以交互式的,或者批处理的生成报告,输出到文件或者终端,或者是HTML格式的。
SQL*Plus架构
是一个两层的模型,包括
1. 客户端:一个基于字符终端的命令行接口
2. DB:数据库网络模块
启动SQL*Plus
对于刚刚安装的DB,可以用SYS或者个SYSTEM账户。当使用SYS或者/作为用户名,并且带有AS SYSDBA, 你的用户会由操作系统授权。这时登录系统的账户,必须是一个特殊用户组的成员。在Unix系统上,这个用户组是dba。
这种授权使你可以连接到一个还没有启动的数据库,从而能够启动它。
下面的命令可以启动 SQL*plus
sqlplus {username | /} [as sysdba]
例如:
$ sqlplus / AS SYSDBA
Enter password: password
如果使用SYS用户,必须附带 AS SYSDBA
HELP INDEX可以查看帮助信息
对于大多数语句,仅仅输入一个 / 可以重复执行上一次的命令。
配置SQL*Plus
SQL*Plus会查询一系列的环境变量来获得路径等信息,比如:
LD_LIBRARY_PATH:库文件搜索路径。
NLS_LANG:确定语言设置,比如american_america.utf8
TNS_ADMIN:tnsnames.ora文件的路径
SQLPATH:SQL脚本的位置,由分号分隔的一些列路径地址。搜索时,包括当前路径和SQLPATH以及其子目录。
对于每个会话,使用者可以设置SQL*Plus环境使用特定的配置。有两种不能范围的系统文件可以实现这一功能:
站点配置文件$ORACLE_HOME/sqlplus/admin/glogin.sql,当连接建立时启动,对所有用户有效。
用户配置文件login.sql,紧跟着生效,对当前用户有效。
两种配置文件都可以包含任意的SQL*Plus脚本,比如系统参数设定。
SET SQLPLUSCOMPAT[IBILITY] {x.y[.z]} 代码可以设定兼容模式的版本
下面是一个例子:
-
-- login.sql
-
-- SQL*Plus user login startup file.
-
--
-
-- This script is automatically run after glogin.sql
-
--
-
-- To change the SQL*Plus prompt to display the current user,
-
-- connection identifier and current time.
-
-- First set the database date format to show the time.
-
ALTER SESSION SET nls_date_format = 'HH:MI:SS';
-
-
-
-- SET the SQLPROMPT to include the _USER, _CONNECT_IDENTIFIER
-
-- and _DATE variables.
-
SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER _DATE> "
-
-
-
-- To set the number of lines to display in a report page to 24.
-
SET PAGESIZE 24
-
-
-
-- To set the number of characters to display on each report line to 78.
-
SET LINESIZE 78
-
-
-
-- To set the number format used in a report to $99,999.
-
SET NUMFORMAT $99,999
可以备份和恢复系统参数
-
# 备份
-
SQL> STORE SET myenv
-
Created file myenv
-
-
SQL> SHOW PAGESIZE
-
pagesize 14
-
-
SQL> SET PAGESIZE 60
-
SQL> SHOW PAGESIZE
-
pagesize 60
-
-
#恢复
-
SQL> START myenv
-
SQL> SHOW PAGESIZE
-
pagesize 14
阅读(1644) | 评论(0) | 转发(2) |