在使用oracle过程中,总会遇到用户锁定,密码失效等问题,对于这些问题,总结了以下经验:

一、用户被锁定原因及解锁

对于用户被锁定,有以下几种原因:

1、密码过期:

Oracle数据库的用户密码有效期默认180天,当超过180天后密码过期,这种情形会造成Oracle数据库用户频繁被锁定,用户需手动更改密码后解除锁定。

解决方法:

方法一:SQL语句修改

1.查看用户的proifle是哪个,一般是default

SELECT username,PROFILE FROM dba_users;

2.查看对应的概要文件(如default)的密码有效期设置

SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';

3.将概要文件(如default)的密码有效期由默认的180天修改成“无限制”(修改之后不需要重启动数据库,会立即生效)

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

4.对已经锁定和过期的账号进行解锁

(1)alter user 用户名 identified by 原来的密码 account unlock; ----不用换新密码,用户名和密码也不用加引号,这个命令会解锁账号,同时取消密码过期。
(2)alter user 用户名 account unlock; ----这个只会解锁账号,而不会取消密码过期,所以建议使用上面的口令

方法二:PL/SQL进行修改

1、打开PL/SQL,通过sys账户(系统管理员)登录

2、在左侧对象栏中查找Users文件夹下要修改的用户,右击用户,点击编辑按钮进入编辑界面

3、下图为用户详细,修改用户密码,并取消勾选口令期限和账户被锁定两项。(若口令期限勾选为灰项,不可更改时,使用方法一中第二步,根据下图显示的概要文件名称,修改概要文件的密码有效期为“无限制”)

4、修改后点击“保存”按钮,进行保存。

2、尝试多次失败登陆造成的被锁:

一般数据库默认是10次尝试登录失败后锁住用户。

当用户人为手动登录失败锁定后只需解锁用户即可。

除人为手动登录失败外,有可能有第三方应用或接口调用数据库,从而用错误的账户密码频繁尝试登录系统,这种情形可能会造成Oracle数据库用户频繁被锁定,用户需查找出尝试登录的第三方应用或接口,修改为正确的登录账户及密码,之后解锁用户。

用户可以修改连接失败次数,但是此方法只能控制人工输入失误次数:

alter profile default limit FAILED_LOGIN_ATTEMPTS 30; ----修改为30次尝试失败后锁住用户。

解锁用户:

(1)alter user 用户名 identified by 原来的密码 account unlock; ----不用换新密码,用户名和密码也不用加引号,这个命令会解锁账号,同时取消密码过期。
(2)alter user 用户名 account unlock; ----这个只会解锁账号,而不会取消密码过期,所以建议使用上面的口令

二、SQLPlus登录及连接

平时用习惯了PL/SQL,但是有时只能通过SQLPlus进行数据库操作时,使用时总有些不顺手。以下是几种SQLPlus的连接方式:

1、打开SQLPlus,提示输入用户名,回车键后提示输入密码,普通用户直接输入密码,sys用户输入:密码 as sysdba

2、打开SQLPlus,输入conn sys/密码 as sysdba;//以DBA的身份登录;输入conn 普通用户/密码;//以normal用户的身份登录

3、win+r键打开运行,输入"cmd"打开"命令提示符"(也可从所有程序>>附件中打开)。输入

进行连接。(其中dgyzt为用户,dg为密码,orcl为数据库)

注意:

对于SQLPlus,在输入SQL命令后,记得使用commit提交命令。

当切换用户时,可使用disc/disconn/disconnect断开该用户的连接。

当结束使用SQLPlus时,也可使用exit或quit退出。

三、Oracle连接数的查询与修改

查询数据库当前进程的连接数:

select count(*) from v$process; 

查询数据库当前会话的连接数:

select count(*) from v$session;

查询数据库的并发连接数:

select count(*) from v$session where status='ACTIVE';

查询数据库建立的会话情况:

select sid,serial#,username,program,machine,status from v$session;

查询数据库允许的最大连接数:

select value from v$parameter where name = 'processes';
或者:
show parameter processes;

修改数据库允许的最大连接数:

alter system set processes = 300 scope = spfile;(需要重启数据库才能实现连接数的修改)

重启数据库:

shutdown immediate;
startup;

四、部分Oracle常用命令(部分常用命令参考https://www.cnblogs.com/justdoitba/p/8367271.html)

show和set命令是两条用于维护SQL*Plus系统变量的命令

show all --查看所有68个系统变量值 

show user --显示当前连接用户 

show error   --显示错误 

set heading off --禁止输出列标题,默认值为ON 

set feedback off --禁止显示最后一行的计数反馈信息,默认值为"对6个或更多的记录,回送ON" 

set timing on --默认为OFF,设置查询耗时,可用来估计SQL语句的执行时间,测试性能 

set sqlprompt "SQL> " --设置默认提示符,默认值就是"SQL> " 

set linesize 1000 --设置屏幕显示行宽,默认100 

set pagesize 20 --设置每页显示行目数,默认14 

set autocommit ON --设置是否自动提交,默认为OFF 

set pause on --默认为OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页 

set arraysize 1 --默认为15 

set long 1000 --默认为80 

说明: 
long值默认为80,设置1000是为了显示更多的内容,因为很多数据字典视图中用到了long数据类型,如:

SQL> desc user_views 
列名 可空值否 类型 
------------------------------- -------- ---- 
VIEW_NAME NOT NULL VARCHAR2(30) 
TEXT_LENGTH NUMBER 
TEXT LONG 
SQL> define a = '''20000101 12:01:01''' --定义局部变量,如果想用一个类似在各种显示中所包括的回车那样的常量, 
--可以用define命令来设置 
SQL> select &a from dual; 
原值 1: select &a from dual 
新值 1: select '20000101 12:01:01' from dual 
'2000010112:01:01 
----------------- 
20000101 12:01:01

问题提出: 
1、用户需要对数据库用户下的每一张表都执行一个相同的SQL操作,这时,一遍、一遍的键入SQL语句是很麻烦的 
实现方法:

set heading off --禁止输出列标题
set feedback off --禁止显示最后一行的计数反馈信息

列出当前用户下所有同义词的定义,可用来测试同义词的真实存在性

select 'desc '||tname from tab where tabtype='SYNONYM'; 

查询当前用户下所有表的记录数

select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE'; 

把所有符合条件的表的select权限授予为public

select 'grant select on '||table_name||' to public;' from user_tables where 《条件》; 

删除用户下各种对象

select 'drop '||tabtype||' '||tname from tab; 

删除符合条件用户

select 'drop user '||username||' cascade;' from all_users where user_id>25; 

快速编译所有视图 
----当在把数据库倒入到新的服务器上后(数据库重建),需要将视图重新编译一遍, 
----因为该表空间视图到其它表空间的表的连接会出现问题,可以利用PL/SQL的语言特性,快速编译。

SQL> SPOOL ON.SQL 
SQL> SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB; 
SQL> SPOOL OFF 
然后执行ON.SQL即可。 
SQL> @ON.SQL 
当然,授权和创建同义词也可以快速进行,如: 
SQL> SELECT 'GRANT SELECT ON '||TNAME||' TO 用户名;' FROM TAB; 
SQL> SELECT 'CREATE SYNONYM '||TNAME||' FOR 用户名.'||TNAME||';' FROM TAB; 
命令列表: 
假设当前执行命令为:select * from tab; 
(a)ppend     添加文本到缓冲区当前行尾    a order by tname 结果:select * from tab order by tname; 
                                      (注:a后面跟2个空格) 
(c)hange/old/new 在当前行用新的文本替换旧的文本 c/*/tname     结果:select tname from tab; 
(c)hange/text  从当前行删除文本        c/tab       结果:select tname from ; 
del       删除当前行 
del n      删除第n行 
(i)nput 文本   在当前行之后添加一行 
(l)ist      显示缓冲区中所有行 
(l)ist n     显示缓冲区中第 n 行 
(l)ist m n    显示缓冲区中 m 到 n 行 
run       执行当前缓冲区的命令 
/        执行当前缓冲区的命令 
r        执行当前缓冲区的命令 
@文件名     运行调入内存的sql文件,如: 
SQL> edit s<回车> 
如果当前目录下不存在s.sql文件,则系统自动生成s.sql文件, 
在其中输入"select * from tab;",存盘退出。 
SQL> @s<回车> 
系统会自动查询当前用户下的所有表、视图、同义词。

@@文件名     在.sql文件中调用令一个.sql文件时使用
save 文件名   将缓冲区的命令以文件方式存盘,缺省文件扩展名为.sql
get 文件名    调入存盘的sql文件
start 文件名   运行调入内存的sql文件
spool 文件名   把这之后的各种操作及执行结果"假脱机"即存盘到磁盘文件上,默认文件扩展名为.lst
spool      显示当前的"假脱机"状态
spool off    停止输出

例: 
SQL> spool a 
SQL> spool 
正假脱机到 A.LST 
SQL> spool off 
SQL> spool 
当前无假脱机

exit       退出SQL*PLUS
desc 表名    显示表的结构
show user    显示当前连接用户
show error    显示错误
show all     显示所有68个系统变量值
edit       打开默认编辑器,Windows系统中默认是notepad.exe,把缓冲区中最后一条SQL语句调入afiedt.buf文件中进行编辑
edit 文件名   把当前目录中指定的.sql文件调入编辑器进行编辑
clear screen   清空当前屏幕显示

说明:start、edit、spool用法

1.start和@
说明: 运行sql脚本

sql>@ d:\a.sql或是sql>start d:\a.sql

2.edit
说明: 该命令可以编辑指定的sql脚本

sql>edit d:\a.sql,这样会把d:\a.sql 这个文件打开

3.spool
说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。

sql>spool d:\b.sql并输入sql>spool off

举例:

sql>spool d:\b.sql;
sql>select * from emp;
sql>spool off;

二.Oracle sqlplus语句编辑命令

首先我们输入这样一条指令: 
SELECT emp_id, emp_name FROM Employees 
input 命令可以接着上一条指令的后面添加语句,比如在上述语句运行后输入: 
input WHERE emp_age > 30 
便可得到如下指令: 
SELECT emp_id, emp_name 
FROM Employees 
WHERE emp_age > 30 
ln 命令用于指定对以输入的第n行语句进行操作,比如在上述语句运行后输入: 
l1则当前选中的语句行即为 
SELECT emp_id, emp_name 
(语句前有"*"表示) 
a 命令用于直接在当前行的末尾加上字符,比如在上述语句运行后输入: 
a , emp_dept 
则执行的指令变为: 
SELECT emp_id, emp_name, emp_dept 
FROM Employees 
WHERE emp_age > 30 
c 命令用于修改当前语句中的字符,比如在上述语句运行后输入: 
c /emp_name/emp_age/则执行的指令变为: 
SELECT emp_id, emp_age, emp_dept 
FROM Employees 
WHERE emp_age > 30 
del n 命令用于删除第n行指令,比如在上述语句运行后输入: 
DEL 3 
则执行的指令变为: 
SELECT emp_id, emp_age, emp_dept 
FROM Employees

对于SQL命令,有些特殊的符号涉及到SQL语句的执行,无法输入,就要注意

插入特殊字符:

方法1:设置define
SQL> set define off
SQL> select * from dba_tables where table_name ='&123';
no rows selected
SQL> set define on
SQL> select * from dba_tables where table_name ='&123';
Enter value for 123: 方法2:
select chr(ascii('&')) from dual;

Oracle使用笔记(三)的更多相关文章

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. Oracle学习笔记三

    一.创建表空间 表空间是ORACLE数据库的逻辑单元.数据库--表空间 一个表空间可以与多个数据文件(物理结构)关联一个数据库下可以建立多个表空间,一个表空间可以建立多个用户个用户下可以建立多个表. ...

  3. oracle 学习笔记(三)

    1. SQL(基础查询) 1.1. 基本查询语句 1.1.1. FROM子句 SQL查询语句的语法如下:   SELECT <*, column [alias], -> FROM tabl ...

  4. Oracle学习笔记(三)

    五.操作表 1.表分为行和列 约定:每行数据唯一性,每列数据同类性,每列列名唯一性. 2.数据类型 字符型 -- 固定长度的字符类型 字符类型:CHAR(n)(MAX n=2000).NCHAR(MA ...

  5. ORACLE存储过程笔记1

    ORACLE存储过程笔记1 一.基本语法(以及与informix的比较)   create [or replace] procedure procedure_name (varible {IN|OUT ...

  6. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  7. Oracle学习笔记—数据字典和常用命令(转载)

    转载自: oracle常用数据字典和SQL语句总结 Oracle常用命令大全(很有用,做笔记) 一.Oracle数据字典 数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一 ...

  8. 吴裕雄--天生自然 oracle学习笔记:oracle理论学习详解及各种简单操作例子

    1. 数据库的发展过程 层次模型 -->网状模型 -->关系模型 -->对象关系模型 2. 关于数据库的概念 DB:数据库(存储信息的仓库) DBMS:数据库管理系统(用于管理数据库 ...

  9. 《CMake实践》笔记三:构建静态库(.a) 与 动态库(.so) 及 如何使用外部共享库和头文件

    <CMake实践>笔记一:PROJECT/MESSAGE/ADD_EXECUTABLE <CMake实践>笔记二:INSTALL/CMAKE_INSTALL_PREFIX &l ...

  10. Mastering Web Application Development with AngularJS 读书笔记(三)

    第一章笔记 (三) 一.Factories factory 方法是创建对象的另一种方式,与service相比更灵活,因为可以注册可任何任意对象创造功能.例如: myMod.factory('notif ...

随机推荐

  1. Windows下Python安装numpy+mkl,Scipy和statsmodels

    最近做时间序列分析需要用到Python中的statsmodels,但是安装过程中遇到很头疼的问题,Google.Stackover各种都没有找到合适的解决办法,而且貌似还有很多同学也在吐槽Window ...

  2. (转) Ensemble Methods for Deep Learning Neural Networks to Reduce Variance and Improve Performance

    Ensemble Methods for Deep Learning Neural Networks to Reduce Variance and Improve Performance 2018-1 ...

  3. 安装xampp出错,windows找不到-n ?

    安装xampp出错,windows找不到-n ? https://www.zhihu.com/question/47248695/answer/105042516 尝试解决步骤 1.安装Microso ...

  4. Linux之文件目录

    一.Linux的目录结构 1.概览 2.树状目录结构 说明: /root:该目录为系统管理员用户主目录 /bin:即Binary,存放着系统必备执行命令 /boot:这里存放的是启动Linux时使用的 ...

  5. RNN流程

    1.记号 2.前向计算,第二张图是第一张图的公式的简化.其中a称之为隐状态 3.计算代价函数

  6. ranch 源码分析(二)

    接上ranch 源码分析(一) 上次讲到了ranch.erl的start_listener函数,下面我们详细分析下这个函数 -module(ranch). %...... 省略若干行 -spec st ...

  7. 『PyTorch』第五弹_深入理解Tensor对象_中下:数学计算以及numpy比较_&_广播原理简介

    一.简单数学操作 1.逐元素操作 t.clamp(a,min=2,max=4)近似于tf.clip_by_value(A, min, max),修剪值域. a = t.arange(0,6).view ...

  8. 『TensorFlow』函数查询列表_神经网络相关

    tf.Graph 操作 描述 class tf.Graph tensorflow中的计算以图数据流的方式表示一个图包含一系列表示计算单元的操作对象以及在图中流动的数据单元以tensor对象表现 tf. ...

  9. sublim 配置 用户默认绑定的格式化文本快捷键

      //在绑定用户绑定配置中 加入 激活每个字母提示! "auto_complete": true,"auto_match_enabled": true, &q ...

  10. PI上导入RFC

    ERP中创建函数:ZERP_GETSPAREPART 传入参数:SOLD_TO_ID SHIP_TO_ID 表:INTABLE OUTABLE 登陆PI, 后面正常做data type DT_PART ...