Ø 简介
本文主要介绍 Oracle 中的 SQL Plus 的常用命令,包括以下内容:
1. 连接命令
2. 服务器命令
3. 数据库命令
4. 用户命令
5. 备份与还原数据库
6. 修改用户名
7. 删除表空间
8. 文件操作命令
9. 执行 SQL 语句
10. 解决 SQL Plus 中文乱码(以 Windows Server 2019 为例)
11. 其他
注意事项:
1. 当在 SQL Plus 中使用 SELECT、INSERT、DELETE、UPDATE 语句等 SQL 语句时,需要以";"分号结尾,其他语句不需要。
1. 连接命令
1) SYS 用户
sys / as sysdba #连接默认数据库
sys@orcl / as sysdba #连接指定数据库
sys/syspwd@localhost:1521/orcl as sysdba #连接指定端口
sys/syspwd@192.168.1.170:1521/orcl as sysdba #连接指定IP
2) SYSTEM / SCOTT / 普通用户(以 SCOTT 用户为例)
scott/tiger #连接默认数据库
scott/tiger@orcl #连接指定数据库
scott/tiger@localhost:1521/orcl #连接指定端口
scott/tiger@192.168.1.170:1521/orcl #连接指定IP
Ø 说明以下几点:
1) 当使用 cmd 命令终端连接时,只需在前面加上 sqlplus 即可,例如:
2) 连接时,SYS 与其他用户(SYSTEM、SCOTT、普通用户)的区别:
1. 在任何时候,SYS 登录最后必须跟上 as sysdba 或者 as sysoper; #sysdba 和 sysoper 表示用户角色
2. 在 Oracle 服务器以 as sysdba 登录时,不会验证用户名和密码的有效性,例如:
3) cmd 命令终端与 SQL Plus 的一些区别:
1. sqlplus / as sysdba <--> sys / as sysdba #注意空格
2. sqlplus "/as sysdba" <--> sys /as sysdba
3. 不支持 <--> sys as sysdba
4) cmd 命令的另一种方式
1. sqlplus /nolog
2. conn / as sysdba 或者 conn scott/tiger
2. 服务器命令
1) 查看监听状态
lsnrctl status
2) 启动监听
lsnrctl start
3) 停止监听
lsnrctl stop
4) 检测远程 listener(监听)是否启动
tnsping orcl #本机检测
或者
tnsping 127.0.0.1:1521/orcl #远程检测(+IP:端口号/数据库名)
说明:如果显示"OK"表示配置正确,并且监听正常启动:
3. 数据库命令
1) 登录数据库
sqlplus "/as sysdba"
2) 启动数据库
startup
dbstart #启动所有数据
3) 立即关闭数据库
shutdown immediate
立即关闭数据库时,在语句被发出以后,不允许新的连接,也不允许新的事务启动。任何未提交的事务被回滚。在这种模式下关闭。数据库的下一次启动时将不需要任何实例恢复过程。
4) 正常关闭数据库
shutdown normal
正常的数据库关闭语句被发出以后,不允许重新连接。并且在数据库被关闭以前,Oracle等所有的当前被连接的用户从数据库断开。在这种模式下关闭,数据库的下次启动时将不需要任何实例恢复过程。
dbshut #关闭所有数据库
5) 查看数据库状态
select open_mode from v$database; #读写模式表示数据库可以被操作
6) 查看数据库日志
select * from v$diag_info; #将显示数据库日志路径:d:\oracle\diag\rdbms\orcl\orcl\trace
7) 查看数据库文件路径
select name from v$datafile;
8) 查看表/视图结构
desc table_name/view_name;
4. 用户命令
1) 查看当前用户所在实例名
show parameter instance_name;
2) 查看登录用户
show user;
3) 切换用户
conn[ect] sys/syspwd@orcl
注意:所有用户以这种方式登录必须指定密码;并一定要跟上实例名。
4) 断开连接/退出登录
disc[connect]
5) 重置/修改用户密码
注意:只能高权限用户可以重置权限用户的密码;自身修改密码必须输入旧密码。
1. 方法一
conn system/syspwd@orcl #登录管理员用户(sys 或者 system)
passw[ord] scott #指定需要重置密码的用户
新口令: #输入新密码
2. 方法二
conn system/syspwd@orcl #登录管理员用户(sys 或者 system)
ALTER USER scott IDENTIFIED BY newpwd; #可更改 SYS、SYSTEM 用户
6) 断开连接,并退出 SQL Plus 窗口
exit | quit
7) 锁定用户
alter user learn account lock;
8) 解锁用户
alter user learn account unlock;
5. 备份与还原数据库
1) 备份数据库
2) 还原数据库
imp itpux/itpux file=/tmp/itpuxsql.dmp log=/tmp/itpuxsql.log ignore=y full=y
参数解释:
ignore=y, 表示忽略重复的表、存储过程、函数等;
full=y, 表示将所有的对象(如:表、存储过程、函数)全部导入。
6. 修改用户名
1) 打开 Oracle 服务端 SQL Plus
2) 以 SYS 用户登录
sys@orcl as sysdba
3) 查询现有的用户列表
SELECT user#, name FROM user$;
4) 修改用户名,并提交
UPDATE USER$ SET NAME='USER01' WHERE user#=91; #注意:登录时用户名(USER01)不分大小写,但是这里必须为大写,否则将找不到用户名!
COMMIT;
5) 强制刷新(缓存)
ALTER SYSTEM CHECKPOINT;
ALTER SYSTEM FLUSH SHARED_POOL;
7. 删除表空间
DROP TABLESPACE --删除表空间,不包含物理文件
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES; --删除表空间包含物理文件
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINT; --删除表空间包含物理文件
8. 文件操作命令
1) 执行外部文件
start E:\dept.sql
注意:可以不以 *.sql 为后缀的文件,但是文件中的内容必须为可执行的 SQL 语句。
2) 打开外部的脚本文件
edit E:\dept.sql #打开文件,编辑后保存
3) 输入命令窗口内容到指定文件中
spool E:\dept.sql #如果文件存在则清空内容;否则创建该文件
SQL> select * from dept where deptno=30; #执行语句以及查询结果(屏幕中的内容)都将写入指定的文件中
spool off #执行该语句,或中途执行了其他命令,将开始保存屏幕内容
9. 执行 SQL 语句
1) &变量的使用
select * from dept where dname='&dname';
说明:执行该语句后,会提示输入 &dname 变量的值,然后再进行查询。
10. 解决 SQL Plus 中文乱码(以 Windows Server 2019 为例)
该问题,通常是因为操作系统或者 SQL Plus 使用的字符集,与 Oracle 数据库实例的字符集不一致导致。以为我之前将数据库字符集设置为"SIMPLIFIED CHINESE_CHINA.AL32UTF8",与操作系统或者 SQL Plus 使用的字符集不一致。
通常情况下国内常用的还是 ZHS16GBK(GBK 16-bit Simplified Chinese)能够支持繁体中文,所以不是操作系统或者 SQL Plus 字符集有问题,而是因为数据库实例的字符集不常用(UTF8)。
解决办法,改变数据库实例的字符集就行了。而不用改操作系统或 SQL Plus 的字符集,如果非要使用 UTF8 字符集,那就可以参考下面步骤:
1) 首先,查看 Oracle 所使用的字符集
1. cmd 命令:sqlplus "/as sysdba"
2. 执行SQL:select userenv('language') from dual;
可以看到,数据库是使用的 SIMPLIFIED CHINESE_CHINA.AL32UTF8 的字符集编码。该字符集与操作系统字符集不一致,所以导致中文乱码。
2) 设置系统环境变量
添加名为“NLS_LANG”值为“SIMPLIFIED CHINESE_CHINA.AL32UTF8”的环境变量
3) 区域设置
打开控制面板 -> 区域 -> 管理 -> 更改系统区域设置 -> 勾选“使用 Unicode UTF-8 提供全球语言支持”,点击确定
确定后重启服务器即可。
4) 再次打开 SQL Plus
11. 其他
1) 清除屏幕
SQL Plus | host cls |
dos 窗口进入 SQL Plus | host cls 或者 clear scr 或者 clear screen |
2) 监听日志路径
D:\Oracle\diag\tnslsnr\T580-Abeam\listener\trace