Oracle

2019-03-14

SQL*Plus基础命令

1.连接命令

1.conn [ect]

用法:conn 用户名/密码@网络服务名 [as sysdba]

eg:

SQL> show user
USER 为 "C##MALU"
SQL> conn system/xxxxx@orcl
已连接。
SQL> show user
USER 为 "SYSTEM"

eg2:

切换到sysdba

SQL> conn / as sysdba

2.disc/disconn/disconnect

断开连接

eg:

SQL> disc
从 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 断开
SQL> show user
USER 为 ""

3.passw[ord] [username]

说明:默认更改当前用户密码,如果指定用户名,需要用sys/system登录。

eg:

SQL> show user
USER 为 "SYSTEM"
SQL> conn c##malu
输入口令:
已连接。
SQL> show user
USER 为 "C##MALU"
SQL> passw
更改 C##MALU 的口令
旧口令:
新口令:
重新键入新口令:
口令已更改

4.clear screen

说明:清屏

2.文件操作命令

1.start和@

说明:运行sql脚本

eg:

SQL> @ f:\test.sql

eg2:

SQL> start f:\test.sql

查看数据库版本

SQL> select * from v$version;

2.edit

说明:编辑sql脚本

eg:

SQL> edit f:\test.sql

3.spool

说明:将终端内容输出到指定文件中。

eq:

SQL> spool f:\1.sql
SQL> show user
USER 为 "C##MALU"
SQL> spool off

3.交互式命令

1.&

说明:相当于变量,会在执行时,要求用户输入。

eg:

SQL> select * from &a;
输入 a 的值:  table1
原值    1: select * from &a
新值    1: select * from table1

COLUMN1                                  COLUMN2
---------------------------------------- ----------------------------------------
1                                        2

4.显示和设置环境变量

1.show

说明:用于显示

eg:

SQL> show linesize
linesize 300
SQL> show user
USER 为 "C##MALU"
SQL> show pagesize
pagesize 14

2.set

说明:设置环境参数

eg:

设置终端显示宽度300个字符

SQL> set linesize 300

eg2:

设置单页显示30行

SQL> set pagesize 30

Oracle 用户管理

1.用户增删改查

1.创建用户 create user 用户名 identified by 密码

要创建一个新用户,一般需要dba权限才能使用。

eg:

SQL> create user c##boy identified by malu;
create user c##boy identified by malu
*
第 1 行出现错误:
ORA-01031: 权限不足

2.删除用户 drop user 用户名 [cascade]

如果要删除的用户,已经创建了表,那么就需要在删除的时候加上 cascade 参数,即连同该表一起删除。

3.修改用户密码

一种方法是,password username

另一种是,alter user 用户名 identified by 新密码

4.查看所有用户

select * from dba_users;
select * from all_users;
select * from user_users;

eg:

SQL> select username  from all_users;

5.获取当前用户下所有的表

SQL> select table_name from user_tables;

6.查看当前用户的缺省表空间

SQL> select username,default_tablespace from user_users; 

7.查看当前用户的角色

SQL> select * from user_role_privs; 

8.查看当前用户的系统权限和表级权限

SQL> select * from user_sys_privs; 
SQL> select * from user_tab_privs; 

9.用系统管理员,查看当前数据库有几个用户连接:

SQL> select username,sid,serial# from v$session; 

配置

Oracle sqlnet.ora配置

sqlnet配置文件的存放位置一般在:$ORACLE_HOME/network/admin目录下

该配置文件的作用:

指定要附加到非限定名称的客户端域 优先考虑命名方法 启用日志记录和跟踪功能 通过特定处理器路由连接 配置外部命名的参数 配置Oracle Advanced Security 使用特定于协议的参数来限制对数据库的访问

连接工具

web方式管理工具

管理界面:https://localhost:5500/em/

账号密码一般是安装时设置的sys和对应的密码

SQL Developer

这是Oracle安装自带的图形化管理工具,用来编程等

Navicat Permium集成了Oracle客户端

DBeaver

开源且支持很多数据库 https://github.com/dbeaver/dbeaver

故障处理

ORA-28040: No matching authentication protocol

1.打开 sqlnet.ora 文件

比如我的在:F:\app\malu\product\12.2.0\dbhome_1\network\admin\ 目录下

新增如下2行:

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

如何重启oracle:

set ORACLE_SID=SID_Name,回车。
sqlplus /nolog
SQL> connect / as sysdba
SQL> shutdown immediate
SQL> startup
SQL> exit

问题现象:

使用sqlplus 和 sql developer可以登录,但是使用navicat或程序连接时总是提示ORA-01017: 用户名/口令无效; 登录被拒绝

处理方式:

修改密码: alter user C##malu identified by 123456;

或使用sql developer,直接重设口令;

sqlplus无法登录

我遇到的问题是本地装了多个版本的Oracle,在系统环境变量里默认指定的11g的sqlplus,而我要连的是12c

所以只要切换到12c目录下的sqlplus即可;

或者把环境变量中的sqlplus指向12c的目录;

启动sqlplus时报错:SP2-0667: Message file sp1.msb not found

该问题还连带报错:

You may need to set ORACLE_HOME to your Oracle software directory

处理办法是,新增环境变量:

export ORACLE_HOME=/app/oracle/product/12.2.0.1/dbhome_1

无法给表新增内容:ORA-01950: 表空间’USERS’中无权限

处理办法:先切换到sysdba,再增加该用户表空间’USERS’中的配额

SQL> conn / as sysdba
已连接。
SQL> alter user c##malu quota unlimited on "USERS";
用户已更改。

oracle下载地址

https://www.oracle.com/technetwork/cn/database/enterprise-edition/downloads/index.html