Zero Downtime Upgrade of Oracle 10g to Oracle 11g Using GoldenGate — 3

Zero Downtime Upgrade of Oracle 10g to Oracle 11g Using GoldenGate — 3

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

DDL Setup Steps

SQL> grant execute on utl_file to ggs;

Grant succeeded.

 

Create GLOBALS file

[oracle@zwc ~]$ cd /ggs/
[oracle@zwc ggs]$ cat GLOBALS 
GGSCHEMA GGS

 

run marker_setup.sql

[oracle@zwc ggs]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 – Production on Fri Jun 6 18:56:32 2014

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 – 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> @marker_setup.sql

Marker setup script

You will be prompted for the name of a schema for the Oracle GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter Oracle GoldenGate schema name:ggs

Marker setup table script complete, running verification script…
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GGS

MARKER TABLE
——————————-
OK

MARKER SEQUENCE
——————————-
OK

Script complete.

 

run ddl_setup.sql

SQL> alter system set recyclebin=off;

System altered.

SQL> create tablespace ggs datafile ‘/u01/app/oracle/oradata/zwc/ggs01.dbf’ size 100M autoextend on;

Tablespace created.

SQL> 
SQL> alter user ggs default tablespace ggs;

User altered.

SQL> @ddl_setup.sql

Oracle GoldenGate DDL Replication setup script

Verifying that current user has privileges to install DDL Replication…

You will be prompted for the name of a schema for the Oracle GoldenGate database objects.
NOTE: For an Oracle 10g source, the system recycle bin must be disabled. For Oracle 11g and later, it can be enabled.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter Oracle GoldenGate schema name:ggs

Working, please wait …
Spooling to file ddl_setup_spool.txt

Checking for sessions that are holding locks on Oracle Golden Gate metadata tables …

Check complete.

Using GGS as a Oracle GoldenGate schema name.

Working, please wait …

DDL replication setup script complete, running verification script…
Please enter the name of a schema for the GoldenGate database objects:
Setting schema name to GGS

CLEAR_TRACE STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

CREATE_TRACE STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

TRACE_PUT_LINE STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

INITIAL_SETUP STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

DDLVERSIONSPECIFIC PACKAGE STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

DDLREPLICATION PACKAGE STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

DDLREPLICATION PACKAGE BODY STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

DDL IGNORE TABLE
———————————–
OK

DDL IGNORE LOG TABLE
———————————–
OK

DDLAUX  PACKAGE STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

DDLAUX PACKAGE BODY STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

SYS.DDLCTXINFO  PACKAGE STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

SYS.DDLCTXINFO  PACKAGE BODY STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

DDL HISTORY TABLE
———————————–
OK

DDL HISTORY TABLE(1)
———————————–
OK

DDL DUMP TABLES
———————————–
OK

DDL DUMP COLUMNS
———————————–
OK

DDL DUMP LOG GROUPS
———————————–
OK

DDL DUMP PARTITIONS
———————————–
OK

DDL DUMP PRIMARY KEYS
———————————–
OK

DDL SEQUENCE
———————————–
OK

GGS_TEMP_COLS
———————————–
OK

GGS_TEMP_UK
———————————–
OK

DDL TRIGGER CODE STATUS:

Line/pos             Error
——————– —————————————————————–
No errors            No errors

DDL TRIGGER INSTALL STATUS
———————————–
OK

DDL TRIGGER RUNNING STATUS
———————————————————————-
ENABLED

STAYMETADATA IN TRIGGER
———————————————————————-
OFF

DDL TRIGGER SQL TRACING
———————————————————————-
0

DDL TRIGGER TRACE LEVEL
———————————————————————-
0

LOCATION OF DDL TRACE FILE
————————————————————————————————————————
/u01/app/oracle/admin/zwc/udump/ggs_ddl_trace.log

Analyzing installation status…

STATUS OF DDL REPLICATION
————————————————————————————————————————
SUCCESSFUL installation of DDL Replication software components

Script complete.

 

run role_setup.sql

SQL> @role_setup.sql

GGS Role setup script

This script will drop and recreate the role GGS_GGSUSER_ROLE
To use a different role name, quit this script and then edit the params.sql script to change the gg_role parameter to the preferred name. (Do not run the script.)

You will be prompted for the name of a schema for the GoldenGate database objects.
NOTE: The schema must be created prior to running this script.
NOTE: Stop all DDL replication before starting this installation.

Enter GoldenGate schema name:ggs
Wrote file role_setup_set.txt

PL/SQL procedure successfully completed.

Role setup script complete

Grant this role to each user assigned to the Extract, GGSCI, and Manager processes, by using the following SQL command:

GRANT GGS_GGSUSER_ROLE TO <loggedUser>

where <loggedUser> is the user assigned to the GoldenGate processes.

SQL> grant ggs_ggsuser_role to ggs;

Grant succeeded.

 

run ddl_enable.sql

SQL> @ddl_enable.sql

Trigger altered.

 

Run ddl_pin.sql to improve the performance of DDL trigger.In order to run this,make sure dbms_shared_pool package is installed. If not then install that package first,which can be installed by running following script.

SQL> @?/rdbms/admin/dbmspool.sql

Package created.

Grant succeeded.

View created.

Package body created.

 

run ddl_pin.sql with “ggs” as argument

SQL> @ddl_pin.sql ggs

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

PL/SQL procedure successfully completed.

 

Create Parameter Files & Start Manager

[oracle@zwc ggs]$ ggsci 

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.6 16211226 OGGCORE_11.2.1.0.6_PLATFORMS_130418.1829_FBO
Linux, x64, 64bit (optimized), Oracle 10g on Apr 18 2013 22:43:23

Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved.

 

GGSCI (zwc) 1> view param mgr

PORT 7809
DYNAMICPORTLIST 7850-7860
LAGINFOMINUTES 0
LAGREPORTMINUTES 10
LAGCRITICALMINUTES 60
AUTORESTART EXTRACT E*, RETRIES 10, WAITMINUTES 5, RESETMINUTES 1440
AUTORESTART EXTRACT P*, RETRIES 10, WAITMINUTES 5, RESETMINUTES 1440
PURGEOLDEXTRACTS /ggs/trails/source/*, USECHECKPOINTS, MINKEEPDAYS 10, FREQUENCYMINUTES 15

GGSCI (zwc) 2> start mgr

Manager started.

GGSCI (zwc) 3> info mgr

Manager is running (IP port zwc.7809).

GGSCI (zwc) 4> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           

GGSCI (zwc) 5> 

 

Create directory for trail files

mkdir -p /ggs/trails/source

 

Create parameter file for Extract

GGSCI (zwc) 8> view param e10gdb

EXTRACT E10GDB
SETENV (ORACLE_SID=zwc)
SETENV (ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)
SETENV (NLS_LANG=”AMERICAN_AMERICA.ZHS16GBK”)
USERID ggs, PASSWORD ggs
EXTTRAIL /ggs/trails/source/aa
TRANLOGOPTIONS EXCLUDEUSER GGS
TRANLOGOPTIONS LOGRETENTION DISABLED
WARNLONGTRANS 3H CHECKINTERVAL 30m
REPORTCOUNT EVERY 10 MINUTES, RATE
DISCARDFILE /ggs/dirdef/E10GDB.dec, APPEND
DISCARDROLLOVER ON SUNDAY
GETUPDATEBEFORES
DDL INCLUDE MAPPED
DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10
TABLE HR.*;
TABLE OE.*;
TABLE PM.*;
SEQUENCE HR.*;
SEQUENCE OE.*;
SEQUENCE PM.*;

 

Create parameter filefile for Pump

GGSCI (zwc) 10> view param p10gdb

EXTRACT P10GDB
SETENV (ORACLE_SID=zwc)
SETENV (ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)
SETENV (NLS_LANG=”AMERICAN_AMERICA.ZHS16GBK”)
PASSTHRU
RMTHOST 192.168.1.61, MGRPORT 7809, &
COMPRESS, TCPBUFSIZE 262144, TCPFLUSHBYTES 262144
RMTTRAIL /ggs/trails/target/aa
STATOPTIONS REPORTFETCH
REPORTCOUNT EVERY 10 MINUTES, RATE
DISCARDFILE /ggs/dirdef/P10GDB.dec, APPEND
DISCARDROLLOVER ON SUNDAY
TABLE HR.*;
TABLE OE.*;
TABLE PM.*;
SEQUENCE HR.*;
SEQUENCE OE.*;
SEQUENCE PM.*;

 

In 10.2 database,follow there setps to make log_retention enable.

SQL> exec dbms_streams_auth.grant_admin_privilege(‘GGS’);

PL/SQL procedure successfully completed.

SQL> grant insert on system.logmnr_restart_ckpt$ to ggs;

Grant succeeded.

SQL> grant update on sys.streams$_capture_process to ggs;

Grant succeeded.

SQL> grant become user to ggs;

Grant succeeded.

 

Add following parameter in the extract.In this demo,we are not enabling log retention.

TRANLOGOPTIONS LOGRETENTION SR

 

Add Extract and Pump

[oracle@zwc diroby]$ cat add_extract.oby 
dblogin userid ggs password ggs
add extract e10gdb, tranlog, begin now
add exttrail /ggs/trails/source/aa, extract e10gdb, megabytes 100
[oracle@zwc diroby]$ cat add_pump.oby 
add extract p10gdb, exttrailsource /ggs/trails/source/aa, extseqno 0, extrba 0
add rmttrail /ggs/trails/target/aa, extract p10gdb, megabytes 100

 

[oracle@zwc ggs]$ ggsci 

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.6 16211226 OGGCORE_11.2.1.0.6_PLATFORMS_130418.1829_FBO
Linux, x64, 64bit (optimized), Oracle 10g on Apr 18 2013 22:43:23

Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved.

 

GGSCI (zwc) 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           

GGSCI (zwc) 2> obey ./diroby/add_extract.oby

GGSCI (zwc) 3> dblogin userid ggs password ggs

Successfully logged into database.

GGSCI (zwc) 4> add extract e10gdb, tranlog, begin now

EXTRACT added.

GGSCI (zwc) 5> add exttrail /ggs/trails/source/aa, extract e10gdb, megabytes 100

EXTTRAIL added.

GGSCI (zwc) 6> obey ./diroby/add_pump.oby

GGSCI (zwc) 7> add extract p10gdb, exttrailsource /ggs/trails/source/aa, extseqno 0, extrba 0

EXTRACT added.

GGSCI (zwc) 8> add rmttrail /ggs/trails/target/aa, extract p10gdb, megabytes 100

RMTTRAIL added.

GGSCI (zwc) 9> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     E10GDB      00:00:00      00:00:14    
EXTRACT     STOPPED     P10GDB      00:00:00      00:00:03    

 

Start only the extract at this point and not the pump

GGSCI (zwc) 2> start e10gdb

Sending START request to MANAGER …
EXTRACT E10GDB starting

GGSCI (zwc) 3> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     E10GDB      00:00:00      00:04:12    
EXTRACT     STOPPED     P10GDB      00:00:00      00:04:02    

GGSCI (zwc) 4> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     E10GDB      00:04:13      00:00:02  
  
EXTRACT     STOPPED     P10GDB      00:00:00      00:04:05   
 

 

Setup Sequence Replication 

Oracle GoldenGate supports Oracle Sequences replication.There are some limitations with sequence replication.

1.sequence replication in bi-directional is not supported

2.cache size,increment interval,and cycle/no-cycle settings must be identical on source and target databases

SQL> @sequence.sql
Please enter the name of a schema for the GoldenGate database objects:

ggs
Setting schema name to GGS

UPDATE_SEQUENCE STATUS:

Line/pos
——————–
Error
—————————————————————–
No errors
No errors

GETSEQFLUSH

Line/pos
——————–
Error
—————————————————————–
No errors
No errors

SEQTRACE

Line/pos
——————–
Error
—————————————————————–
No errors
No errors

REPLICATE_SEQUENCE STATUS:

Line/pos
——————–
Error
—————————————————————–
No errors
No errors

STATUS OF SEQUENCE SUPPORT
————————————————————–
SUCCESSFUL installation of Oracle Sequence Replication support
SQL> grant execute on ggs.updateSequence to ggs;

Grant succeeded.

SQL> grant execute on ggs.replicateSequence to ggs;

Grant succeeded.

SQL> alter table sys.seq$ add supplemental log data (primary key) columns;

Table altered.

 

Restart extract,flush sequence

[oracle@zwc diroby]$ cat flush_seq.oby 
flush sequence hr.*
flush sequence oe.*
flush sequence pm.*

[oracle@zwc ggs]$ ggsci 

Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.6 16211226 OGGCORE_11.2.1.0.6_PLATFORMS_130418.1829_FBO
Linux, x64, 64bit (optimized), Oracle 10g on Apr 18 2013 22:43:23

Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved.

 

GGSCI (zwc) 1> stop extract e10gdb

Sending STOP request to EXTRACT E10GDB …
Request processed.

GGSCI (zwc) 2> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     STOPPED     E10GDB      00:00:00      00:00:01    
EXTRACT     STOPPED     P10GDB      00:00:00      00:22:40    

GGSCI (zwc) 3> start extract e10gdb

Sending START request to MANAGER …
EXTRACT E10GDB starting

GGSCI (zwc) 4> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING                                           
EXTRACT     RUNNING     E10GDB      00:00:00      00:00:09    
EXTRACT     STOPPED     P10GDB      00:00:00      00:22:47    

GGSCI (zwc) 5> dblogin userid ggs password ggs
Successfully logged into database.

GGSCI (zwc) 6> obey ./diroby/flush_seq.oby

GGSCI (zwc) 7> flush sequence hr.*

Successfully flushed 3 sequence(s) hr.*
GGSCI (zwc) 8> flush sequence oe.*

Successfully flushed 1 sequence(s) oe.*
GGSCI (zwc) 9> flush sequence pm.*

ERROR: Sequence pm.* does not exist.

 

Setup Heartbeat Job

In order to start the pump,we need to make target 11g database server ready,by installing Oracle GoldenGate and starting manager.Before we do that lets setup a heartbeat job in cron.

The purpose of heartbeat job is to keep updating ggs_mon.ggs_heartbeat table,those transactions will be extracted by Oracle GoldenGate,causing extract RBA to move,and also keep record of lag time in ggs_lagtime table on the target side.

[oracle@zwc ~]$ cd /ggs
[oracle@zwc ggs]$ mkdir scripts
[oracle@zwc ggs]$ touch ggs_heartbeat.sh
[oracle@zwc ggs]$ chmod 755 ggs_heartbeat.sh 
[oracle@zwc ggs]$ cat ggs_heartbeat.sh 
#!/bin/sh
#Purpose:  To update heartbeat table for OGG monitoring
cd ${HOME}
source ${HOME}/.bash_profile > /dev/null 2>&1

echo $GG_HOME
cd $GG_HOME
DATETIME=`date`
    echo “Heartbeat for DB ${ORACLE_SID} start at ${DATETIME}…\n”
sqlplus -L -S ggs_mon/ggs_mon << EOF 2>&1
update ggs_heartbeat set ts = sysdate;
commit;
exit
EOF

 

Setup cron for this to run every minute

* * * * * /ggs/ggs_heartbeat.sh > /tmp/ggshb.log 2>&1

 

In extract e10gdb parameter file,add  following two lines,and restart extract

GGSCI (zwc) 15> view param e10gdb

EXTRACT E10GDB
SETENV (ORACLE_SID=zwc)
SETENV (ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)
SETENV (NLS_LANG=”AMERICAN_AMERICA.ZHS16GBK”)
USERID ggs, PASSWORD ggs
EXTTRAIL /ggs/trails/source/aa
TRANLOGOPTIONS EXCLUDEUSER GGS
TRANLOGOPTIONS LOGRETENTION DISABLED
WARNLONGTRANS 3H CHECKINTERVAL 30m
REPORTCOUNT EVERY 10 MINUTES, RATE
DISCARDFILE /ggs/dirdef/E10GDB.dec, APPEND
DISCARDROLLOVER ON SUNDAY
GETUPDATEBEFORES
DDL INCLUDE MAPPED
DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10
TABLE HR.*;
TABLE OE.*;
TABLE PM.*;
SEQUENCE HR.*;
SEQUENCE OE.*;
SEQUENCE PM.*;

TABLE GGS_MON.ggs_heartbeat ,
   Tokens (host = @GETENV (“GGENVIRONMENT”, “HOSTNAME”) );

 

In pump p10gdb parameter file,add following line.After editing the pump parameter file,if pump is running then stop and restart.

GGSCI (zwc) 18> view param p10gdb

EXTRACT P10GDB
SETENV (ORACLE_SID=zwc)
SETENV (ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1)
SETENV (NLS_LANG=”AMERICAN_AMERICA.ZHS16GBK”)
PASSTHRU
RMTHOST 192.168.1.61, MGRPORT 7809, &
COMPRESS, TCPBUFSIZE 262144, TCPFLUSHBYTES 262144
RMTTRAIL /ggs/trails/target/aa
STATOPTIONS REPORTFETCH
REPORTCOUNT EVERY 10 MINUTES, RATE
DISCARDFILE /ggs/dirdef/P10GDB.dec, APPEND
DISCARDROLLOVER ON SUNDAY
TABLE HR.*;
TABLE OE.*;
TABLE PM.*;
SEQUENCE HR.*;
SEQUENCE OE.*;
SEQUENCE PM.*;

TABLE GGS_MON.GGS_HEARTBEAT;

 

Also in replicat we have not created yet,but when we will create replicat parameter file,then we will add following MAP statement in it to make heartbeat work properly.

MAP ggs_mon.ggs_heartbeat, TARGET ggs_mon.ggs_lagtime,

       KEYCOLS (ID),

 INSERTALLRECORDS,

   COLMAP (USEDEFAULTS,

            id = 0,

            committime = @GETENV (“GGHEADER”, “COMMITTIMESTAMP”),

            groupname  = @GETENV (“GGENVIRONMENT”, “GROUPNAME”),

            host       = @TOKEN(“host”),

            local_insert_time = @DATENOW()

         );

 

Now if we invoke ggsci and run “info” command on extract couple of times after few intervals,we will be able see that its RBA is moving even when there is no application activity going on in the database.

GGSCI (zwc) 48> info e10gdb

EXTRACT    E10GDB    Last Started 2014-06-06 21:24   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:07 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2014-06-06 21:24:36  Seqno 11, 
RBA 12435456
                     SCN 0.778809 (778809)

GGSCI (zwc) 49> info e10gdb

EXTRACT    E10GDB    Last Started 2014-06-06 21:24   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:06 ago)
Log Read Checkpoint  Oracle Redo Logs
                     2014-06-06 21:24:54  Seqno 11,
 RBA 12436992
                     SCN 0.778815 (778815)

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117318.html原文链接:https://javaforall.net

(0)
上一篇 2022年1月7日 下午5:00
下一篇 2022年1月7日 下午6:00


相关推荐

  • 销售数据分析神器:上传表格+分析报告+图表生成!GLM

    销售数据分析神器:上传表格+分析报告+图表生成!GLM

    2026年3月12日
    3
  • 算法帝国:华尔街交易怪兽的核武器缔造史

    算法帝国:华尔街交易怪兽的核武器缔造史这是一段通俗的读物,更是一段算法交易的历史钩沉,华尔街的每个角落逐渐被算法所侵蚀,思考者,依然还是拖着额头,但却不得不接受未来的现实!1980年华尔街的黑客生涯:天时地利20世纪70年代末期,算法开始进入人们的工作,这一趋势席卷了世界各地的金融市场,标志着华尔街黑客时代已然来临。华尔街逐渐吸引了美国越来越多杰出的数学家和科学家投身于编写交易算法的工作。在布莱克·斯科尔斯统治市场之前,已经有少数工程师和科学家进入曼哈顿下城市场了,但他们大都是外来移民。麻省理工、哈佛和此类高等学府的工程楼和科学.

    2022年7月11日
    22
  • ECCV 2020 的对抗相关论文(对抗生成、对抗攻击)

    ECCV 2020 的对抗相关论文(对抗生成、对抗攻击)

    2020年11月14日
    236
  • 微信小程序 – 80个实用的微信小程序项目实例

    微信小程序 – 80个实用的微信小程序项目实例wx-gesture-lock微信小程序的手势密码WXCustomSwitch微信小程序自定义Switch组件模板WeixinAppBdNovel微信小程序demo:百度小说搜索shitoujiandaobu小程序:石头剪刀布(附代码说明)audiodemo微信小程序开发之视频播放器Video弹幕弹幕颜色自定义star微信小程序开发之五星评分switchCity微信小程序开发之城市选择器城市切换huadong_del微信小程序滑动删除效果jianhang_menu

    2022年6月12日
    41
  • JavaScript四舍五入并保留两位小数

    JavaScript四舍五入并保留两位小数在 JavaScript 中 有一个问题一直被没有很好地解决 就是小数点保留指定的位数 也就是我们通常说的 Math Round 函数 首先 JavaScript 有自带的 Math Round 函数 但是返回的是个整数 无法精确到小数点后 Number toFixed 方法 能保留小数点后面的指定位数 但如果执行 2 1 toFixed 2 的话 会返回 2 10 而不是我们期待的 2 1 所以 这个方法也不太可取

    2026年3月18日
    2
  • 可控硅工作原理及参数详解图_晶闸管和可控硅有什么区别

    可控硅工作原理及参数详解图_晶闸管和可控硅有什么区别原创:JackieLong转自:https://www.cnblogs.com/sunshine-jackie/p/8137469.html可控硅全称“可控硅整流元件”(SiliconControlledRectifier),简写为SCR,别名晶体闸流管(Thyristor),是一种具有三个PN结、四层结构的大功率半导体器件。可控硅体积小、结构简单、功能强,可起到变频、整流、逆变、…

    2025年8月19日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号