Oracle
文章平均质量分 54
howard_shooter
交流微信:17625988619
展开
-
RMAN 备份恢复、删除归档
通过设置备份策略,决定哪些备份是obsolete,obsolete的备份并不会自动删除,需要手工删除:list backupreport obsoletedelete obsolete使用RMAN既可以做单独的tablespace备份,datafile备份,也可以做全库备份:backup database format '/u01/app/oracle/backup-rman/db_%d_%T_%U.bak';或直接backup database;会备份到db_recovery_file_原创 2024-03-26 11:33:35 · 1426 阅读 · 0 评论 -
Oracle 数据泵 导入导出 最简说明
数据泵可以对含有CLOB,BLOB等字段的表导出数据,是应用场景最广的一种导入导出方法,我觉得要比SQL Developer好用,不过需要能够登录数据库所在主机的操作系统。原创 2024-02-28 18:28:02 · 606 阅读 · 0 评论 -
OpenEuler 静默安装 Oracle19c
我一般都是用runInstaller和dbca的图形界面安装Oracle,但是这次安装,受到网络限制,不能用弹出窗口,只能用静默方式,还是使用这些可执行程序,不过要加一个 -silent 选项,参考了网上的文章,加上自己的实际情况,Oracle19c的静默安装包括四部分:1、runInstaller 静默安装软件19c软件包2、netca静默配置网络3、dbca静默建库4、导入表结构和数据。原创 2024-02-23 16:59:16 · 1490 阅读 · 0 评论 -
Oracle大批量插入、更新、删除后应执行dbms_stats更新统计数据
所以在大批量插入、更新数据后,要对表执行dbms_stats.gather_stats,因为这个操作相当于对全表执行了select,这样也清理了block头。因为block cleanout的原因(插入、更新后,第一次select会修改block头导致生成redo)原创 2023-02-14 11:22:06 · 60 阅读 · 0 评论 -
Oracle更新统计数据
函数参数还有很多,具体可以看上面的链接,总之可以决定收集表的哪些列,收集方式等。原创 2023-01-10 11:54:40 · 1356 阅读 · 0 评论 -
Oracle创建database link(dblink),不修改tnsnames.ora
Oracle中,在A库创建dblink后,用户A1可以在A库中访问B库中用户B1的表,A、B两个库需要都是Oracle,但版本可以不同。其中paas和12345是B库的用户和密码,paas_dev是在A库的tnsnames.ora里配置的B库的IP、端口、服务名。这样的好处是,有时候不允许登录Oracle的操作系统修改tnsnames.ora,但又需要在A库中读取B库中的数。原创 2022-12-15 17:29:32 · 656 阅读 · 0 评论 -
impdp导入时卡住(db_recovery_file_dest_size空间满)闪回空间不足
(不需要重启数据库)今天遇到了impdp导入时卡住的问题,网上有许多讨论这个问题的文章,大多都是:等等就好。将db_recovery_file_dest_size设为500G(原来是30G)过了一会儿,停了将近2小时的impdp开始打印新的内容了。70%多,可能因为这个原因报归档日志错误。原创 2022-12-14 17:31:29 · 301 阅读 · 0 评论 -
sqlplus打印表和表空间定义
set longsize 200000--打印表定义select dbms_metadata.get_ddl('TABLE','ACT_GE_BYTEARRAY','EULAR_DEV') from dual;--打印表空间定义select dbms_metadata.get_ddl('TABLESPACE','TAB_PAASTEST') from dual;--打印用户权限SELECT DBMS_METADATA.GET_DEPENDENT_DDL('OBJECT_GRANT','EMPLOYEES',原创 2022-12-06 09:26:37 · 179 阅读 · 0 评论 -
Oracle查看表占用的空间
主要就是查dba_segments,根据Oracle存储逻辑,一个表可能会对应多个段,段名与表名相同。--查看用户PAASTEST所有的表所在的表空间。--数据库中表空间占用情况。原创 2022-12-01 18:03:47 · 4652 阅读 · 0 评论 -
Oracle导出序列(sequence)
时,将得到2,目标库下次执行select SEQ_TEST_01.nextval from dual;Oracle导出序列seq01时,得到创建seq01的语句,起始值(start with)并不等于源库创建seq01时的起始值,而是大于等于源库下一次执行seq01.nextval得到的值。2、如果源库创建seq01是用cache n,例如cache 20,导出的创建seq01的start with,就大于源库下一次执行seq01.nextval的值,大多少和cache值有关。原创 2022-12-01 17:31:55 · 1857 阅读 · 0 评论 -
sqlplus 便利设置
可以将这些设置放在 $ORACLE_HOME/sqlplus/admin/glogin.sql 里,这样sqlplus登录后会自动执行这些设置。--设置页有多少行,超过一页的行不是不显示,而是会再显示一个表头。--在sqlplus终端执行shell命令,以叹号!--设置一行的宽度,按字符,如果宽度不够有时显示混乱。-- 显示执行语句而不只是结果,在脚本中有用。-- 脚本或终端的执行过程打印到日志。-- 显示每条语句执行时间。--是否显示结果行数。原创 2022-12-01 17:00:29 · 1014 阅读 · 0 评论 -
设置Oracle表空间只读
还可以查询dba_tablespaces。原创 2022-12-01 16:20:06 · 1141 阅读 · 0 评论 -
制作Windows下可移植Python环境和使用cx_Oracle
再说一下 cx_oracle模块,这是python连接Oracle的模块,仅仅python下载cx_oracle模块是不够的,还需要下载安装Oracle Instant Client 库,cx_oracle依赖于这个库,SQL Developer也依赖于这个库。然后就可以用pip下载模块了,下载模块在解压目录的Lib\site-packages里,将这个目录拷贝到其它机器上就可以直接使用了。解压python-3.8.9-embed-amd64.zip后,将所在目录加入PATH环境变量。原创 2022-11-03 10:54:26 · 523 阅读 · 0 评论 -
如果用insert导入一个非常大的表,中途失败会发生什么?
这种大批量insert 还没commit时,既会落盘到数据文件,也会落盘到undo表空间,也会落盘到redo日志,应该是先落盘redo日志(包括数据文件修改产生的redo和undo产生的redo),如果最终没commit,就会回滚:redo里因为没有commit标记落盘的数据会被忽略,然后使用落盘到undo表空间的数据重做落盘到数据文件的数据。只能是内存SGA吗?来自《Expert Oracle Database Architecture》 What Does a ROLLBACK Do?原创 2022-11-02 17:49:10 · 367 阅读 · 0 评论 -
Oracle数据泵不能自动导出同义词
Oracle数据泵不能自动导出同义词原创 2022-11-02 10:16:56 · 173 阅读 · 0 评论 -
Windows安装PL/SQL Developer
其实需要安装两个软件,一个是客户端库,叫做Oracle Instant Client,另一个才是PL/SQL Developer。PL/SQL Developer依赖于Oracle Instant Client连接Oracle。PL/SQL Developer需要tnsnames.ora里面的配置信息,这与sqlplus用的一样。Windows下需要配置环境变量:TNS_ADMIN、ORACLE_HOME、NLS_LANG。原创 2022-11-01 14:48:39 · 1437 阅读 · 0 评论 -
Oracle迁移,数据泵、dblink(同库异库适用,跨版本)
使用impdp+databaselink可以在同一个数据库内,或不同数据库(可能版本不同)间复制schema(一个用户下的所有对象,Oracle中schema和用户是一个概念),下面记录复制过程。原创 2022-10-21 15:51:04 · 2267 阅读 · 0 评论 -
Oracle 12c (12.1.0.2/12.2.0.1)升级 19c(19.3.0.0)
关于12c 升级 19c,这篇文章写的已经很好12c升级19c我不再重复,以下记录我升级过程中的步骤和问题。之前自己摸索过在12.1.0.2上不打补丁,直接用DBUA升级,结果失败,于是老老实实按照网上的步骤做,用autoupgrade升级,12.1.0.2打补丁。使用AutoUpgrade方式升级,需要下载autoupgrade.jar和补丁包。12.2.0.1 和12.1.0.2 有各自。原创 2022-10-20 18:14:41 · 4542 阅读 · 0 评论 -
Oracle 12c RMAN 全库冷备和还原
注意,只能还原相同版本Oracle的备份,即使是小版本不同,都不行。(在12c的环境下,ORACLE_HOME等)#不要自动备份control file。原创 2022-10-20 11:45:39 · 795 阅读 · 0 评论 -
Oracle 12c DBCA建库
Global Database Name是这是网络服务时的service名称,例如输入paas.io,SID自动设置为paas,之后环境变量ORACLE_SID设置为paas,就可以sqlplus登录了。数据库建完会自动启动,设置ORACL_SID为之前填写的SID,然后就可以sqlplus / as sysdba登录了。原创 2022-10-18 10:49:03 · 600 阅读 · 0 评论 -
安装 Oracle 12c
我是用同事给我的安装包:V46095-01_1of2.zip 和 V46095-01_2of2.zip。我遇到了swap空间不足的的报错,无法安装,扩展了swap空间后,可以安装了,然后点“Install”注意要执行以上两个命令,并不是解压一个另一个自动解压,结果在database目录下。进入解压后的database目录。原创 2022-10-17 16:19:12 · 671 阅读 · 0 评论 -
卸载 Oracle 19c
但是,执行完脚本后,数据文件、归档日志还没有删除,需要手动删除,除非它们放在$ORACLE_HOME里。oracle用户和相关组也没有删除,如果需要删除的话,需要手动删除。然后根据提示输入,卸载脚本所做的基本上就是:shutdown数据库、listener、然后删除$ORACLE_HOME。原创 2022-10-17 15:35:05 · 1630 阅读 · 0 评论 -
OCP手工建库(non-CDB)
完成Oracle数据库软件的安装。 设置环境变量ORACLE_SID,ORACLE_HOME。 创建密码文件例如:orapwd file=orapwORCLentries=5 format=12需要输入SYS用户密码,这个密码文件是用于将SYSDBA和SYSOPER权限赋给其它用户的,也是用于用户远程登录的。这个format=12是指12c格式的密码文件,如果不需要将这些权限赋给其它用户,可以不做这一步。创建初始化文件,初始化文件的名称需遵守特殊规则,放在$ORACLE_HOME/db...原创 2021-06-01 10:31:23 · 337 阅读 · 0 评论 -
Oracle 手工冷备、恢复
Oracle的手工冷备非常简单,就是在关库状态下,在操作系统层面,复制三大核心文件:数据文件(表空间文件)、控制文件、online redo日志。一般这三大文件都在一个目录下,那就直接复制这个目录。恢复时用这个备份目录替换损坏的目录。手工冷备适用于允许数据库停机,并且有充足时间复制文件。冷备最佳实践:一致性关库,备份全部三大核心文件。一致性关库:shutdown immediate;如果不能保证冷备时一致性关库,那么一定要备份online redo日志,恢复时也要复制online redo日原创 2022-03-15 19:29:48 · 968 阅读 · 0 评论 -
Oracle 查看告警日志、跟踪文件
tail -f /u01/app/oracle/diag/rdbms/cdb/CDB/trace/alert_CDB.log原创 2022-03-15 18:07:21 · 2000 阅读 · 0 评论 -
用 Oracle plsql developer 导出表定义
sqlplus使用一系列操作和package可以导出表的定义,不过那样太繁琐,还是用plsql developer方便,用plsql developer连接oracle(不详述),然后Tools -> Export User Objects ...原创 2022-03-23 14:23:10 · 855 阅读 · 0 评论 -
Oracle 迁移 PostgreSQL 中的OGG配置
需求场景:将整个Oracle数据库迁移到PostgreSQL,要求Oracle停机时间不超过12小时,而Oracle的数据量为200G左右,全量导出再导入PostgreSQL超过12小时。对于这种情况,应使用ora2pg做全量,配合OracleGoldenGate(OGG)做增量。方法是:导出全量数据之前,Oracle用OGG捕获增量数据,这样在导出全量数据的时间段内的增量数据也被捕获下来,然后向PG导入全量数据,再用OGG向PG同步增量数据。这个过程中,会有一部分增量数据和全量数据重叠,但OGG可原创 2022-03-30 11:34:49 · 1776 阅读 · 0 评论 -
Oracle 实例恢复与备份恢复的区别
这里要区分两种恢复:1. 实例恢复,是指Oracle因为软硬件故障,再次启动时的恢复。根据文件损坏的情况,实例恢复也许可以自动进行,例如自动执行没有应用的redo日志,也许无法自动恢复,必须人工干预。2. 备份恢复,是指主动保存某一时刻,数据库全部数据,当数据完全损坏时,使用备份还原到之前的数据库状态,这种情况配合归档日志效果更好。...原创 2022-03-15 18:14:04 · 320 阅读 · 0 评论 -
OCP Oracle手工创建CDB(多租户)数据库
完成Oracle数据库软件的安装。 设置环境变量ORACLE_SID,ORACLE_HOME。 创建密码文件 例如:orapwd file=orapwCDBentries=5 format=12需要输入SYS用户密码,这个密码文件是用于将SYSDBA和SYSOPER权限赋给其它用户的,也是用于用户远程登录的。这个format=12是指12c格式的密码文件,如果不需要将这些权限赋给其它用户,可以不做这一步。...原创 2021-06-01 11:23:19 · 806 阅读 · 0 评论 -
ora2pg 导出Oracle数据
当要将 Oracle 中的数据迁移到 PG中时,我们选择 ora2pg,经过实测,ora2pg导出和转换Oracle的数据,效果是很好的,如果配置适当,速度很快,也没有错误。但是,我们不用ora2pg导出Oracle的表定义,或者其它对象的定义,因为不太好控制。用ora2pg导出Oracle表数据时,每个表的数据导出为一个文件。安装:ora2pg是用perl编写的开源软件,我们使用编译安装的方式(难以制作可移植的perl+ora2pg二进制安装包),以root用户编译安装。sudo ..原创 2022-03-30 15:36:07 · 2005 阅读 · 2 评论 -
Oracle 查询连接的客户端,杀掉会话
主要是查 v$session,我一般用这个SQL:select username, machine, program from v$session原创 2021-12-21 15:19:23 · 1166 阅读 · 0 评论 -
Oracle 实例和数据库的区别
数据库是指一堆存放在操作系统上的文件,是静态的。实例是指运行的数据库的一些进程和内存区域,是动态的。database: data file 、 control file 、 redolog fileinstance : SGA + PGA + backgroud process,an instance access a databaseoracle server : database + instance删除数据库并不是删除实例。listener是与实例对应,而不是与数据库对应。.原创 2022-03-15 18:05:49 · 772 阅读 · 0 评论 -
Oracle打印表的DDL
使用DBMS_METADATA这个包可以打印表的DDL,但是并没显示与表相关的索引、外键、约束的定义!?原创 2021-12-21 15:14:40 · 668 阅读 · 0 评论 -
OGG Replicat 指定应用点 rba
OGG目标端开启Replicat时可以指定Trail文件的位置:alter replpg, extseqno 0, extrba 0extseqno 表示Trail文件的编号extrba 表示Trail文件内的偏移但是有时候指定的extrba 位置报错,因为不在事务的分界点上,此时就要查看,Trail文件,使用logdump命令:replicat指定seqno和rba时报错:OGG-02191 Incompatible record 101 in /mnt/disk01/ogg-f.原创 2022-01-28 17:31:17 · 2192 阅读 · 0 评论 -
Oracle的SCN和LSN
这两个概念我以前有混淆和困惑,许多网上的文章看起来说了很多也没讲清楚,多端寡要,简单事情讲复杂。直到看了这个问答帖子:Log Sequence Number vs System Change Number首先,SCN和LSN是不相干的两个概念,SCN是system change number,是数据库变更的一个指标,每个事务提交,每个对数据库改变(创建删除修改表、索引、约束、表空间)都会导致SCN的改变,如果两个复制的数据库当前SCN相同,那它们就相同了。它对应PostgreSQL的LSN。原创 2022-01-27 16:20:43 · 936 阅读 · 0 评论 -
OCP Oracle全球化与字符集
1. Oracle服务器端在创建数据库时指定CHARACTOR SET(NLS_CHARACTORSET) 和 NATIONAL CHARATOR SET(NLS_NCHAR_CHARACTORSET)默认char以NLS_CHARACTORSET编码,nchar以NLS_NCHAR_CHARACTORSET编码,还有一个重要参数:db_block_size,这些设置创建数据库后就不能改了。但是具体到某个表的某个char列,是否可以转为别的编码呢?也许可以?2. 当Oracle客户端,如sqlplus与原创 2021-06-11 11:20:07 · 934 阅读 · 1 评论 -
Oracle 统计数据库占用磁盘
所有表空间的大小,比真实数据量要大:select sum(bytes)/1024/1024/1024 GB from dba_data_files;数据文件的大小,比数据量大,接近数据量:select sum(bytes)/1024/1024/1024 GB from dba_segments;原创 2022-03-10 16:03:03 · 993 阅读 · 0 评论 -
Oracle 到PG迁移相关记录
Oracle 的VARCHAR2字符编码是:NLS_CHARACTERSET = ZHS16GBKNVARCHAR2字符编码是:NLS_NCHAR_CHARACTERSET =AL16UTF16也就是说用了GBK和UNICODE两种字符集,但是从客户端读取的时候,Oracle应该可以自动转为UTF8,(CHAR类型一定是和字符编码绑定的)Oracle,PG的number,numeric的第一个数字是precision是有效数字,scale是小数点后的位数。获得表的所有列名、列类型 ..原创 2022-03-15 14:11:07 · 907 阅读 · 0 评论 -
OCP 创建可插拔数据库PDB
创建可插拔数据库PDB有四中方法:从PDB$SEED创建PDB 从一个已经创建好的PDB克隆一个 克隆非容器数据库或远程PDB 插入一个以前拔出的PDB1. 从PDB$SEED创建,这也算是从种子PDB克隆,创建CDB时也会创建一个种子容器,就是为了用来创建PDB的。从种子创PDB很简单,只要一条建库SQL就可以了:create pluggable database pdb1admin user pdb1admin identified by 123456 ROLES = (db原创 2021-06-12 00:02:39 · 386 阅读 · 0 评论 -
Oracle 参数和pfile、spfile
pfile是文本文件,而spfile是二进制格式,spfile相对于pfile主要是多了文件头。手动创建数据库只能先使用pfile。pfile – paremater file,older way [ not recommended by oracle ]。存放位置:$ORACLE_HOME/dbs/init[SID].ora where [SID] – is the name of the instance。RMAN不能备份,可以直接创建 create pfile=‘C:\ora\pfile\init.原创 2021-06-21 10:13:24 · 1170 阅读 · 0 评论