数据库数据迁移后,因序列报错
从老数据库复制出所有序列的create语句
代码大意为:
查询出所有序列的序列名、最小最大值、开始位置自增量等拼接成一条create语句
select 'create sequence '||sequence_name||
' minvalue '||min_value||
' maxvalue '||max_value||
' start with '||last_number||
' increment by '||increment_by||
(case when cycle_flag='N' then '' else ' cycle ' end) ||
(case when order_flag='N' then '' else ' order ' end) ||
(case when cache_size=0 then ' nocache' else ' cache '||cache_size
end) ||';'
from USER_sequences;
将老数据库序列查询出拼接成drop语句
select 'drop sequence '||sequence_name||' ;' from
user_sequences;
错误SQL导致锁表
-
查看被锁表信息
select sess.sid,sess.serial#, lo.oracle_username,lo.os_user_name, ao.object_name,lo.locked_mode from v$locked_object lo,dba_objects ao, v$session sess where ao.object_id=lo.object_id and lo.session_id=sess.sid;
-
查看引起的SQL
SELECT A.USERNAME, A.MACHINE, A.PROGRAM, A.SID, A.SERIAL#, A.STATUS, C.PIECE, C.SQL_TEXT FROM V$SESSION A, V$SQLTEXT C WHERE A.SID IN (SELECT DISTINCT T2.SID FROM V$LOCKED_OBJECT T1, V$SESSION T2 WHERE T1.SESSION_ID = T2.SID) AND A.SQL_ADDRESS = C.ADDRESS(+) ORDER BY C.PIECE;
-
杀掉进程
alter system kill session '932,33021';--分别为SID和SERIAL#号
只能作为sysdba登录无法normal登录
用户角色被锁导致,或设置密码出错
- oracle的dba组是操作系统相关的,ORA_DBA是windows下的dba组。因为使用了操作系统(OS)认证的原因,不要用户名和密码都能以sysdba身份登陆。
- 通过重新设置用户的密码,可以解决以上问题。
注意:
在SQLPLUS操作中sql语句必须加 分号
错误示范:create user username identified by values 'password'
虽然没有报错,但是这个语法格式是无效的。
正确代码:create user username identified by password
解决方法:
- 打开cmd,输入
sqlplus
进入oracle控制台 - 输入用户名
sys/as sysdba
和密码管理员用户登录 - 输入
select username from dba_users;
查询用户列表确定有该用户 - 输入
alter user 用户名 identified by 新密码;
修改密码以激活
Tomcat部署项目后访问无法进入问题
在部署Springboot项目到Tomcat后,application.yml中配置的端口为9528,项目运行并未报错但是无法访问
这是由于 yml配置的端口为程序运行端口,实际访问端口为 tomcat --> conf --> server.xml 中的tomcat运行端口
解决
ip + tomcat端口 + 项目访问路径
Tomcat运行控制台乱码
解决
tomcat的日志配置文件的编码需要修改,找到tomcat安装目录,找到conf下的logging.properties文件,将其中的encoding = UTF-8的部分全部修改为encoding = GBK