1、版本兼容问题
12c以上版本导入报用户锁定
在12c的数据库服务器上面的sqlnet.ora文件中添加一行参数,再从新导入,
问题解决。
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 10
【故障处理】ORA-28040: No matching authentication protocol
11g
SQLNET.ALLOWED_LOGON_VERSION=8注释掉
11g连接12c
sqlnet.ora
添加
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
不行的话重置密码
12c改以下参数为failes会登录不上
ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON=TRUE SCOPE=BOTH;
2、重新编译procedure
第一种 如果你使用 PL/SQL Developer工具
左侧工具栏中选择“存储过程”-》选择已经失效的procedure-》右键-》选择重新编译 即可完成
第二种 命令行版
1.查找到无效对象
select 'Alter '||object_type||' '||object_name||' compile;' from user_objects where status = 'INVALID';
2.重新编译存储过程 pro_backup_call 执行下面脚本即可,用指定用户
alter procedure YF_HLZX.P_AUDIT_PFZY compile;
3.连接断开
[20-6-2 8:04:46:743 CST] 00000040 ConnectionEve A J2CA0056I: 连接管理器从资源 dbtrust 的资源适配器接收到致命连接错误。异常:java.sql.SQLException: ORA-01012: 没有登录
sys@tms> show parameter resource
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
resource_limit boolean TRUE
select * from dba_profiles;
DEFAULT IDLE_TIME KERNEL 120
这样的话超时120分钟会自动断开
cat sqlnet.ora
SQLNET.INBOUND_CONNECT_TIMEOUT=0
SQLNET.EXPIRE_TIME=10(此参数用来应用与数据库不同网段,防止60分钟防火墙自动杀空闲连接:每十分钟发一次探查指令)
4.监听不正常
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
show parameter listener
看看是不是默认监听
如果不是置为空
alter system set local_listener='';
注册数据库
alter system register;
5.19c更改pdb服务名
BEGIN
DBMS_SERVICE.CREATE_SERVICE(
SERVICE_NAME =>'TKWIND',
NETWORK_NAME =>'TKWIND');
END;
/
alter pluggable database pdborcl close immediate;
alter pluggable database all open services=All;
配置完成,启动之后,lsnrctl status 出来的service是NETWORK_NAME
6.Oracle19c有pdb的版本在连接时和11g版本有一些区别:
例子:
url=jdbc:oracle:thin:@localhost:1521/pdborcl
url=jdbc:oracle:thin:@localhost:1521:pdborcl
7.安装包 libelf-0.8.5
安装rac执行?u01/11.2.0/grid/root.sh 脚本的时候报错
Creating /etc/oratab file...
Entries will be added to the /etc/oratab file as needed by
Database Configuration Assistant when a database is created
Finished running generic part of root script.
Now product-specific root actions will be performed.
Using configuration parameter file: /u01/11.2.0/grid/crs/install/crsconfig_params
Creating trace directory
User ignored Prerequisites during installation
Installing Trace File Analyzer
Failed to create keys in the OLR, rc = 127, Message:
??/u01/11.2.0/grid/bin/clscfg.bin: error while loading shared libraries: libcap.so.1: cannot open shared object file: No such file or directory?
Failed to create keys in the OLR at /u01/11.2.0/grid/crs/install/crsconfig_lib.pm line 7660.
/u01/11.2.0/grid/perl/bin/perl -I/u01/11.2.0/grid/perl/lib -I/u01/11.2.0/grid/crs/install /u01/11.2.0/grid/crs/install/rootcrs.pl execution failed
说是找不到??libcap.so.1 这个包
解决方法:
[root@node1 lib64]# cd /lib64?
[root@node1 lib64]# ls -lrt libcap?
libcap-ng.so.0 ? ? ?libcap-ng.so.0.0.0 ?libcap.so.2 ? ? ? ? libcap.so.2.16?
? ? ??
[root@node1 lib64]# ls -lrt libcap.so.2?
lrwxrwxrwx. 1 root root 14 12月 23 21:21 libcap.so.2 -> libcap.so.2.16?
[root@web1 node1]#?ln -s libcap.so.2.16 libcap.so.1?
[root@node1 lib64]# ls -lrt libcap*
-rwxr-xr-x. 1 root root 18672 Jun 25 ?2011 libcap-ng.so.0.0.0
-rwxr-xr-x. 1 root root 19016 Dec ?8 ?2011 libcap.so.2.16
lrwxrwxrwx. 1 root root ? ?14 Oct ?9 11:14 libcap.so.2 -> libcap.so.2.16
lrwxrwxrwx. 1 root root ? ?18 Oct ?9 11:14 libcap-ng.so.0 -> libcap-ng.so.0.0.0
lrwxrwxrwx ?1 root root ? ?14 Nov 24 13:17 libcap.so.1 -> libcap.so.2.16
8.11g版本安装包用途
1、p13390677_112040_MSWIN-x86-64_1of7.zip
2、p13390677_112040_MSWIN-x86-64_2of7.zip
3、p13390677_112040_MSWIN-x86-64_3of7.zip
4、p13390677_112040_MSWIN-x86-64_4of7.zip
5、p13390677_112040_MSWIN-x86-64_5of7.zip
6、p13390677_112040_MSWIN-x86-64_6of7.zip
7、p13390677_112040_MSWIN-x86-64_7of7.zip
其中1、2表示Database, 用于安装、升级数据库;
3为grid infrastructure,用来升级RAC。如果要使用Clusterware、ASM、ACFS、ASM动态卷等功能时都需要先安装此包。
4表示客户端(Client);
5为Gateway software,gateways是指透明网关,如果要从oracle访问其它数据库系统(sqlserver,sybase…)则需要安装Gateway;
6表示 examples, 是示例文件安装包;
7为deinstall,是Oracle自带的界面化卸载工具;
9.报错
Errors in file /d12/app/oracle/diag/rdbms/test/test/trace/test_j001_4981.trc:
ORA-12012: error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_21"
ORA-20001: Statistics Advisor: Invalid task name for the current user
ORA-06512: at "SYS.DBMS_STATS", line 47207
ORA-06512: at "SYS.DBMS_STATS_ADVISOR", line 882
ORA-06512: at "SYS.DBMS_STATS_INTERNAL", line 20059
ORA-06512: at "SYS.DBMS_STATS_INTERNAL", line 22201
ORA-06512: at "SYS.DBMS_STATS", line 47197
大概是每隔10分钟报一次
MOS对应的文章:ORA-12012 Error on auto execute of job "SYS"."ORA$AT_OS_OPT_SY_<NN> in 12.2 Database (Doc ID 2127675.1)
可能是在建库的时候没有执行dbms_stats.init_package()
$ sqlplus / as sysdba
SQL> EXEC dbms_stats.init_package();
PL/SQL procedure successfully completed.
column name format A35
set linesize 120
select name, ctime, how_created from sys.wri$_adv_tasks where owner_name = 'SYS' and name in ('AUTO_STATS_ADVISOR_TASK','INDIVIDUAL_STATS_ADVISOR_TASK');
NAME CTIME HOW_CREATED
----------------------------------- --------- ------------------------------
AUTO_STATS_ADVISOR_TASK 17-JUN-17 CMD
INDIVIDUAL_STATS_ADVISOR_TASK 17-JUN-17 CMD
10.报错
Unable to obtain current patch information due to error: 20003, ORA-20003: Configuring job Load_opatch_inventory_1on node and on instancefailed
ORA-06512: at "SYS.DBMS_QOPATCH", line 777
ORA-06512: at "SYS.DBMS_QOPATCH", line 479
ORA-06512: at "SYS.DBMS_QOPATCH", line 455
ORA-06512: at "SYS.DBMS_QOPATCH", line 574
ORA-06512: at "SYS.DBMS_QOPATCH", line 2247
解决办法
https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=163919018891010&parent=EXTERNAL_SEARCH&sourceId=PROBLEM&id=2364768.1&_afrWindowMode=0&_adf.ctrl-state=ytgxd12h2_221
打补丁 23333567 或者忽略
11.redhat7.*安装oracl11g报错
Error in invoking target 'agent nmhs' of makefile '/home/oracle/app/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk'
处理:
[oracle@centos ~]$ cd $ORACLE_HOME/sysman/lib
[oracle@centos lib]$ cp ins_emagent.mk ins_emagent.mk.bak
[oracle@centos lib]$ vim ins_emagent.mk
/NMECTL
SQL
#===========================# emdctl#===========================
$(SYSMANBIN)emdctl:
$(MK_EMAGENT_NMECTL) -lnnz11 在此处修改添加
官方让跳过,打19692824补丁
12.12c dg库 备库hang住,报
>>> WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! pid=92
打补丁28423598
报错:
13.在主库添加数据文件时,备库alert所有数据文件报错,官方文档2322290.1,
Errors in file /home/oracle/ora12c/diag/rdbms/tkhdstb/tkhddb/trace/tkhddb_m000_26149.trc:
ORA-01110: data file 3: '/oradata/tkhddb/sysaux01.dbf'
打补丁:
24844841 PHSB:CDB M000 REPORTED ORA-1110 ON ADG WHEN A DATAFILE IS ADDED ON PRIMARY
14.重启库后开启从库standby后从库状态不正常
startup nomount
alter database mount standby database ;
alter database open read only ;
SQL> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
SQL> Select controlfile_type,open_mode from v$database;
CONTROL OPEN_MODE
------- --------------------
STANDBY READ ONLY WITH APPLY
15.备库临时表空间(查询dba_temp_files)
ERROR at line 1:
ORA-01187: cannot read from file because it failed verification tests
ORA-01110: data file 201: '/oradata/tkhddb/temp01.dbf'
查询原temp大小及数据文件
select name,bytes/1024/1024,status from v$tempfile;
删除临时文件:
alter database tempfile '/oradata/tkhddb/temp01.dbf' drop;
Database altered.
重新添加原大小的数据文件:
alter tablespace temp add tempfile '/oradata/tkhddb/temp01.dbf' size 32m autoextend on next 200m;
Tablespace altered.
SQL> select name,bytes/1024/1024,status from v$tempfile;
NAME BYTES/1024/1024 STATUS
------------------------------ --------------- -------
/oradata/seven/temp01.dbf 30 ONLINE
由于场景是DG环境,所以temp的name和bytes的值最好保持主备库一致
16.>>> WAITED TOO LONG FOR A ROW CACHE ENQUEUE LOCK! pid=87
打补丁28423598
17.报错:
ORA-39083: Object type REF_CONSTRAINT failed to create with error:
ORA-02298: cannot validate (WORKBRAIN.FK_RCPMSG_MSG_ID) - parent keys not found
a) 加参数CONTENT=METADATA_ONLY 先导入元数据,执行如下SQL找到需要禁止的外键关联
select 'ALTER TABLE '||TABLE_NAME||' DISABLE CONSTRAINT '||constraint_name||';'
from user_constraints WHERE CONSTRAINT_TYPE='R';
b) 执行(a)的结果SQL
c) 再重新取消CONTENT=METADATA_ONLY导入后,执行如下SQL找到需要恢复的外键关联
select 'ALTER TABLE '||TABLE_NAME||' ENABLE NOVALIDATE CONSTRAINT '||constraint_name||';'
from user_constraints WHERE CONSTRAINT_TYPE='R';
生产备份失败
sql statement: alter system archive log current
Starting backup at 2019-11-01 18:35:21
current log archived
released channel: c1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 11/01/2019 18:35:22
RMAN-06059: expected archived log not found, loss of archived log compromises recoverability
ORA-19625: error identifying file /arclog/1_3163_878380255.arc
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
连接到catalog库执行:
crosscheck archivelog all;
crosscheck backup;
RMAN-06207: WARNING: 2 objects could not be deleted for DISK channel(s) due
RMAN-06208: to mismatched status. Use CROSSCHECK command to fix status
RMAN-06210: List of Mismatched objects
RMAN-06211: ==========================
RMAN-06212: Object Type Filename/Handle
RMAN-06213: --------------- ---------------------------------------------------
RMAN-06214: Datafile Copy /home/oracle/ora11g/oradata/tklchat/users01.dbf
RMAN-06214: Backup Piece /home/oracle/ora11g/fast_recovery_area/TKLCHAT/autobackup/2019_11_04/o1_mf_n_1023466073_gvzq2ty4_.bkp
Session371和session310发起的两个事务分别包含上述标红的sql语句,相互等待对方资源的释放,造成死锁;
首先注意到的是Deadlock graph中的资源占有情况,可以看到两个session都hold了一个SX类型的锁,同时在等待SSX类型的锁,而且引发的是一个删除语句,并且这个表是系统的一个关键表,大部分的表的外键都引用自此表的主键。因此猜测是碰到了外键引发的死锁。
建议1:
应用程序开发人员检查表FORECAST_AIRPORT和表FORECAST_KEYPOINT之间的关系(如父表FORECAST_KEYPOINT、子表FORECAST_AIRPORT 具体参照哪一列),有哪些约束、索引等;
如果子表上的外键约束列没有建立索引,删除父表记录时不得不对子表加表级锁,防止其他删除操作对该表的操作,要解决这种死锁问题则需要在子表的外键约束列上建立相应的索引;
这样,当对子表的外键列添加索引后,死锁可以被消除,因为这时删除父表记录不需要对子表加表级锁。 (后面有模拟实验可以验证)
创建索引:create index index_name on schema.table_name(column_name);
create index index_name on pdmcompard.FORECAST_AIRPORT (FORECAST_ID);
create index index_name on datamgr.FORECAST_AIRPORT (FORECAST_ID);
建议2:也有可能是循环删除的问题(如果第1个建议没有成功,可以试试此方法)
如果可以,改成delete from t_user where ID in (:1,:2...)《调整业务逻辑,修改应用程序,合理分配资源》
查询主外键:
