RAC 数据库的全库恢复_rac db restore-程序员宅基地

技术标签: RAC  RMAN  

RMAN 下的RAC数据库的恢复测试
RDBMS 11.2.0.4 。 节点 host02,host03,对应的instance分别是racdb2,racdb3. 


1 创建测试用的表,以验证恢复前后数据一样

SYS@racdb3>create table test20180414 (id date);

Table created.

SYS@racdb3>alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';

Session altered.

SYS@racdb3>insert into test20180414 values(sysdate);

1 row created.

SYS@racdb3>commit;

Commit complete.

SYS@racdb3>select * from test20180414;

ID
-------------------
2018-04-14 16:32:16

SYS@racdb3>

SYS@racdb2>show parameter spfile

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 +DATA/racdb/spfileracdb.ora

SYS@racdb2>create pfile='/home/oracle/pfile20180414' from spfile;     

File created.

SYS@racdb2>

2 准备备份脚本

run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
allocate channel c4 type disk;
backup as compressed backupset database format '/home/oracle/bakracdb/fulldb_%d_%T_%u_%p_%c';
sql 'alter system archive log current';
backup as compressed backupset  format '/home/oracle/bakracdb/arc_%e_%h_%d_%T_%u_%p_%c' archivelog all;
backup current controlfile format '/home/oracle/bakracdb/control_%d_%T_%u_%p_%c';
backup spfile format '/home/oracle/bakracdb/spfile_%d_%T_%u_%p_%c';
release channel c1;
release channel c2;
release channel c3;
release channel c4;
}
3 模拟数据库损坏。使用dbca 将数据库删除。删除后,crsctl status resource -t 查看,没有发现racdb数据库的相关信息。


4 连接到任意一个节点上,启动到nomount状态

export ORACLE_SID=racdb3
rman target /
startup nomount
5 从备份中恢复spfile。并启动到nomount状态

注意,这里先恢复成pfile,用pfile启动,数据库全部恢复完毕后,再重新创建spfile(RAC下的spfile和单机有些不一样)

restore spfile to pfile '/home/oracle/bakracdb/pfile20180414' from '/home/oracle/bakracdb/spfile_RACDB_20180414_24t0b3jj_1_1';

--  虽然直接恢复spfile到ASM磁盘上,也是可以的。不过需要在两个节点上的$ORACLE_HOME/dbs下的init<SID>.ora文件夹内spfile指向ASM上的spfile位置。

RMAN> restore spfile to '+DATA/racdb/spfileracdb.ora' from '/home/oracle/bakracdb/spfile_RACDB_20180414_24t0b3jj_1_1';

Starting restore at 14-APR-18
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=25 device type=DISK

channel ORA_DISK_1: restoring spfile from AUTOBACKUP /home/oracle/bakracdb/spfile_RACDB_20180414_24t0b3jj_1_1
channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
Finished restore at 14-APR-18

RMAN> 
RMAN> restore spfile to pfile '/home/oracle/bakracdb/pfile20180414' from '/home/oracle/bakracdb/spfile_RACDB_20180414_24t0b3jj_1_1';

Starting restore at 14-APR-18
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=25 device type=DISK

channel ORA_DISK_1: restoring spfile from AUTOBACKUP /home/oracle/bakracdb/spfile_RACDB_20180414_24t0b3jj_1_1
channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete
Finished restore at 14-APR-18

RMAN> 

@>conn / as sysdba
Connected to an idle instance.
SYS@racdb3>startup nomount pfile='/home/oracle/bakracdb/pfile20180414'

6 还原控制文件

sql "alter session set nls_date_format=''YYYY-MM-DD HH24:MI:SS''";  -- 好像没有起作用
restore controlfile from '/home/oracle/bakracdb/control_RACDB_20180414_23t0b3j8_1_1';  
alter database mount;

RMAN> sql "alter session set nls_date_format=''YYYY-MM-DD HH24:MI:SS''";

sql statement: alter session set nls_date_format=''YYYY-MM-DD HH24:MI:SS''

RMAN> restore controlfile from '/home/oracle/bakracdb/control_RACDB_20180414_23t0b3j8_1_1';

Starting restore at 14-APR-18
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=37 instance=racdb3 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:03
output file name=+DATA/racdb/control01.ctl
output file name=+DATA/racdb/control02.ctl
Finished restore at 14-APR-18

RMAN> sql 'alter database mount';

7 进行restore 

RMAN> restore database;

Starting restore at 14-APR-18
released channel: ORA_DISK_1
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=37 instance=racdb3 device type=DISK

channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00003 to +DATA/racdb/undotbs01.dbf
channel ORA_DISK_1: restoring datafile 00006 to +DATA/racdb/undotbs02.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/bakracdb/fulldb_RACDB_20180414_1pt0b3bs_1_1
channel ORA_DISK_1: piece handle=/home/oracle/bakracdb/fulldb_RACDB_20180414_1pt0b3bs_1_1 tag=TAG20180414T164025
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:04
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00004 to +DATA/racdb/users01.dbf
channel ORA_DISK_1: restoring datafile 00005 to +DATA/racdb/example01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/bakracdb/fulldb_RACDB_20180414_1ot0b3br_1_1
channel ORA_DISK_1: piece handle=/home/oracle/bakracdb/fulldb_RACDB_20180414_1ot0b3br_1_1 tag=TAG20180414T164025
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:15
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00001 to +DATA/racdb/system01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/bakracdb/fulldb_RACDB_20180414_1mt0b3bq_1_1
channel ORA_DISK_1: piece handle=/home/oracle/bakracdb/fulldb_RACDB_20180414_1mt0b3bq_1_1 tag=TAG20180414T164025
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:01:05
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00002 to +DATA/racdb/sysaux01.dbf
channel ORA_DISK_1: restoring datafile 00007 to +DATA/racdb/datafile/abc.448.966705497
channel ORA_DISK_1: reading from backup piece /home/oracle/bakracdb/fulldb_RACDB_20180414_1nt0b3bq_1_1
channel ORA_DISK_1: piece handle=/home/oracle/bakracdb/fulldb_RACDB_20180414_1nt0b3bq_1_1 tag=TAG20180414T164025
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:35
Finished restore at 14-APR-18

RMAN> recover database   

8 进行recover 

RMAN> recover database;      

Starting recover at 14-APR-18
using channel ORA_DISK_1

starting media recovery

archived log for thread 1 with sequence 224 is already on disk as file +DATA/racdb/archivelog/2018_04_14/thread_1_seq_224.758.973442535
archived log for thread 1 with sequence 225 is already on disk as file +DATA/racdb/archivelog/2018_04_14/thread_1_seq_225.759.973442541
archived log for thread 2 with sequence 263 is already on disk as file +DATA/racdb/archivelog/2018_04_14/thread_2_seq_263.757.973442533
archived log for thread 2 with sequence 264 is already on disk as file +DATA/racdb/archivelog/2018_04_14/thread_2_seq_264.760.973442543
archived log file name=+DATA/racdb/archivelog/2018_04_14/thread_1_seq_224.758.973442535 thread=1 sequence=224
archived log file name=+DATA/racdb/archivelog/2018_04_14/thread_2_seq_263.757.973442533 thread=2 sequence=263
archived log file name=+DATA/racdb/archivelog/2018_04_14/thread_2_seq_264.760.973442543 thread=2 sequence=264
archived log file name=+DATA/racdb/archivelog/2018_04_14/thread_1_seq_225.759.973442541 thread=1 sequence=225
archived log file name=+DATA/racdb/archivelog/2018_04_14/thread_1_seq_226.762.973442959 thread=1 sequence=226
archived log file name=+DATA/racdb/archivelog/2018_04_14/thread_2_seq_265.761.973442807 thread=2 sequence=265
archived log file name=+DATA/racdb/archivelog/2018_04_14/thread_1_seq_227.763.973442961 thread=1 sequence=227
archived log file name=+DATA/racdb/archivelog/2018_04_14/thread_2_seq_266.765.973442963 thread=2 sequence=266
archived log file name=+DATA/racdb/archivelog/2018_04_14/thread_1_seq_228.764.973442963 thread=1 sequence=228
unable to find archived log
archived log thread=2 sequence=267
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 04/14/2018 18:56:26
RMAN-06054: media recovery requesting unknown archived log for thread 2 with sequence 267 and starting SCN of 2637058
RMAN-11003: failure during parse/execution of SQL statement: alter database recover continue
ORA-00279: change 2637058 generated at 04/14/2018 16:49:23 needed for thread 2
ORA-00289: suggestion : +DATA
ORA-00280: change 2637058 for thread 2 is in sequence #267
ORA-00278: log file '+DATA/racdb/archivelog/2018_04_14/thread_2_seq_266.765.973442963' no longer needed for this recovery

9 使用open resetlogs打开库

SYS@racdb3>alter database open resetlogs;

Database altered.

SYS@racdb3>

10 创建spfile,在节点上创建initracdb3.ora 。两个节点上都需要有init<sid>.ora 

create spfile='+DATA/racdb/spfileracdb.ora' from pfile='/home/oracle/bakracdb/pfile20180414'

[oracle@host03 dbs]$ cat initracdb3.ora 
SPFILE='+DATA/racdb/spfileracdb.ora'
[oracle@host03 dbs]$ 

[oracle@host02 dbs]$ cat initracdb2.ora 
SPFILE='+DATA/racdb/spfileracdb.ora'
[oracle@host02 dbs]$ 

11  数据验证

SYS@racdb3>select * from test20180414;

ID
-------------------
2018-04-14 16:32:16

SYS@racdb3>archive log list
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       +DATA
Oldest online log sequence     1
Next log sequence to archive   2
Current log sequence	       2
SYS@racdb3>

SYS@racdb2>select * from test20180414;

ID
-------------------
2018-04-14 16:32:16

SYS@racdb2>archive log list
Database log mode	       Archive Mode
Automatic archival	       Enabled
Archive destination	       +DATA
Oldest online log sequence     4
Next log sequence to archive   5
Current log sequence	       5
SYS@racdb2>
数据库的恢复,到这里就结束了。数据是没有问题的。下面的过程是,处理数据库和GI的一些事项,比如需要把数据库注册到GI中。以及TAF的service等等。




-----------------
 注册的数据库到集群中。

这个时候,使用命令crsctl status resource -t 命令,是查看不到racdb这个数据库的信息的

[grid@host03 ~]$ crsctl status resource -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       host02                                       
               ONLINE  ONLINE       host03                                       
ora.LISTENER.lsnr
               ONLINE  ONLINE       host02                                       
               ONLINE  ONLINE       host03                                       
ora.OCR.dg
               ONLINE  ONLINE       host02                                       
               ONLINE  ONLINE       host03                                       
ora.asm
               ONLINE  ONLINE       host02                   Started             
               ONLINE  ONLINE       host03                   Started             
ora.gsd
               OFFLINE OFFLINE      host02                                       
               OFFLINE OFFLINE      host03                                       
ora.net1.network
               ONLINE  ONLINE       host02                                       
               ONLINE  ONLINE       host03                                       
ora.ons
               ONLINE  ONLINE       host02                                       
               ONLINE  ONLINE       host03                                       
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       host02                                       
ora.cvu
      1        OFFLINE OFFLINE                                                   
ora.host02.vip
      1        ONLINE  ONLINE       host02                                       
ora.host03.vip
      1        ONLINE  ONLINE       host03                                       
ora.oc4j
      1        ONLINE  ONLINE       host02                                       
ora.scan1.vip
      1        ONLINE  ONLINE       host02                                       
ora.test.db
      1        OFFLINE OFFLINE                               Instance Shutdown   
      2        OFFLINE OFFLINE                                              

同样,使用 srvctl config database 命令也查看不到数据库信息 

[grid@host03 ~]$ srvctl config database -d racdb
PRCD-1120 : The resource for database racdb could not be found.
PRCR-1001 : Resource ora.racdb.db does not exist
[grid@host03 ~]$ 

使用命令添加数据库到集群中 

srvctl add database -d racdb -o /u01/app/oracle/product/11.2.0/db_1 -c RAC -s open 

[grid@host03 ~]$ srvctl add database -d racdb -o /u01/app/oracle/product/11.2.0/db_1 -c RAC -s open
PRCS-1007 : Server pool racdb already exists
PRCR-1086 : server pool ora.racdb is already registered

这是因为资源中已经有ora.racdb这个server pool,需要删除掉 

[grid@host03 ~]$ crsctl delete serverpool ora.racdb
CRS-2557: Server pool 'ora.racdb' cannot be unregistered as it is referenced by server pool 'ora.racdb_service_taf'
CRS-4000: Command Delete failed, or completed with errors.
[grid@host03 ~]$ 

上面的错误提示,提示有个相关的server pool,那么将这个server pool 'ora.racdb_service_taf' 先删除掉,再删除ora.racdb。可以看到可以删除了

[grid@host03 ~]$ crsctl delete serverpool ora.racdb_service_taf
[grid@host03 ~]$ crsctl delete serverpool ora.racdb
[grid@host03 ~]$ 

添加数据库和instance

[oracle@host03 ~]$ srvctl add database -d racdb -o /u01/app/oracle/product/11.2.0/db_1 -c RAC -s open
[oracle@host03 ~]$ srvctl add instance -d racdb -i racdb2 -n host02
[oracle@host03 ~]$ srvctl add instance -d racdb -i racdb3 -n host03

-- 修改数据库随着集群自动启动

crsctl modify resource ora.racdb.db -attr "AUTO_START=always" 

--- reboot 启动测试 

[grid@host02 ~]$ crsctl status resource -t
--------------------------------------------------------------------------------
NAME           TARGET  STATE        SERVER                   STATE_DETAILS       
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
               ONLINE  ONLINE       host02                                       
               ONLINE  ONLINE       host03                                       
ora.LISTENER.lsnr
               ONLINE  ONLINE       host02                                       
               ONLINE  ONLINE       host03                                       
ora.OCR.dg
               ONLINE  ONLINE       host02                                       
               ONLINE  ONLINE       host03                                       
ora.asm
               ONLINE  ONLINE       host02                   Started             
               ONLINE  ONLINE       host03                   Started             
ora.gsd
               OFFLINE OFFLINE      host02                                       
               OFFLINE OFFLINE      host03                                       
ora.net1.network
               ONLINE  ONLINE       host02                                       
               ONLINE  ONLINE       host03                                       
ora.ons
               ONLINE  ONLINE       host02                                       
               ONLINE  ONLINE       host03                                       
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
      1        ONLINE  ONLINE       host02                                       
ora.cvu
      1        OFFLINE OFFLINE                                                   
ora.host02.vip
      1        ONLINE  ONLINE       host02                                       
ora.host03.vip
      1        ONLINE  ONLINE       host03                                       
ora.oc4j
      1        ONLINE  ONLINE       host02                                       
ora.racdb.db
      1        ONLINE  ONLINE       host03                   Open                
      2        ONLINE  ONLINE       host02                   Open                
ora.scan1.vip
      1        ONLINE  ONLINE       host02                                       
ora.test.db
      1        OFFLINE OFFLINE                               Instance Shutdown   
      2        OFFLINE OFFLINE                               Instance Shutdown   
[grid@host02 ~]$ 

-- 检查TAF设置 。

[oracle@host03 ~]$ srvctl add service -d racdb -s test_taf -r "racdb3,racdb2" -e SELECT -m BASIC -w 5 -z 3
[oracle@host03 ~]$ srvctl start service -d racdb -s test_taf


SQL> conn system/oracle@test_taf
已连接。
SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------------------------
racdb3

SQL> /

INSTANCE_NAME
--------------------------------
racdb2

SQL> /

INSTANCE_NAME
--------------------------------
racdb3

SQL> /

INSTANCE_NAME
--------------------------------
racdb2

SQL>


---
总结
1 rac全库的恢复,和单机恢复的思路一样
2 rac全库恢复完毕后,要考虑把数据库和instance添加到集群中去,这点和单机不一样。使用dbca是无法添加instance到集群的。必须通过命令添加。

3 在集群启动的情况下,可以通过RMAN将相关的文件(比如控制文件、数据文件、SPFILE)恢复到ASM磁盘组上。



End 。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xxzhaobb/article/details/79944061

智能推荐

天猫xpath_xpath 天猫-程序员宅基地

文章浏览阅读121次。### tianmao# 价格//*[@id="J_ItemList"]/div/div/p[1]/em/text()//*[@id="J_ItemList"]/div/div/p[3]/span[1]/em//*[@id="J_ItemList"]/div/@data-id//*[@id="J_ItemList"]/div/div/p[2]/a/@hr..._xpath 天猫

基于springboot校园社团信息管理系统设计与实现—开题-程序员宅基地

文章浏览阅读860次,点赞28次,收藏22次。现如今大学社团各式各样的都有,学校对社团的管理手段处于落后阶段,以致于对社团的未来发展以及社团的活动开展都有一定的影响,导致大学校内社团不能健康的发展,所以有必要建设一个大学社团管理系统来帮助学校管理校内社团,给学校提供一个管理社团更有效的一个手段,通过这样的系统,可以做到对信息的规范管理、科学统计和快速查询,从而减少了管理方面的工作量。在中国对于校园社团的网站其实是很缺少的,校园社团信息管理系统为学校提供一个监管大学社团的平台,为社团提供一个在线收纳社员的平台,为学生提供一个在线选择社团的平台。

MySql(十七)_explain select * from table where type=1。-程序员宅基地

文章浏览阅读164次。MySql164.数据库的三范式是什么?第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。第二范式:要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。第三范式:任何非主属性不依赖于其它非主属性。165. 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?表类型如果是 MyISAM ,那 id 就是 8。表类型如果是 InnoDB,那 id 就是 6。Inno_explain select * from table where type=1。

【架构实践】架构解耦 Decoupling Architecture_decoupled architecture:-程序员宅基地

文章浏览阅读2.5w次。另一方面,随着对数字化转型和敏捷性的更加关注,项目需要比以前更快地交付,但仍需要与更大的核心系统相互连接,这些系统的变化速度比其数字系统要慢得多。在这种情况下,一个人会有重复的功能(使用上述三种模式中的任何一种),但不是将功能流量定向到特定系统,而是将特定流量或条件流量定向到一个系统,并将剩余流量定向到另一个系统.微服务由不同的团队构建,并依赖于它们之间的交互。因此,这意味着团队之间需要非常密切的合作,以确保规范的设计和构建是正确的,不仅是在设计期间,而且在以后进行更改时也是如此,以避免互操作性问题。_decoupled architecture:

linux prel安装_【perl】Linux中perl模块的安装-程序员宅基地

文章浏览阅读233次。(以安装DBI和DBD::mysql为例)方法一:cpan(这个是最简单的方法,首次使用时请按照方法二安装CPAN(v2.05)这个模块)>cpan>installDBI#使用该命令,DBI安装成功,但是DBD-mysql没有安装成功,报错如下methods to determineprerequisitesFailed during this command:CAPTTOFU/DBD..._[dbd-mysql-4.023] 错误 1

oracle 操作树大全,在Oracle中的树形操作-程序员宅基地

文章浏览阅读516次。在Oracle中的树形操作在Oracle中的树形操作1.取子节点及路径(正树):select t.id ,t.code, t.name ,t.pid,SYS_CONNECT_BY_PATH(t.id,'.')||'.' as IdPathfrom tas_catalog t--where id!=110start with id=110connect by pid = prior idorder..._oracle树轴

随便推点

微信小程序 tabbar onshow里方法不触发问题_苹果 tabs onshow 事件未触发-程序员宅基地

文章浏览阅读1w次。 不知道是不是tabbar有这种情况,在tabbar里定义类似不会被触发。检查了一圈发现, 好像只有在onload里引用过的同名方法,才会在onshow里被触发到。 不知道具体原因是不是这个, 反正我这么做了之后onshow里是可以调用到的了。。..._苹果 tabs onshow 事件未触发

补码的乘法运算-程序员宅基地

文章浏览阅读168次。补码的乘法运算

安装torch,torch-scatter,torch-sparse,torch-cluster等_torch_scatter下载-程序员宅基地

文章浏览阅读911次。安装以上包版本必须对应,不然会报错本人python 3.8,cpu通过参考各方大神,最后成功安装1)torch1.4,对应的torchvision版本是0.5.0对应版本参考:https://blog.csdn.net/AugustMe/article/details/109028989torchvision下载链接:https://pypi.org/project/torchvision/0.5.0/#filestorch1.4下载链接:https://download.pytorch.._torch_scatter下载

[Python标准库]decimal—定点数和浮点数的数学运算-程序员宅基地

文章浏览阅读1.1k次。转自:http://blog.csdn.net/dapeng0802/article/details/50526365[Python标准库]decimal——定点数和浮点数的数学运算 作用:使用定点数和浮点数的小数运算。 Python 版本:2.4 及以后版本 decimal 模块实现了定点和浮点算术运算符,使用的是大多数人所熟悉的模型,而不是程序员熟悉的...

5 个最好的免费 PDF 编辑器,可让您编辑和保存 PDF 文件_奇客pdf-程序员宅基地

文章浏览阅读1.3k次,点赞28次,收藏29次。免费的 PDF 查看器很容易找到。除了 Adob​​e Acrobat Reader 之外,许多程序都可以显示 PDF 文件,但找到一个好的免费 PDF 编辑器(允许您编辑和保存现有 PDF 的程序)是一个更具挑战性的提议。问题在于,几乎所有能够编辑 PDF 文件的程序都试图向您推销附加功能,无论是按月订阅还是免费提供基本功能但对高级功能收费的“免费增值”模式。_奇客pdf

PostgreSQL 时区问题_postgreql to_char 时区-程序员宅基地

文章浏览阅读3.7k次,点赞3次,收藏2次。PostgreSQL时区SQL 标准通过"+"或者"-"是否存在来区分timestamp without time zone和timestamp with time zone文本。因此,TIMESTAMP '2021-03-06 18:02:00'是一个timestamp without time zone,而TIMESTAMP '2021-03-06 18:02:00 +08'是一个timestamp with time zone。+08:表示 时区与全球统一时间 ..._postgreql to_char 时区