
Oracle
文章平均质量分 73
大头愚愚
愿世界和平
展开
-
使用coe_load_sql_profile脚本通过sql_profile绑定执行计划
##使用情景:在部分spm不能使用的情况下,如sql中含有远程表,spm绑定不生效。使用sql_profile绑定内存中已有的正确执行计划。##使用方式:1、上传脚本 coe_load_sql_profile.sqlhttps://download.youkuaiyun.com/download/royzhang7/213878862、登录数据库,要用有DBA权限的非sys用户(system或其他DBA权限用户)3、执行@coe_load_sql_profile.sql4、输入参数(这里如果原创 2021-08-26 09:33:47 · 923 阅读 · 0 评论 -
Oracle授权普通用户 kill session权限
--Oracle中开发环境有时会有锁产生,开发人员需要kill session权限--但Oracle中对应系统权限是alter system, 权限太大,不合适。--故可以通过创建存储过程给开发人员调用使用--使用有dba权限用户创建,或者使用sys用户创建,通过加入条件判断,限制用户只能处理自己的进程CREATE OR REPLACE PROCEDURE p_kill_session ( v_sid number, v_serial number) AS v_sql VARCH原创 2020-11-13 15:34:56 · 2932 阅读 · 0 评论 -
Oracle错误处理打印错误行数 dbms_utility.format_error_backtrace的使用
##创建日志表create table t_error_log( pro_name varchar2(300), error_desc varchar2(2000), exec_date date);##创建测试表create table test_error_stack(id number primary key);##插入测试数据insert into test_error_stack values (1);commit;##创建存储过程...原创 2020-10-14 15:24:51 · 2616 阅读 · 0 评论 -
手动通过sql语句处理lob字段值(更新、插入)
在数据库运维中,偶尔会碰到需要手动修改lob字段的情况。对于大对象的处理,并不能直接用update或者insert普通dml操作。通过查找并测试,确认下面方法可行,并且不会产生乱码。(仅供参考)######sql处理lob字段数据#######--数据库服务器上创建目录,或者使用现有目录create directory DUMP_DIR as '/data/dump_dir'--将待处理文件如lob.txt上传到directory目录--测试表create table clo原创 2020-06-17 14:50:55 · 1356 阅读 · 0 评论 -
oracle 11g修改数据库sid和dbname --linux
参考:https://blog.youkuaiyun.com/iteye_14608/article/details/82162620--操作环境redhat 7.5oracle 11.2.0.4--数据库名称原sid和dbname: testdbutf8新sid和dbname: testdb2#######步骤一:修改数据库sid#######1、关库sqlplus / as sysdbashutdown immediate;exit2、修改/etc/oratab文件,替换所有si原创 2020-05-27 10:59:50 · 706 阅读 · 0 评论 -
使用sql_tuning_advisor对问题sql进行诊断
--获得sql_idSELECT * FROM V$SQL WHERE UPPER(SQL_TEXT) LIKE '%WITH%'AND UPPER(SQL_TEXT) LIKE '%TCNT%'--创建执行优化任务DECLAREmy_task_name VARCHAR2(30);BEGIN my_task_name := DBMS_SQLTUNE.CREATE_TUNING...原创 2020-04-02 10:40:10 · 246 阅读 · 0 评论 -
oracle生僻字处理:生僻字输入、显示乱码
--oracle中有时会遇到中文生僻字显示输入乱码问题#确认数据库字符集是ZHS16GBKSQL> SELECT * FROM NLS_DATABASE_PARAMETERS;PARAMETER VALUE------------------------------ ----------------------------------------------...原创 2020-03-27 14:43:49 · 8914 阅读 · 1 评论 -
ORA-39005 inconsistent arguments报错处理
--在某个11g库执行导出操作时,报错ORA-39055Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - ProductionWith the Partitioning, Real Application Clusters, Oracle Label Security, OLAP,Data M...原创 2019-12-19 15:06:22 · 1938 阅读 · 0 评论 -
awr数据不自动清理导致sysaux表空间持续增长
--11.2.0.4中有bug 14084247 会导致awr信息不自动清理,导致sysaux表空间持续增长现象:--sysaux表空间使用过高,其中大部分item属于 SM/AWRSELECT OCCUPANT_NAME "Item", SPACE_USAGE_KBYTES / 1048576 "Space Used (GB)", SCHEMA_NAME ...原创 2019-10-21 16:13:43 · 750 阅读 · 0 评论 -
oracle字符类型时间转换 ORA-01843 无效的月份
--oracle中在转换 字符类型的时间数据有时会报错 ORA-01843: 无效的月份如:SQL> select to_date('07-SEP-2017','dd-mon-yy') from dual; select to_date('07-SEP-2017','dd-mon-yy') from dual ORA-01843: 无效的月份 SQL>原创 2017-11-28 10:03:41 · 12063 阅读 · 0 评论 -
oracle 11g 添加字段default值对历史数据影响
创建测试表SQL> create table test_default 2 (id number, 3 comm varchar2(10)); Table created 插入测试数据SQL> SQL> insert into test_default values (1,'a'); 1 row insertedSQL> insert i原创 2017-08-30 14:44:45 · 2635 阅读 · 0 评论 -
resource角色隐式授权unlimited tablespace权限测试
由于有需要授权用户resource权限,而这会给用户隐式授予unlimited tablespace 权限,无法控制其表空间使用,所以测试下先授予resource权限,再回收 unlimited tablespace权限的方式 --创建测试表空间TEST和测试用户testSQL> create tablespace TEST datafile '/data/oradata/TE原创 2017-06-13 16:39:51 · 829 阅读 · 0 评论 -
Lob字段数据删除,对应空间变化测试
由于遇到某个系统需要新添加LOB字段,并且会有大量的插入删除操作,所以需要确认下lob字段在大量数据操作之后总的体积大小变化是怎样的。猜想lob字段的大小并不会自动收缩,是持续增长的,需要手动干预收缩空间--测试1 测试disable storage in row下的lob字段--create tablecreate table T_LOB_TEST( id原创 2017-06-09 18:07:53 · 2426 阅读 · 0 评论 -
使用udev方式挂载的asm查看对应的物理盘scsi_id
--RAC环境asm查看对应的物理盘,使用udev方式挂载的# cat /etc/udev/rules.d/99-oracle-asmdevices.rulesKERNEL=="sd*", BUS=="scsi", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=/dev/$name", RESUL原创 2017-06-22 14:12:53 · 2683 阅读 · 0 评论 -
字段中有null值查询不走索引的问题解决
生产环境发现有一条sql 效率很差,发现是由于查询中有null值,导致了执行计划不走索引。搜索了解决办法,主要是创建该字段和其它常量字段的联合索引或者通过函数索引排除空值的情况。下面是测试过程--测试构造测试表create table test_null(id number(10),comm varchar2(20));插入测试数据decl原创 2017-06-06 16:48:32 · 18734 阅读 · 7 评论 -
使用select * 插入数据时候两边表字段顺序的影响测试
由于两张表结构在字段顺序上有不同,使用insert into A select * from B 的时候是否会有问题。测试如下:--创建测试表1create table t_test_1 (id varchar2(2), comm varchar2(10));--创建测试表2 字段顺序同表1不同create table t_test_2 (comm varchar2原创 2017-06-05 16:51:55 · 3862 阅读 · 0 评论 -
oracle 索引比表大的情况测试
--有一些时候发现某些表的索引大小会超出表的大小,而且索引字段比表字段少很多,怀疑是对表的更新导致。--测试索引比表大的情况create table t_index(id ,name,owner,type) as select object_id , object_name,owner,object_type from dba_objects;create in原创 2017-06-05 14:12:21 · 2419 阅读 · 0 评论 -
oracle listener.log清理
--查看日志位置lsnrcctl status查看listener log file的位置Listener Log File /home/orauat/app/oracle/diag/tnslsnr/xxxx/listener/alert/log.xml--进入/home/orauat/app/oracle/diag/tnslsnr/xx原创 2016-08-06 18:02:00 · 4663 阅读 · 0 评论 -
impdp 按条件导入测试 query
--创建测试表create table t_table as select * from dba_tables;--导出测试表expdp TEST/******* directory=EXPDATA dumpfile=impdp_query_test.dmp logfile=impdp_query_test.log tables=TEST.t_tableConnec原创 2016-08-06 17:55:00 · 7408 阅读 · 0 评论 -
oracle 使用spool导出数据到文件
--oracle 使用spool导出数据到文件需要将数据库中的数据以txt文本形式导出,可以用spool方式导出。--创建脚本文件 spool.sql--添加如下语句SPOOL D:\works\数据库dump\spool\bbb.txtset echo off --不显示脚本中正在执行的SQL语句set feedback off --不显示sql查询或修原创 2016-08-06 17:49:56 · 21855 阅读 · 2 评论 -
oracle使用增量备份恢复archive gap过大的问题 dg修复
问题: 测试环境有一套dataguard产生了过大的archive gap, dg链路不正常同步已经有几个月时间。查询v$archive_gap 记录较多,而且根据最早的缺失日志去源端查询,发现由于时间已久,源端对应的归档日志已不存在(归档删除策略是只保留一天)。处理方式: 由于归档文件缺失过多,源端也缺少部分历史归档文件,故只能采取增量恢复方式或原创 2018-01-02 11:16:55 · 1134 阅读 · 0 评论 -
oracle 使用adrci清理incident文件
oracle中通常有好多日志文件,遇到异常情况会产生大量日志,造成磁盘空间紧张。故需要清理对应文件。包括trace文件,incident文件,listener log文件等11g中oracle提供了一个ADRCI的命令行工具来查看ADR中的alert日志和trace信息,可以批量删除对应的日志文件。adrci的位置在$ORACLE_HOME/bin目录下--删除in原创 2018-01-03 10:50:57 · 10531 阅读 · 0 评论 -
ORA-02303无法使用类型或表的相关性来删除或取代一个类型
错误描述:ORA-02303:无法使用类型或表的相关性来删除或取代一个类型。错误SQL:CREATE OR REPLACE TYPE xxx AS OBJECT (xxxxxxxxx);原因分析:该type被别的对象引用所以无法删除。select * from dba_dependences 视图发现该type确实有被引用。有其他的type引用到该type。导致无法更新原创 2014-09-16 14:46:46 · 20820 阅读 · 0 评论 -
zabbix监控oracle实例状态 linux系统
环境:linux--配置oracle实例监控,通过监控操作系统中oracle实例进程的状态来监控oracle实例状态编辑参数文件(新建):cd /etc/zabbix/zabbix_agentd.dvi userparameter_oracle.confUserParameter=Oracle.Instance,ps -ef | grep smon | grep -v g...原创 2019-08-26 14:01:19 · 1140 阅读 · 0 评论 -
redhat7 oracle 11g 单节点 dataguard搭建
--环境:操作系统:redhat 7.5oracle: 11.2.0.4主:192.168.3.3备:192.168.3.41、确定数据库是否为归档模式,不是则开启归档select log_mode from v$database;archive log list;开启归档模式shutdown immediatestartup mountalter d...原创 2019-08-23 14:17:55 · 507 阅读 · 0 评论 -
使用expdp&impdp 迁移public dblink
--oracle中有时在库间迁移时,按schema导出时不会导出public对象,可以通过数据泵expdp和impdp的方式进行迁移--测试如下:环境:11gr2 redhat7 单节点步骤:1、创建public dblinkcreate public database link testconnect to r_test IDENTIFIED BY test123...原创 2019-07-15 17:32:19 · 2046 阅读 · 0 评论 -
oracle sysman下job EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS();禁用
sysman EMD_MAINTENANCE.EXECUTE_EM_DBMS_JOB_PROCS() 这个任务是和EM 相关的任务,在数据库中频率为1分钟一次,如果碰到异常问题,容易引起性能问题,所以在用不到em的数据库中,可以禁掉--查看EM使用端口,默认是1158和3938cd $ORACLE_HOME/installmore portlist.iniiSQL*Plus HT...原创 2019-07-15 15:17:35 · 1965 阅读 · 0 评论 -
oracle 11g/10g dataguard dg环境主库增加redo log
oracle dg环境主库增加redo log size环境:11g主库:testa 单点备库:testb 单点加日志之前状态:主备库均为 5组redo log size 100m, 6组standby redo log 100m--1、主库增加redoalter database add logfile thread 1 group 21 '/oradata/testa/...原创 2019-07-15 15:08:10 · 1361 阅读 · 0 评论 -
Oracle 连接mysql dblink 透明网关配置测试
环境:源端10.100.55.xx oracle目标端:10.100.40.xxx mysql具体步骤:--源端安装mysql-connector-odbc[root@oracletmp]# rpm -ivh mysql-connector-odbc-5.1.13-1.rhel5.x86_64.rpmPreparing... #...原创 2019-05-23 14:18:06 · 1162 阅读 · 0 评论 -
oracle execute immediate 执行是否用绑定变量方式,如何使用绑定变量--测试
--环境oracle 11gR2--创建测试表SQL> create table t_test_execute 2 (id number(10), 3 comm varchar2(10));Table createdSQL>测试一:--创建测试存储过程create or replace PROCEDURE P_test_execute i...原创 2019-04-19 15:58:34 · 1975 阅读 · 0 评论 -
DBA_HIST_ACTIVE_SESS_HISTORY视图查询历史session信息,查找违规操作
情景:开发人员不小心删除了某张表,需要恢复,并查询是谁删除的。时间:半小时内的操作,使用flashback from drop即可。recyclebin中可以查到对应的记录根据v$sql 查询是否有drop语句,无结果,已刷出shared pool测试环境无归档,logminer也无法使用。解决方式:1、根据DBA_HIST_ACTIVE_SESS_HISTORY查询近一小时非select操作。锁...原创 2018-03-22 09:59:38 · 4953 阅读 · 0 评论 -
dba_scheduler_job相关,创建,暂停,重启,删除
-- job 创建 begin dbms_scheduler.create_job ( job_name => 'newjob', job_type => 'STORED_PROCEDURE', job_action => 'test', --存储过程名 start_date => sysdate, repeat_interval => 'FREQ=MONTHLY;...原创 2018-02-09 10:41:03 · 6335 阅读 · 0 评论 -
sqlnet.log清理
--清理sqlnet.logcd $ORACLE_HOME/network/logecho /dev/null > sqlnet.log原创 2017-12-29 10:34:19 · 3057 阅读 · 0 评论 -
varchar2(10)和varchar2(10 char)的区别
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 --创建测试表,一个是varchar2(5), 一个是5 charSQL> create table test(cola varchar2(5),colb varchar2(5 char)); Table created SQL原创 2016-08-06 17:44:44 · 7663 阅读 · 0 评论 -
oracle关闭删除自动统计信息
--关闭自动统计信息select client_name,status from dba_autotask_client;auto optimizer stats collection ENABLEsql tuning advisor DISABLEDauto space advisor DISABLEDSQL> exec DBMS_AUTO_TASK_ADMIN.原创 2016-04-17 12:01:33 · 3000 阅读 · 0 评论 -
修改用户default tablespace后建表报ora-01950无表空间权限
--问题描述:在对用户修改default tablespace之后alter user USERNAME default tablespace TABLESPACENAME;用户建表的时候报ORA-01950: no privilleges on tablespace xxxx(新的default tablespace)--原因:从报错可以明显看出用户对于新的def原创 2016-04-17 11:42:23 · 857 阅读 · 0 评论 -
linux下快速检查alert日志
日常监控数据库较多,需要快速查看alert日志的情况所以需要编辑一个脚本来快速查看具体方法:1、登录操作系统oracle用户2、sqlplus / as sysdba 连接数据库3、查询出alert文本文件的位置对于oracle 11g:select value from v$diag_info where name ='Diag Trace';对于之前的版本:show pa原创 2014-09-16 14:47:09 · 1668 阅读 · 0 评论 -
创建带有lob字段的表or 添加lob字段
--在oracle中创建带有lob字段的表,对于lob字段,最好指定专用的lob 表空间,因为对LOB字段进行update和Delete操作时候,它的Undo信息不是放在Undo 表空间中, 而是放在自己的LOB段中。 因此当对LOB数据更新操作时, 只要表空间还有足够剩余, LOB 段就会选择不断扩展 --在11g中,使用securefile选项--建表语句:createta原创 2014-09-16 14:47:02 · 1929 阅读 · 0 评论 -
ORA-01727 view赋权with grant option
ORA-01720: grant option does not exist for 'SCOTT.LOCK1' 该问题出现在将view赋权给另外的用户时,而该view中引用了第三个用户下的表。例如:我有三个用户:scott,roy,test在roy下创建一个view引用到scott的表然后将roy下的view的访问权限给test如果按普通的赋权模式,此时就会报出O原创 2014-10-11 11:25:32 · 1905 阅读 · 0 评论 -
merge into 语句用法
学习了一下merge into的用法,下面是实验过程1.创建两张测试表lock1和lock2create table lock1(id number(3),comm varchar(10));create table lock2(id number(3),comm varchar(10));2.对两张表插入测试数据begin for i in 1..20原创 2014-10-10 14:51:28 · 918 阅读 · 0 评论