暂无图片
暂无图片
8
暂无图片
暂无图片
3
暂无图片

墨天轮个人数说知识点合集

438

大家好,我是 JiekeXu,江湖人称“强哥”,青学会 MOP 技术社区主席,荣获 Oracle ACE Pro 称号,墨天轮 MVP,墨天轮年度“墨力之星”,拥有 Oracle OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及 PCA、PCTA、OBCA、OGCA、金仓KCA、KCP 等众多国产数据库认证证书,今天和大家一起来看看墨天轮个人数说知识点合集!欢迎关注我的微信公众号“JiekeXu DBA之路”,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送,谢谢!

ACEWeixinID.png

前 言

之前一直想把墨天轮数说板块个人数说的知识点收集一下,但还是由于太懒,没有行动起来,近几日也发现网页版的数说模块居然没有了,不知道是不是下架了,但幸好发现手机端的还在,也能打开,故花费一些时间整理一下,总共四十条,相信其中的一般条知识点对你肯定有用,快来收藏吧。

1、MySQL SQL_ID 查看方法

select DIGEST AS SQL_ID,SCHEMA_NAME AS DBNAME,LEFT(DIGEST_TEXT,1000) AS SQL_TEXT,COUNT_STAR AS EXEC_Count from performance_schema.events_statements_summary_by_digest limit 3 \G

--SQL_TEXT 受如下参数控制,默认为 1024 bytes 最大可为 1048576 bytes。

mysql> show variables like '%performance_schema_max_sql_text_length%';
+----------------------------------------+-------+
| Variable_name                          | Value |
+----------------------------------------+-------+
| performance_schema_max_sql_text_length | 1024  |
+----------------------------------------+-------+
复制

2、hcheck.sql 数据字典检查脚本

hcheck.sql - 用于检查数据字典中是否存在已知问题的脚本。

对于 19.22.0.0.240116 及更高版本:
SQL> set serveroutput on size unlimited
SQL> exec dbms_dictionary_check.full

对于 Oracle 10.2.0.5 到数据库 19c 2024 年 1 月版本更新 (DB RU) 19.22.0.0.240116:
    在 SQL*Plus 中使用 SYS 用户进行连接。
    运行脚本 hcheck.sql 。如果将 Oracle 12c 与多租户 (CDB) 一起使用,请根据需要连接到每个 PDB(包括 CDB$ROOT)。

SQL> alter session set container=CDB1_PDB1;
SQL> spool hcheck.log
SQL> @hcheck
HCheck Version 07MAY18 on .....
----------------------------------------------
Catalog Version 12.2.0.1.0 (1202000100)
db_name:
Is CDB?: YES CON_ID: 3 Container: CDB1_PDB1
                                        Catalog       Fixed
Procedure Name                     Version    Vs Release    Timestamp      Result
------------------------------ ... ---------- -- ---------- -------------- ---
.- OrphanedTable               ... 1202000100 <= *All Rel*  ..... 09:49:02 FAIL
 (Doc ID 1360889.1)
Complete output is in trace file:
//diag/rdbms///trace/___HCHECK.trc
SQL> spool off
复制

3、SQL ID 和 SQL HASH VALUE 可以互相转换

本质上SQL ID和SQL HASH VALUE是一回事,它们是可以互相转换的,这也是方法 DBMS_XPLAN.DISPLAY_CURSOR 所传入的第一个参数的值可以是 SQL ID,也可以是 SQL HASH VALUE 的原因。

select lower(trim('3yfu3wh150aqt')) sql_id,
trunc(mod(sum((instr('0123456789abcdfghjkmnpqrstuvwxyz',substr(lower(trim('3yfu3wh150aqt')), level, 1)) - 1) * power(32,length(trim('3yfu3wh150aqt')) - level)), power(2,32))) hash_value 
from dual connect by level <= length(trim('3yfu3wh150aqt'));

SQL_ID        HASH_VALUE
------------- ----------
3yfu3wh150aqt   38808281
复制

4、MongoDB 密码特殊符合问题

MongoDB 密码因存在特殊字符导致应用程序或者 MongoShell 无法连接时,要么修改密码为非特殊字符,要么转义。

use admin;
db.createUser(
{
 user: "user_cc",
 pwd: "FcuWB12345#",
 roles: [{role: "readWrite", db: "biz-integration"}]
 }
)
use admin;
db.changeUserPassword('user_cc','Pass_test_1234');

另一个方案就是在连接串中对特殊字符进行转义处理,转义规则如下:

! : %21
@ : %40
# : %23
$ : %24
% : %25
^ : %5e
& : %26
* : %2a
( : %28
) : %29
_ : %5f
+ : %2b
= : %3d

示例:密码为ab@#ai时,在连接串中对特殊字符进行转义处理,密码对应为ab%40%23ai。
mongodb://user_cc:u_c%40MUmd81@192.168.40.152:27017
复制

MongoDB 查看连接数

MongoDB server version: 3.4.20
jieke:PRIMARY> db.serverStatus().connections
{ "current" : 462, "available" : 50738, "totalCreated" : 14153652 }
复制

5、Oracle 生命周期问题

对于产品寿命和修补,Oracle 强烈建议升级到 19c,这是当前的本地部署长期版本,支持结束日期为 2032 年 12 月 31 日(如果您选择不支付扩展支持费用或购买 ULA,则为 2029 年 12 月 31 日)。您还可以在 2033 年和 2034 年这些服务可用时购买这些升级支持。

如果您当前运行的是 11.2.x/12.1.x,则需要升级到您正在运行的数据库版本的终端版本(即 11.2.0.4/12.1.0.2),然后继续升级到 19c。

11.2.0.4、12.1.0.2 和 12.2 处于持续支持状态,升级支持适用于有限平台。有关详细信息,请联系 CSS。注意:ACS 已重命名为 Customer Success Services。

如果您当前运行的是 18c,则应立即升级到 19c。18c 处于持续支持状态。

下一个 Long Term 版本是 23ai。要升级到 23ai,您必须使用 19c 或更高版本。

图片.png

6、视图 VSQL_PLAN 和 VSQL_PLAN_STATISTICS 的区别

视图 VSQL_PLAN 展示所有缓存的 SQL 语句的执行计划,而 VSQL_PLAN_STATISTICS 则展示了计划中每个步骤的执行次数、IO次数以及处理的记录数。

通过挖掘 VSQL,确定具有较高消耗时间、CPU 或 IO 需求的 SQL 语句。通过使用 VSQL_PLAN 和 V$SQL_PLAN_STATISTICS,我们可以找到执行操作不尽如人意的SQL语句,如对大表的全表扫描。

7、位图联接索引

位图联接索引是建立在两个或更多表的联接之上的位图索引。 对于表列中的每个值,索引存储被索引表中的相应行的 rowid。相比之下,在标准位图索引中,索引是建立在一个表上的。 通过在联接前预先执行限制条件,位图联接索引是减少数据量的有效方式。举一个可能会用到位图联接索引的示例, 假定用户经常查询某种特定职位类型的雇员数。 一个典型的查询可能如下所示:

SELECT COUNT(*) 
FROM employees, jobs 
WHERE employees.job_id = jobs.job_id 
AND jobs.job_title = 'Accountant';
复制

上述查询通常使用 jobs.job_title 上的一个索引来检索职位表中的 Accountant 行,然后通过(公共列) 职位 ID,和员工表中 employees.job_id 列上的索引来找到匹配的行。若要从索引本身检索数据,而不是从表中扫描,您可以创建一个位图联接索引,如下所示:

CREATE BITMAP INDEX employees_bm_idx ON employees (jobs.job_title) 
FROM employees, jobs WHERE employees.job_id = jobs.job_id;
复制

如下图所示,索引键是 jobs.job_title, 而被索引的表是 employees。

图片.png

图 位图联接索引

从概念上讲, employees_bm_idx 是建立在下例(包括示例输出) 所示的 SQL 查询中的 jobs.title 列上的索引。 在索引中的 job_title 键指向雇员表中的行。 对会计师数目的查询可以仅使用索引,而不用访问 employees表和 jobs 表,因为该索引本身已包含所请求的信息。

SELECT jobs.job_title AS "jobs.job_title", employees.rowid AS 
"employees.rowid" 
FROM employees, jobs 
WHERE employees.job_id = jobs.job_id 
ORDER BY job_title;
复制

8、检查序列使用情况

--检查序列使用情况,根据步长和缓存大小决定 0.98 此值
column sequence_owner format a15    heading 'Seq Owner'
column sequence_name  format a20    heading 'Seq Name'
column min_value                    heading 'Min Value'
column max_value                    heading 'Max Value'
column increment_by                 heading 'Inc#'
column order_flag                   heading 'Order'
column last_number                  heading 'Last Value'
select c.con_id, c.name container,
       s.sequence_owner,
       s.sequence_name,
       s.min_value,
       s.max_value,
	   s.last_number,
       s.increment_by,
       s.cycle_flag,
       s.order_flag,
       s.cache_size,
      s.last_number/s.max_value
  from cdb_sequences s, cdb_users u, v$containers c
 where s.sequence_owner = u.username  and s.last_number/s.max_value >=0.98
   and u.oracle_maintained = 'N'
   and s.con_id = u.con_id
   and u.con_id = c.con_id
 order by 1, 3, 4;
 
--select sequence_owner,sequence_name,LAST_NUMBER/MAX_VALUE from dba_sequences where LAST_NUMBER/MAX_VALUE >=0.98;
复制

9、外键列创建索引

建议在外键列上创建索引,外键列不创建索引容易导致死锁。级联删除的时候,外键列没有索引会导致表被全表扫描。

WITH CONS AS
 (SELECT /*+ materialize */
   OWNER, TABLE_NAME, CONSTRAINT_NAME
    FROM DBA_CONSTRAINTS
   WHERE OWNER IN ('PROD_CC', 'PROD')
     AND CONSTRAINT_TYPE = 'R'),
IDX AS
 (SELECT /*+ materialize */
   TABLE_OWNER, TABLE_NAME, COLUMN_NAME
    FROM DBA_IND_COLUMNS
   WHERE TABLE_OWNER IN ('PROD_CC', 'PROD')
   ORDER BY TABLE_OWNER DESC)
SELECT OWNER, TABLE_NAME, CONSTRAINT_NAME, COLUMN_NAME
  FROM DBA_CONS_COLUMNS
 WHERE (OWNER, TABLE_NAME, CONSTRAINT_NAME) IN (SELECT * FROM CONS)
   AND (OWNER, TABLE_NAME, COLUMN_NAME) NOT IN (SELECT * FROM IDX)
 ORDER BY OWNER DESC, TABLE_NAME DESC, CONSTRAINT_NAME;
复制

10、MySQL 索引问题

有以下SQL:

explain SELECT * FROM emp FORCE INDEX (emp_mgr) where job ='SALESMAN';
复制

其中JOB列上有索引。
创建了mgr列上索引:

CREATE INDEX emp_mgr on emp(mgr);
复制

其他列上无索引。
请问,上述SQL最终会采用何种访问方式(D)
A 使用JOB列索引
B 报语法错误
C 使用emp_mgr索引
D 全表扫描

亲测,MySQL8.0.28 验证了一把,确实是全表扫描。

CREATE TABLE EMP
       (EMPNO int,
        ENAME CHAR(10),
        JOB CHAR(9),
        MGR int,
        SAL int,
        COMM int,
        DEPTNO int);
CREATE INDEX emp_mgr on emp(mgr);
CREATE INDEX emp_job on emp(job);
explain SELECT * FROM emp FORCE INDEX (emp_mgr) where job ='SALESMAN';
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra       |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
|  1 | SIMPLE      | emp   | NULL       | ALL  | NULL          | NULL | NULL    | NULL |   14 |    20.00 | Using where |
复制

图片.png

11、MySQL 复制相关名字变更

从 MySQL 8.0.22 开始,START SLAVE、STOP SLAVE、SHOW SLAVE STATUS、SHOW SLAVE HOST、RESET SLAVE 均被弃用,取而代之的则是 start replica、stop replica、show replica status、show replicas 和 reset replica。 MySQL 8.0.23 版本开始,change replication source to 取代了以前一直使用的 change master to 命令。MySQL 8.0.26 版本开始,系统变量、参数等标识符中的 MASTER、SLAVE、MTS(multithreaded slave)将被 SOURCE、REPLICA 和 MTA(multithreaded applier) 取代。

12、MySQL 需要 flush privileges?

在 MySQL 中,grant 之后要跟着 flush privileges 吗?
正常情况下, grant 命令之后, 没有必要跟着执⾏ flush privileges 命令。
grant 语句会同时修改数据表和内存,判断权限的时候使⽤的是内存数据。因此,规范地使⽤ grant 和 revoke 语句, 是不需要随后加上 flush privileges 语句的。
flush privileges 语句本身会⽤数据表的数据重建⼀份内存权限数据,所以在权限数据可能存在不⼀致的情况下再使⽤。 ⽽这种不⼀致往往是由于直接⽤ DML 语句操作系统权限表导致的, 所以我们尽量不要使⽤这类语句。

13、10046 event 设置

####### 10046 event #######
shutdown immediate;
startup mount;
oradebug setmypid
oradebug event 10046 trace name context forever,level 12; 
alter database open;
oradebug event 10046 trace name context off;
oradebug tracefile_name; 

tkprof  /u01/app/oracle/diag/rdbms/jiekexu/jiekexu/trace/jiekexu_ora_2551.trc ./test.trc
复制

14、Oracle 新特性 Far Sync 实例

创建 Far Sync 实例与创建物理 Standby 数据库完全类似, 只是 Far Sync 实例中不存在数据文件。。。

  1. 为Far Sync实例创建控制文件
  2. 从主数据库使用的服务器参数文件 (SPFILE) 创建参数文件 (PFILE)
  3. 从已编辑的参数文件 (PFILE) 创建服务器参数文件 (SPFILE)
  4. 使用操作系统复制实用程序将步骤 1 中创建的远程同步实例控制文件和步骤 3 中创建的服务器参数文件
    (SPFILE) 从主系统复制到远程同步实例系统上的适当位置
  5. 创建备用重做日志(SRLs), 方法和在普通standby创建SRLs相同
  6. 如果要在 Windows 系统上托管远程同步实例, 请使用 ORADIM 实用程序创建 Windows 服务
  7. 如果操作系统身份验证用于管理用户并且 SSL 用于重做传输身份验证, 则此步骤是可选的。 如果不
    是, 则将主数据库的远程登录密码文件复制到远程同步实例上的相应目录。 无论何时授予或撤销管理
    权限( SYSDG、 SYSOPER、 SYSDBA等), 以及更改任何具有管理权限的用户的密码后, 都必须重新
    复制密码文件(在12.2.0.1之后, 密码文件会自动同步更新)
  8. 在Far Sync实例上, 使用 Oracle Net Manager 为Far Sync实例配置监听
  9. 在主数据库上, 使用 Oracle Net Manager 为用于redo传输服务的Far Sync实例 (chicagoFS) 创建网络
    服务名称; 在Far Sync实例上, 使用Oracle Net Manager为重做传输服务使用的主(chicago)和最终备库
    (boston)创建网络服务名称
  10. 以mount模式启动 Far Sync实例
  11. 验证Far Sync实例是否正常运行
  12. 将ADG配置的保护模式修改为最大可用。 在主数据库上执行命令:
    SQL> ALTER DATABASE SET STANDBY TO MAXIMIZE AVAILABILITY;

图片.png

15、Rman duplicate 报错 ORA-19505

rman target sys/'Oracle'@jieke auxiliary sys/'Oracle'@jiekedb
connected to target database: jieke (DBID=3857716255)
connected to auxiliary database: jieke (not mounted)
RMAN> duplicate target database for standby from active database DORECOVER NOFILENAMECHECK;
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 02/03/2023 10:43:52
RMAN-05501: aborting duplication of target database
RMAN-03015: error occurred in stored script Memory Script
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 02/03/2023 10:43:51
ORA-19505: failed to identify file "/u01/app/oracle/product/11.2.0/db_1/dbs/orapwjieke3"
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
复制

错误原因:由于 rman 连接源端使用 scanip 监听传输文件,而 scanip 刚好在节点三上,则导致了 orapwjieke3 文件不存在而报错 ORA-19505
解决办法:修改备库 tnsnames.ora 配置文件,使其仅连接 RAC 的一个节点即可,等同步完成后再改回 scanip。

16、Oracle 数据库版本和支持范围

最近 Oracle 数据库长期版本和创新版本的支持策略进行了一些重大更改。
截至到 2020 年 6 月 10 日,对于长期版本 19C 的支持时间进行了如下扩展:
主要支持时间至 24 年 4 月 30 日。
扩展支持时间至 27 年 4 月 30 日。

做为长期支持版本的 19C,提供最高级别的稳定性和最长的错误纠正支持时间。该扩展符合 Oracle’s Lifetime Support Policy ,即:具有 5 年的主要支持,接下来有 3 年的扩展支持。与扩展支持结合使用时,更具体信息,请参考文档 1626244.1。

在两个 Oracle 数据库长期版本之间,Oracle 提供了创新版本,其中包括许多增强功能和新功能,这些功能也将包含在下一个长期版本中。创新版本旨在使客户能够持续使用领先技术来快速开发或部署新应用程序或扩展现有应用程序。创新版本支持至少包括2年的主要支持,但没有扩展支持。19C 之前的创新版本支持时间为:
–Oracle 数据库 12C 的 12.2.0.1 版本至 2020 年 11 月 30 日。
–Oracle 数据库 18C 至 2021 年 6 月 30 日。

但是,数据库 12.2.0.1 提供了受限错误纠正,即:只对一级的问题和安全更新问题提供支持。该支持从 2020 年 12 月 1 日至 2022 年 3 月 31 日.
数据库 18C 没有受限错误纠正支持,更具体信息,请参考文档 1674382.1。

之前的长期版本已经超过其主要支持时间,但是目前仍然在扩展支持时间内的版本,如下:
–Oracle 数据库 12C 的 12.1.0.2 版本至 2022 年 7 月 31 日。
–Oracle 数据库 11G 的 11.2.0.4 版本至 2020 年 12 月 31 日。

客户可以选择通过 ACS 服务和 MDS 服务选择扩展11.2.0.4 的服务支持时间。关于 MDS 请参阅 客户可以选择通过高级客户支持 (ACS) 的 MDS 服务选择扩展服务支持时间。关于 MDS 请参阅 Oracle Market Driven Support (MDS) Data Sheet。

最后,建议客户参照文档 1626244.1 了解当前数据的版本情况和支持时间。

17、Oracle 19.18 Bug

LMON Trace File with Repeated Entries of “Submitting asynchronized dump request” For Environment With 19.18 Release Update on Linux x86_64 (Doc ID 2923428.1) Linux x86_64上19.18版本更新的环境中“提交异步转储请求”重复条目的LMON跟踪文件。

在19.18.0.0.0中,每48天的操作系统正常运行时间中,机器上的每个RAC数据库实例和Grid Infrastructure ASM实例都会出现重复的诊断和跟踪问题。此问题将持续长达24小时,并将在操作系统正常运行48-49天后再次出现。RAC诊断将在DIAG进程中重复执行。

此外,LMON跟踪文件将包含重复的条目,其中包括以下字符串,并且每个实例可能会消耗多达200MB的磁盘空间。kjzddmp(): Submitting asynchronized dump request …

出现该问题(Bug 35001966)必须满足以下条件:
数据库版本为19.18.0.0.0或网格基础设施版本为19.18.0.0.0。平台是Linux。
机器上的操作系统正常运行时间接近48-49天周期。

为避免对数据库系统造成影响,Linux版本的19.18 DB和GI Release Update补丁。X64已于太平洋标准时间2023年1月24日下午6点被搁置。
解决此问题的替换补丁正在加速,预计可用日期为2023年1月31日星期二。

图片.png

18、Oracle SQLPLUS 中插入数据&符号问题

在 Oracle SQLPLUS 中插入数据时,insert into t1 values ('name&addr');
插入值有特殊字符 & 导致插入失败,这个是 Oracle 里面用来识别自定义变量的设置,现在我们在SQLPLUS下 将其关闭:
SQL> Set define OFF;
然后再次执行导入脚本,OK!问题搞定。
注意:如果是在 TOAD 中执行,建议在每一个要导入的脚本第一行加上前面那句关闭 define 的话,否则当你导入第二个含有特殊字符的脚本的时候,又会出错。
如果是在 SQLPLUS 中执行,则只需要设置一次 define OFF,后面就可以连续导入了。直到你重新设置 define ON 为止。
·方法二:在SQL语句中将'&'替换成chr(38),因为chr(38)是‘&’的ASCII码
 SQL> Select 'Tom' || chr(38) || 'Jerry' from dual;
·方法三:分拆原来的字符串
SQL> Select 'Tom' || '&' || 'Jerry' from dual;
我们可以看到,方法一最为简便,而且效率也最高。方法二因为有一个调用函数的过程,所以性能稍差。方法三需要两次连接字符串,效率最差!
那么如果字段的内容中包含了单引号要怎么插入呢?例如:It's fine。方法同样有三
·方法一:使用转义字符
   SQL > Select 'test' || '''' from dual;
   注意:这里的''''四个单引号是什么意思呢?首先第一个和最后一个都是Oracle中的字符串连接符,这个没有异议。那么第二个'和第三'又表示什么意思呢?第二个'是一个转义字符
           第三个'才是我们真正的内容
·方法二:同样是使用转义字符,只不过方式不同而已
   SQL > Select 'test ''' from dual;
   注意:这里的第二个,第三个'就是我们上面方法一中提到的转义符和真正的内容
·方法三:在SQL中将'替换成chr(39),因为chr(39)是'的ASCII码
SQL > Select 'It' || chr(39) || 'fine' from dual;
复制

19、GoldenGate Free

GoldenGate Free提供甲骨文的免费使用许可证,允许在包括开发,测试和生产在内的任何环境中永久无限制地使用该软件。GoldenGate的所有功能都包含在许可证中,我们的团队鼓励新客户尝试一下。同样,还有一种新的基于配方的用户体验,可以自动执行初始加载功能,并从根本上简化非专业用户的GoldenGate。这个免费版本的GoldenGate的主要资源限制是它仅限于与小于20GB的数据库一起使用。拥有比这更大的数据库的客户应该考虑我们的低成本OCI-GG云解决方案或Oracle GoldenGate的完整内部部署软件包。

对于GoldenGate Free的初始版本,我们将推出对Oracle数据库(源和目标)的支持,并且在将来的版本中,我们计划添加对其他数据库的支持(例如;Postgres,MySQL等)和大数据(例如;Apache Kafka,对象存储等)。因此,请继续关注GoldenGate Free,因为我们的目标是随着时间的推移不断添加更多连接!

图片.png

20、OSWatcher 使用简介

OSW是用于采集OS性能指标的工具,调用OS的命令,对OS资源的占用可以忽略不计。
OSW包含两个组件:
oswbb : 一组shell脚本,采集OS的性能指标数据。
oswbba : java工具,分析oswbb采集的数据,提供一些建议,根据采集的数据绘制CPU,内存,网络,I/O的曲线图。

收集特定时间段的OSW数据:
# 查看OSW的数据存储位置
# ps -ef | grep OSW
# 收集指定时间段的日志,例如:
cd /archive
find . -name "*19.02.18.0[5-9]00.dat*" -o -name "*19.02.18.1[0-2]00.dat*"| xargs tar zcvf osw.tar.gz
使用oswbba分析OSW:
# 分析archive目录下的所有OSW数据采集文件,并生成HTML报告。
java -jar oswbba.jar -i  -D
# 指定时间段分析archive目录下的OSW数据采集文件,并生成HTML报告。
java -jar oswbba.jar -i  -b Dec 17 13:00:00 2021 -e Dec 17 14:00:00 2021 -D

参考文档:
OSWatcher (Includes: [Video]) (文档 ID 301137.1)
OS Watcher User's Guide (文档 ID 1531223.1)
OSWatcher Analyzer User Guide (文档 ID 461053.1)
复制

21、Oracle Multimedia(多媒体) 简介

甲骨文多媒体使 Oracle 数据库能够以与其他企业信息集成的方式存储、管理和检索图像、DICOM格式的医疗图像和其他对象、音频、视频或其他异构媒体数据。甲骨文多媒体将 Oracle 数据库的可靠性、可用性和数据管理扩展到传统、医疗、Internet、电子商务和媒体丰富应用程序中的多媒体内容。

提供以下服务和支持:
图像服务,用于存储、检索、元数据提取和处理二维静态位图图像。在桌面发布行业标准图像格式中,使用流行的压缩方案高效地存储图像。
医学数字图像和通信(DICOM)支持医学图像和其他DICOM内容的存储、检索、元数据提取、处理、写入、一致性验证和匿名。
音频和视频服务,用于存储、检索和提取流行的音频和视频文件格式的元数据。
要确定是否在任何表中使用Oracle Multimedia对象类型,可以使用以下查询:

SELECT COUNT(U.TABLE_NAME)
  FROM SYS.DBA_TAB_COLUMNS U
 WHERE U.TABLE_NAME NOT IN (SELECT OBJECT_NAME FROM SYS.DBA_RECYCLEBIN)
   AND U.DATA_TYPE IN ('ORDIMAGE','ORDIMAGESIGNATURE',
                       'ORDAUDIO','ORDVIDEO',
                       'ORDDOC','ORDSOURCE',
                       'ORDDICOM','ORDDATASOURCE',
                       'SI_STILLIMAGE','SI_COLOR',
                       'SI_AVERAGECOLOR','SI_POSITIONALCOLOR','SI_TEXTURE','SI_COLORHISTOGRAM','SI_FEATURELIST')
   AND (U.DATA_TYPE_OWNER IN ('ORDSYS', 'PUBLIC'))
   AND (U.OWNER <> 'PM');
COUNT(U.TABLE_NAME)
-------------------
                  0
复制

22、 PG 核心参数配置的网站

PG 核心参数配置的网站,可根据不同版本,不同操作系统及内存大小自动生成一些参数,还是比较有用的,这里先记录下,以备不时之需.

https://pgtune.leopard.in.ua/#/
复制

图片.png

23、 查看 Oracle IO 动态视图

从 12c 开始,Oracle 提供了一个动态视图用来分析长时间的 IO 使用情况。当 IO 消耗超过 500 毫秒时就会被捕获,当然这个 500 毫秒也可以通过隐含参数 _io_outlier_threshold来改变。
vio_outlier 视图用来查看存储子系统在响应磁盘 io 请求时是否存在偶发延迟。 vlgwrio_outlier 包含写日志进程响应耗时超过 500 毫秒的条目。

24、对象命名支持最大字符问题

Oracle 19c 下创建用户可以支持 128 个字符,11g 则不能超过 30个字符。

SYS@testogg> create user jiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certific identified by jiekex_mps_certificate;
create user jiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certific identified by jiekex_mps_certificate
            *
ERROR at line 1:
ORA-00972: identifier is too long
SYS@testogg> create user jiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certificatejiekex_mps_certifi identified by jiekex_mps_certificate;

User created.
SQL> create user jiekex_mps_certificatejiekex_mp identified by jiekex_mps_certificate;
create user jiekex_mps_certificatejiekex_mp identified by jiekex_mps_certificate
            *
ERROR at line 1:
ORA-00972: identifier is too long
SQL> create user jiekex_mps_certificatejiekex_m identified by jiekex_mps_certificate;
User created.
复制

25、DML 变化量

默认监控表上自前一次分析之后发生的DML及TRUNCATE操作,并将这些操作数量记录到数据字典基表MON_MODS中,我们平时查询的DBA_TAB_MODIFICATIONS视图数据实际上来源于MON_MODS_ALL基表,SMON定期会将MON_MODS中符合要求的数据融合(MERGE)到MON_MODS_ALL中。以上操作中,SMON会定期触发刷新数据,用户也可以自行发起。同样,Oracle也提供了DBMS_STATS中的FLUSH_DATABASE_MONITORING_INFO存储过程包,以实现手动触发的效果。
exec dbms_stats.flush_database_monitoring_info;

Oracle对于表的DML变化,记录在视图DBA_TAB_MODIFICATIONS中,当DML累计达到表格行数的10%时,就认为统计信息是陈旧的,需要及时收集。

select table_owner, table_name, inserts, updates, deletes, timestamp
  from dba_tab_modifications
 where table_owner = 'SCOTT'
   and table_name = 'JIEKE';
复制

26、PG监控长事务

pg 监控长事物,如下为一个小时:

select count(*) from pg_stat_activity where state <> 'idle'  and (backend_xid is not null or backend_xmin is not null) and now()-xact_start > interval '3600 sec'::interval;
复制

SQL标准中Read Uncommitted的事务隔离级别是允许脏读的,其本意应该是数据库管理系统在这一事务隔离级别能够支持非阻塞的读,即常说的写不阻塞读,但PostgreSQL默认就提供了非阻塞读,因此在PostgreSQL内部只实现了三种不同的隔离级别,PostgreSQL的ReadUncommitted模式的行为和Read Committed相同,并且PostgreSQL的Repeatable Read实现不允许幻读。而SQL标准定义的四种隔离级别只定义了哪种现象不能发生,描述了每种隔离级别必须提供的最小保护,但是没有定义哪种现象必须发生,这是SQL标准特别允许的。在PostgreSQL中,依然可以使用四种标准事务隔离级别中的任意一种,但是要理解PostgreSQL的事务隔离级别有别于其他数据库隔离级别的定义。除此以外,这里还引入了一个新的数据冲突问题:序列化异常。序列化异常是指成功提交的一组事务的执行结果与这些事务按照串行执行方式的执行结果不一致。

27、在线创建索引并收集统计信息

create index idx_test_objid on test(object_id) online compute statistics; 不止在线创建索引,还能通过对数据对象的完全扫描来收集精确的统计数据,防止因锁定统计信息(dbms_stats.lock_table_stats)而带来的统计信息未更新而不走此索引。如果锁定统计信息必须先解锁【exec DBMS_STATS.UNLOCK_TABLE_STATS('scott','test')】才能对表收集统计信息。

SQL> exec DBMS_STATS.gather_TABLE_STATS('scott','test')
BEGIN DBMS_STATS.gather_TABLE_STATS('scott','test'); END;
*
ERROR at line 1:
ORA-20005: object statistics are locked (stattype = ALL)
ORA-06512: at "SYS.DBMS_STATS", line 24281
ORA-06512: at "SYS.DBMS_STATS", line 24332
ORA-06512: at line 1
SQL> exec DBMS_STATS.gather_schema_STATS('scott')
PL/SQL procedure successfully completed.
SQL> select last_analyzed from dba_indexes where table_name='TEST' and owner ='SCOTT';

LAST_ANALYZED
-------------------

Elapsed: 00:00:00.00
SQL> exec DBMS_STATS.UNLOCK_TABLE_STATS('scott','test')
SQL> exec DBMS_STATS.gather_schema_STATS('scott')
SQL> select last_analyzed from dba_indexes where table_name='TEST' and owner ='SCOTT';
复制

28、列统计信息

在 Oracle 数据库中列的统计信息主要包括 列的基数、列中空值数量、列的数据分布情况(直方图),可以通过数据字典 DBA_TAB_COL_STATISTICS 查看列的统计信息。

col COLUMN_NAME for a30
col LOW_VALUE for a18
col HIGH_VALUE for a24
col HISTOGRAM for a20
SELECT COLUMN_NAME,
      NUM_DISTINCT,
      LOW_VALUE,
      HIGH_VALUE,
      DENSITY ,
      NUM_NULLS ,
      AVG_COL_LEN ,
      HISTOGRAM,
      NUM_BUCKETS
  FROM DBA_TAB_COL_STATISTICS
 WHERE TABLE_NAME = '&TABLE_NAME';
复制

统计信息解释一下:
NUM_DISTINCT:该列中唯一值的数量。
LOW_VALUE:该列的最小值。显示为内部存储格式。对于字符串列,只存储前32字节。
HIGH_VALUE:该列的最大值。显示为内部存储格式。对于字符串列,只存储前32字节。
DENSITY:0到1之间的一个小数。接近0表示对于该列的过滤操作能去掉大多数的行。接近1表示对于该列的过滤操作起不到什么作用。如果没有直方图,DENSITY=1/NUM_DISTINCT。
HISTOGRAM:表明是否有直方图信息,如果有,是什么类型?FREQUENCY表示频率类型,HEIGHT BALANCED表示平均分布类型;如果没有,则为NONE。
NUM_BUCKETS:直方图里的桶数。它表示一组同类的数值放在一起。直方图最少由一个桶组成。如果没有直方图,则为1,最大桶数为254。

29、查看用户 Profile

select RESOURCE_NAME,LIMIT from dba_profiles where profile='APP_USER' and resource_name='IDLE_TIME';
SYS@JiekeXu>select username,PROFILE from dba_users where username='SCOTT';

USERNAME                       PROFILE
------
                    
SYS@JiekeXu>select * from dba_profiles where profile='APP_USER';
SYS@JiekeXu> select dbms_metadata.get_ddl('PROFILE',profile) from dba_profiles where profile='APP_USER'; 
CREATE PROFILE "APP_USER"
    LIMIT
         COMPOSITE_LIMIT DEFAULT
         SESSIONS_PER_USER DEFAULT
         CPU_PER_SESSION DEFAULT
         CPU_PER_CALL DEFAULT
         LOGICAL_READS_PER_SESSION DEFAULT
         LOGICAL_READS_PER_CALL DEFAULT
         IDLE_TIME 1
         CONNECT_TIME DEFAULT
         PRIVATE_SGA DEFAULT
         FAILED_LOGIN_ATTEMPTS DEFAULT
         PASSWORD_LIFE_TIME DEFAULT
         PASSWORD_REUSE_TIME DEFAULT
         PASSWORD_REUSE_MAX DEFAULT
         PASSWORD_VERIFY_FUNCTION DEFAULT
         PASSWORD_LOCK_TIME DEFAULT
         PASSWORD_GRACE_TIME DEFAULT
复制

30、Oracle HINT 提示

HINT 是SQL语句中的注释,它将指令传递给Oracle数据库优化器。 优化器使用这些 HINT 来选择语句的执行计划,除非存在阻止优化器这样做的条件。  
 
HINT 是在 Oracle7 中引入的,当优化器生成次优计划时,用户几乎没有追索权。 现在Oracle提供了许多工具,包括SQL调优顾问、SQL计划管理和SQL性能分析器,以帮助您解决优化器无法解决的性能问题。 Oracle强烈建议您使用这些工具而不是 HINT 。 这些工具远远优于 HINT ,因为在持续使用时,它们会在数据和数据库环境发生变化时提供新的解决方案。  
 
应该谨慎使用 HINT ,并且只有在收集了相关表的统计信息并使用EXPLAIN plan语句在没有 HINT 的情况下评估优化器计划之后才使用 HINT 。 更改数据库条件以及在后续版本中增强查询性能会对代码中的 HINT 如何影响性能产生重大影响。  

一个语句块只能有一个包含 HINT 的注释,并且该注释必须跟在SELECT、UPDATE、INSERT、MERGE或DELETE关键字之后。
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/Comments.html#GUID-D316D545-89E2-4D54-977F-FC97815CD62E  
复制

31、两种 Oracle 增量备份策略

①差异增量备份(Differential incremental backup):以某次以来同级别或低级别的备份作为基础备份
②累积增量备份(Cumulative incremental backup): 以某次以来比自己级别低的备份作为基础备份
10g以后,增量备份只有0级和1级,原来2级以上的级别可兼容,但不推荐使用。

①0级增量备份不等同于全备(full backup),全备不能做为增量备份的基础备份。
②如果没有备份过0级备份,那么第一次1级备份(差异或累计)就当做0级备份。

32、V$ARCHIVED_LOG 视图

V$ARCHIVED_LOG显示控制文件中的归档日志信息,包括归档日志的名称。 在线重做日志被成功归档或清除后,会插入一条归档日志记录(如果日志被清除,则name列为NULL)。 如果日志被存档两次,将会有两个存档日志记录,它们具有相同的THREAD#、SEQUENCE#和FIRST_CHANGE#,但是名称不同。 当从备份集或副本恢复归档日志时,以及使用RMAN copy命令生成日志副本时,也会插入归档日志记录。

--使用如下语句统计RAC主库每天产生的归档量 
select trunc(completion_time) "time", count(*) count, round(sum(block_size * blocks/1024/1024/1024), 2) "GB"
from v$archived_log where dest_id = 1 group by trunc(completion_time) order by 1; 

--当然也可修改一下,统计每个小时的归档。
select to_char(completion_time,'YYYY_MM_DD HH24') "time", count(*) count, round(sum(block_size * blocks/1024/1024), 2) "MB"
from v$archived_log where dest_id = 1 group by to_char(completion_time,'YYYY_MM_DD HH24') order by 1; 
复制

33、查看 OJVM 组件

很多人打补丁不知道自己的环境下是否安装了 OJVM 组件,是否需要打 OJVM 的补丁,

--可以先查有没有安装,一般情况下这个插件都是已安装的,并且是 VALID 有效的。
SQL> SELECT version, status FROM dba_registry WHERE comp_id=‘JAVAVM’;
VERSION                        STATUS
------------------------------ ------------------------------
11.2.0.4.0                     VALID

select count(*) from x$kglob where KGLOBTYP = 29 OR KGLOBTYP = 56;

--如果没被使用则 count(*) 的值应该为 0。

SQL*Plus: Release 11.2.0.4.0 Production on Wed Jun 16 20:22:05 2021

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> select count(*) from x$kglob where KGLOBTYP = 29 OR KGLOBTYP = 56;
SQL> 
  COUNT(*)
----------
         0
复制

34、数据库审计

数据库开启审计后可以查看用户密码错误登录的主机,不过生产环境一般不建议开启审计,均使用第三方审计。要是没有第三方审计,那就只能写触发器实现了。

以下图二触发器 SQL 来自于网络。

=====================================
SQL> col USERNAME for a15
SQL> col USERHOST for a18
SQL> select username,userhost,timestamp,returncode from dba_audit_session where username='TEST00' and returncode='1017' order by timestamp desc;
复制

图片.png
图片.png

35、Oracle 11204 数据库 o7_dictionary_accessibility 的作用

在做主机安全检查的时候,关于数据字典访问权限有一个关键参数:o7_dictionary_accessibility。
该参数设置为 true,如果用户具有了 any table 权限,则可以访问 sys 用户的对象,包括数据字典基表,dba_开头的视图。
该参数设置为 false,如果用户具有了 any table 权限,则可以访问除 sys 用户之外的其他用户的对象,也就无权访问数据字典基表。

在 19C 中变成了隐含参数 “_VIEW_DICTIONARY_ACCESSIBILITY ” 默认为 FALSE

NAME                                VALUE                DESCRIPTION
----------------------------------- -------------------- --------------------------------------
_VIEW_DICTIONARY_ACCESSIBILITY      FALSE                View Dictionary Accessibility Support
复制

36、杂项

查看 RAC 数据库 ip 地址:
select * from gv$configured_interconnects;
一条命令修改 grid 用户密码
echo ‘oracle’ | passwd --stdin grid
子查询非嵌套(Subquery Unnesting):
当 where 子查询中有 in、not in、exists、not exists等,CBO 会尝试将子查询展开(unnest),从而消除 FILTER,这个过程就叫作子查询非嵌套。
子查询非嵌套的目的就是消除FILTER。
1). 执行计划中离 HASH 连接关键字最近的表就是驱动表。
2). 嵌套循环被驱动表需要扫描多次,HASH 连接的被驱动表只需要扫描一次。
3). HASH 连接的驱动表与被驱动表的连接列都不需要创建索引。

db file sequential read这个等待事件的含义:一般老DBA总会告诉新人,这个等待事件是和SQL的索引扫描有关的。当SQL通过索引去访问数据的时候,首先查到索引里的ROWID,然后再通过ROWID进行单块读,读取表里的数据,这个时候就可能会等待db file sequential read了。如果SQL是做全表扫描,那么就会等待db file scattered read了。。。

37、为什么下载老补丁包需要密码?

最近有人提出这样的问题:为什么下载老补丁包需要密码?他们希望从 2020 年 7 月起在 My Oracle Support ( MOS )平台上下载一个 PSU ,但是没有密码是不可能的。在MOS注:888.1-主注数据库主动补丁程序,我们记录如下:
1.获取较旧的Oracle数据库包、更新和修订的策略
通过对客户服务请求(Customer Service Requests , SR )的审查,我们发现客户经常遇到问题,因为他们在不知情的情况下下载了较旧的数据库包。为了帮助缓解这种情况,当客户尝试下载超过 12 个月的捆绑包、更新( RU )或修订( RU R )时,它们将被重定向到新版本的信息。我们将密码保护这些旧版本,以防止客户无意中下载他们。客户仍然有权下载这些旧版本,并可以通过登录SR请求密码来获取它们。这也将使我们能够捕获这些请求的原因,以便我们能够制定纠正措施来改进交付和最新版本的使用。
因此,在这种情况下,您只需要打开一个SR并请求密码。但请简要解释为什么需要一个超过12个月的补丁包。

38、ORACLE RU 大小问题

对于 Oracle 19C GI AU 大小的问题,官方文档描述有误。
Oracle 官方文档安装手册中 8.2 节《Identifying Storage Requirements for Oracle Automatic Storage Management》中解释如下:

Every Oracle ASM disk is divided into allocation units (AU). An allocation unit is
the fundamental unit of allocation within a disk group. You can select the AU Size
value from 1, 2, 4, 8, 16, 32, or 64 MB, depending on the specific disk group
compatibility level. For flex disk groups, the default value for AU size is set to 4
MB. For external, normal, and high redundancies, the default AU size is 1 MB.
复制

不过根据实际情况,安装时不管选择哪种冗余模式默认都是 4M,最小 1M,最大可选 64M。
我认为官方文档有错误,大家可以实际测试一下,或者查询已安装的标准环境检查 AU 大小:select name,allocation_unit_size from v$asm_diskgroup; 也可以使用 asmca 打开图形化查看,点击 create 创建新的磁盘组时,不选选择何种冗余模式默认就是 4M,当然,该值最大值也受隐含参数 _asm_ausize 限制。我的 19C Linuxone 环境查看如下:

图片.png

39、文件乱码格式问题

有的时候文件通过 Win 环境传到 Linux 下执行会报错,shell 文件格式有问题,我们需要通过 dos2unix Check_DM_Info.sh  转换一下就好。
还有的时候粘贴过来的文件显示如下所示的空格会变成问号?
export?PORT=`ss?-tnlp?|?grep?dmserver?|?grep?152?|?awk?'{print?$4}'?|?cut?-d?':'?-f4`
怎么办?打开编辑器
找到替换
选中目标
查找模式选择扩展,然后全部替换就好。
export PORT=`ss -tnlp | grep dmserver | grep 152 | awk '{print $4}' | cut -d ':' -f4`
复制

40、杂记

事务四大特性 acid 对应 隔离级别有四种,
rr 重复读
rc 读已提交
ru 读未提交
s 串行化
mysql 默认为 rr 可重复读
oracle 默认为 rc 读已提交。
这些主要是解决脏读,不可重复读,幻读等问题

DBSNMP 和 MGMT_VIEW 自建用户。

DBSNMP:The account used by the Management Agent component of Oracle Enterprise Manager to monitor and manage the database.(Oracle Enterprise Manager中的Management Agent组件 用于监控和管理数据库的帐户。)默认 Open,Password is created at installation or database creation time.

MGMT_VIEW:An account used by Oracle Enterprise Manager Database Control.Password is randomly generated at installation or database creation time.(Oracle企业管理器数据库控件使用的帐户) Users do not need to know this password.

SQL> select object_name,object_type from dba_objects where owner='MGMT_VIEW';

no rows selected

实际上 MGMT_VIEW 用户是 DB Control Repository 的一部分,和 SYSMAN 用户一起构成 DB Control Repository 的组成部分。

MGMT_VIEW 不拥有任何对象,仅用于查询 SYSMAN 用户对象。
select object_name,object_type from dba_objects where owner='SYSMAN';

详见:https://docs.oracle.com/cd/E11882_01/server.112/e10575/tdpsg_user_accounts.htm#TDPSG20301
Enterprise Manager Grid Control Installation and Basic Configuration:
https://docs.oracle.com/cd/B16240_01/doc/em.102/b16228/toc.htm
复制
--创建一个表空间作为用户的默认表空间,然后授予最小化基础权限。
基础权限如下:
CREATE TABLESPACE JIEKEXU DATAFILE '+DATA' SIZE  32766M UNIFORM SIZE 1M;
CREATE USER JIEKEXU IDENTIFIED BY JIEKEXU DEFAULT TABLESPACE JIEKEXU QUOTA UNLIMITED ON JIEKEXU TEMPORARY TABLESPACE TEMP;
GRANT CREATE SESSION TO JIEKEXU;
GRANT CREATE table TO JIEKEXU;
GRANT CREATE VIEW TO JIEKEXU;
GRANT CREATE TRIGGER TO JIEKEXU;
GRANT CREATE database link TO JIEKEXU;
GRANT CREATE public database link TO JIEKEXU;
GRANT CREATE  PROCEDURE to JIEKEXU;
GRANT CREATE  sequence to JIEKEXU;
GRANT CREATE  synonym to JIEKEXU;       
GRANT CREATE  any directory to JIEKEXU;   
GRANT CREATE JOB to JIEKEXU;
GRANT CREATE MATERIALIZED VIEW to JIEKEXU;
复制
crontab 计划任务 
* * * * * 分时日月周,每隔 30 秒执行一次
* * * * * sleep 30; sh a.sh
* * * * * sleep 60; sh a.sh
复制

图片.png

全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~

❤️ 欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107
——————————————————————————

facebook_pro_light_1920 × 1080  副本.png

最后修改时间:2025-04-02 09:45:07
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

听溪
暂无图片
2天前
评论
暂无图片 0
墨天轮个人数说知识点合集,学习啦,很不错
2天前
暂无图片 点赞
评论
筱悦星辰
暂无图片
22天前
评论
暂无图片 0
今日一点一滴的进步,终会塑造一个与众不同的你。
22天前
暂无图片 点赞
评论
墨天轮编辑部
暂无图片
23天前
评论
暂无图片 0
给徐老师点赞咱们网页版数说板块首页入口下架了,但是功能还是在的呢:https://www.modb.pro/datalk
23天前
暂无图片 点赞
评论
AlbertS
关注
暂无图片
获得了17次点赞
暂无图片
内容获得1次评论
暂无图片
获得了8次收藏
TA的专栏
JiekeXu_MySQL 学习笔记
收录42篇内容
JiekeXu DBA之路
收录227篇内容
目录
  • 前 言
  • 1、MySQL SQL_ID 查看方法
  • 2、hcheck.sql 数据字典检查脚本
  • 3、SQL ID 和 SQL HASH VALUE 可以互相转换
  • 4、MongoDB 密码特殊符合问题
  • 5、Oracle 生命周期问题
  • 6、视图 VSQL_PLAN 和 VSQL_PLAN_STATISTICS 的区别
  • 7、位图联接索引
  • 8、检查序列使用情况
  • 9、外键列创建索引
  • 10、MySQL 索引问题
  • 11、MySQL 复制相关名字变更
  • 12、MySQL 需要 flush privileges?
  • 13、10046 event 设置
  • 14、Oracle 新特性 Far Sync 实例
  • 15、Rman duplicate 报错 ORA-19505
  • 16、Oracle 数据库版本和支持范围
  • 17、Oracle 19.18 Bug
  • 18、Oracle SQLPLUS 中插入数据&符号问题
  • 19、GoldenGate Free
  • 20、OSWatcher 使用简介
  • 21、Oracle Multimedia(多媒体) 简介
  • 22、 PG 核心参数配置的网站
  • 23、 查看 Oracle IO 动态视图
  • 24、对象命名支持最大字符问题
  • 25、DML 变化量
  • 26、PG监控长事务
  • 27、在线创建索引并收集统计信息
  • 28、列统计信息
  • 29、查看用户 Profile
  • 30、Oracle HINT 提示
  • 31、两种 Oracle 增量备份策略
  • 32、V$ARCHIVED_LOG 视图
  • 33、查看 OJVM 组件
  • 34、数据库审计
  • 35、Oracle 11204 数据库 o7_dictionary_accessibility 的作用
  • 36、杂项
  • 37、为什么下载老补丁包需要密码?
  • 38、ORACLE RU 大小问题
  • 39、文件乱码格式问题
  • 40、杂记