源端数据库配置 [root@king01 ~]# su - oracle [oracle@king01 ~]$ sqlplus / as sysdba SQL> create tablespace goldengate datafile '/home/oracle/oradata/king/ogg01.dbf' size 1024M; Tablespace created. SQL> create user ggs identified by ggs default tablespace goldengate; User created. SQL> grant dba to ggs; Grant succeeded. SQL> select log_mode from v$database; LOG_MODE ------------------------------------ ARCHIVELOG SQL> alter database force logging; Database altered. SQL> select force_logging from v$database; FORCE_LOGGING ------------------------------ YES SQL> alter database add supplemental log data; Database altered. SQL> col supplemental_log_data_min for a30 SQL> select supplemental_log_data_min from v$database; SUPPLEMENTAL_LOG_DATA_MIN ------------------------------ YES SQL> alter system set enable_goldengate_replication=true; SQL> alter system archive log current; 源端安装OGG [oracle@king01 ~]$ vi .bash_profile export OGG_HOME=/home/ogg export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export PATH=$OGG_HOME:$PATH [oracle@king01 ~]$ source .bash_profile [oracle@king01 ~]$ mkdir -p /home/ogg [oracle@king01 ~]$ unzip fbo_ggs_Linux_x64_shiphome.zip [oracle@king01 ~]$ cd fbo_ggs_Linux_x64_shiphome/Disk1 [oracle@king01 Disk1]$ ./runInstaller [oracle@king01 ~]$ cd /home/ogg [oracle@king01 ogg]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401_FBO Linux, x64, 64bit (optimized), Oracle 11g on Dec 12 2015 00:54:38 Operating system character set identified as UTF-8. Copyright (C) 1995, 2015, Oracle and/or its affiliates. All rights reserved. GGSCI (king01) 1> create subdirs Creating subdirectories under current directory /home/ogg Parameter files /home/ogg/dirprm: created Report files /home/ogg/dirrpt: created Checkpoint files /home/ogg/dirchk: created Process status files /home/ogg/dirpcs: created SQL script files /home/ogg/dirsql: created Database definitions files /home/ogg/dirdef: created Extract data files /home/ogg/dirdat: created Temporary files /home/ogg/dirtmp: created Credential store files /home/ogg/dircrd: created Masterkey wallet files /home/ogg/dirwlt: created Dump files /home/ogg/dirdmp: created 源端MANAGER进程组 GGSCI (king01) 2> edit params mgr PORT 7839 DYNAMICPORTLIST 7840-7939 AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3 PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS, MINKEEPDAYS 7 LAGREPORTHOURS 1 LAGINFOMINUTES 3 LAGCRITICALMINUTES 10 GGSCI (king01) 3> start mgr Manager started. GGSCI (king01) 4> info mgr Manager is running (IP port king01.7839, Process ID 3243). 源端EXTRACT进程组 GGSCI (king01) 5> dblogin userid ggs,password ggs Successfully logged into database. GGSCI (king01 as ggs@king) 6> add trandata soe.* GGSCI (king01 as ggs@king) 7> add extract ext_soe, tranlog, begin now EXTRACT added. GGSCI (king01 as ggs@king) 8> add exttrail ./dirdat/st,extract ext_soe,megabytes 100 EXTTRAIL added. GGSCI (king01 as ggs@king) 9> edit params ext_soe EXTRACT ext_soe DYNAMICRESOLUTION USERID ggs,PASSWORD ggs EXTTRAIL ./dirdat/st TABLEEXCLUDE SOE.ORDERENTRY_METADATA TABLE SOE.*; GGSCI (king01 as ggs@king) 10> start ext_soe Sending START request to MANAGER ... EXTRACT EXT_SOE starting GGSCI (king01 as ggs@king) 11> info ext_soe EXTRACT EXT_SOE Last Started 2017-08-30 13:47 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:07 ago) Process ID 4234 Log Read Checkpoint Oracle Redo Logs 2017-08-30 16:58:33 Seqno 59, RBA 211786752 SCN 0.2361582 (2361582) 源端PUMP进程组 GGSCI (king01 as ggs@king) 12> add extract pmp_soe, exttrailsource ./dirdat/st EXTRACT added. GGSCI (king01 as ggs@king) 13> add rmttrail ./dirdat/rt,EXTRACT pmp_soe,megabytes 100 RMTTRAIL added. GGSCI (king01 as ggs@king) 14> edit params pmp_soe EXTRACT pmp_soe PASSTHRU RMTHOST 192.168.1.202, MGRPORT 7839, COMPRESS RMTTRAIL ./dirdat/rt TABLE SOE.*; GGSCI (king01 as ggs@king) 15> start pmp_soe Sending START request to MANAGER ... EXTRACT PMP_SOE starting GGSCI (king01 as ggs@king) 16> info pmp_soe EXTRACT PMP_SOE Last Started 2017-08-30 15:22 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:08 ago) Process ID 4844 Log Read Checkpoint File ./dirdat/st000000000 2017-08-30 16:20:08.000000 RBA 47753236 GGSCI (king01 as ggs@king) 17> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING EXT_SOE 00:00:00 00:00:01 EXTRACT RUNNING PMP_SOE 00:00:00 00:00:06 源端备份数据库 [oracle@king01 ~]$ mkdir /home/oracle/backup [oracle@king01 ~]$ rman target / RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backup/%F'; RMAN> RUN { BACKUP INCREMENTAL LEVEL=0 TAG 'FULL_BACKUP' DATABASE FORMAT '/home/oracle/backup//soe_full_incr_%s_%p_%T' PLUS ARCHIVELOG FORMAT '/home/oracle/backup/soe_arch_%s_%p_%T' delete all input; DELETE NOPROMPT OBSOLETE; CROSSCHECK BACKUP; DELETE NOPROMPT EXPIRED BACKUP; } [oracle@king01 ~]$ sqlplus / as sysdba SQL> select to_char(current_scn) from v$database; TO_CHAR(CURRENT_SCN) ---------------------------------------- 1032191 SQL> alter system archive log current ; System altered. SQL> alter system archive log current ; System altered. SQL> alter system archive log current ; System altered. [oracle@king01 ~]$ rman target / RMAN> backup archivelog all FORMAT '/home/oracle/backup/soe_arch_%s_%p_%T'; [oracle@king01 ~]$ cd backup [oracle@king01 backup]$ scp * 192.168.1.202:/home/oracle/backup/ [oracle@king01 ~]$ cd $ORACLE_HOME/dbs [oracle@king01 dbs]$ scp orapwking 192.168.1.202:/home/database/11.2.0.4/product/dbs
目标端恢复数据库 [oracle@king02 ~]$ mkdir -p /home/oracle/admin/king/adump [oracle@king02 ~]$ mkdir -p /home/oracle/oradata/king [oracle@king02 ~]$ mkdir -p /home/oracle/fast_recovery_area/king [oracle@king02 ~]$ mkdir -p /home/oracle/archive [oracle@king02 ~]$ rman target / RMAN> startup nomount startup failed: ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/home/oracle/product/11.2.0/db_1/dbs/initking.ora' starting Oracle instance without parameter file for retrieval of spfile Oracle instance started Total System Global Area 1068937216 bytes Fixed Size 2260088 bytes Variable Size 281019272 bytes Database Buffers 780140544 bytes Redo Buffers 5517312 bytes RMAN> set DBID=1085678857 RMAN> run{ set CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backup/%F'; restore spfile from autobackup; } RMAN> shutdown immediate RMAN> startup nomount Total System Global Area 1068937216 bytes Fixed Size 2260088 bytes Variable Size 322962312 bytes Database Buffers 687865856 bytes Redo Buffers 55848960 bytes RMAN> set DBID=1085678857 executing command: SET DBID RMAN> run{ 2> set CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backup/%F'; 3> restore controlfile from autobackup; 4> } RMAN> alter database mount; RMAN> run{ set until scn 1032191; restore database; recover database; } RMAN> alter database open resetlogs; 目标端数据库设置 SQL> select 'alter table '||owner||'.'||table_name||' disable constraint '||constraint_name||';' from dba_constraints where constraint_type in ('R') and owner in('SOE') order by status,owner; 'ALTERTABLE'||OWNER||'.'||TABLE_NAME||'DISABLECONSTRAINT'||CONSTRAINT_NAME||';' -------------------------------------------------------------------------------- alter table SOE.ADDRESSES disable constraint ADD_CUST_FK; alter table SOE.ORDERS disable constraint ORDERS_CUSTOMER_ID_FK; alter table SOE.ORDER_ITEMS disable constraint ORDER_ITEMS_PRODUCT_ID_FK; alter table SOE.INVENTORIES disable constraint INVENTORIES_PRODUCT_ID_FK; alter table SOE.ORDER_ITEMS disable constraint ORDER_ITEMS_ORDER_ID_FK; alter table SOE.INVENTORIES disable constraint INVENTORIES_WAREHOUSES_FK; 6 rows selected. SQL> select 'alter trigger '||owner||'.'||trigger_name||' disable;' from dba_triggers where owner in('SOE') order by status,owner; no rows selected SQL> alter system set job_queue_processes=0 scope=both; System altered. SQL> drop user ggs cascade; User dropped. SQL> create user ggt identified by ggt default tablespace goldengate; User created. SQL> grant dba to ggt; Grant succeeded. 目标端安装OGG [oracle@king02 ~]$ vi .bash_profile export OGG_HOME=/home/ogg export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib export PATH=$OGG_HOME:$PATH [oracle@king02 ~]$ source .bash_profile [oracle@king02 ~]$ mkdir -p /home/ogg [oracle@king02 ~]$ unzip fbo_ggs_Linux_x64_shiphome.zip [oracle@king02 ~]$ cd fbo_ggs_Linux_x64_shiphome/Disk1 [oracle@king02 Disk1]$ ./runInstaller [oracle@king02 Disk1]$ cd /home/ogg [oracle@king02 ogg]$ ./ggsci GGSCI (king02) 1> create subdirs Creating subdirectories under current directory /home/ogg Parameter files /home/ogg/dirprm: created Report files /home/ogg/dirrpt: created Checkpoint files /home/ogg/dirchk: created Process status files /home/ogg/dirpcs: created SQL script files /home/ogg/dirsql: created Database definitions files /home/ogg/dirdef: created Extract data files /home/ogg/dirdat: created Temporary files /home/ogg/dirtmp: created Credential store files /home/ogg/dircrd: created Masterkey wallet files /home/ogg/dirwlt: created Dump files /home/ogg/dirdmp: created 目标端MANAGER进程组 GGSCI (king02) 2> edit params mgr PORT 7839 DYNAMICPORTLIST 7840-7939 AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3 PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS, MINKEEPDAYS 7 LAGREPORTHOURS 1 LAGINFOMINUTES 3 LAGCRITICALMINUTES 10 GGSCI (king02) 3> start mgr Manager started. GGSCI (king02) 4> info mgr Manager is running (IP port king02.7839, Process ID 13650). 目标端REPLICAT进程组 GGSCI (king02) 5> edit params ./GLOBALS checkpointtable ggt.chkpt GGSCI (king02) 6> dblogin userid ggt,password ggt Successfully logged into database. GGSCI (king02 as ggt@king) 7> add checkpointtable No checkpoint table specified. Using GLOBALS specification (ggt.chkpt)... Successfully created checkpoint table ggt.chkpt. GGSCI (king02 as ggt@king) 8> add replicat rep_soe,exttrail ./dirdat/rt REPLICAT added. GGSCI (king02 as ggt@king) 9> edit param rep_soe REPLICAT rep_soe USERID ggt, PASSWORD ggt REPERROR DEFAULT, ABEND DISCARDFILE ./dirrpt/rep_soe.dsc,APPEND,MEGABYTES 1024 ASSUMETARGETDEFS ALLOWNOOPUPDATES MAP SOE.*, TARGET SOE.*; GGSCI (king02 as ggt@king) 10> start replicat rep_soe, aftercsn 1032191 Sending START request to MANAGER ... REPLICAT REP_SOE starting GGSCI (king02 as ggt@king) 11> info rep_soe REPLICAT REP_SOE Last Started 2018-08-04 14:40 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:00 ago) Process ID 13902 Log Read Checkpoint File ./dirdat/rt000000000 2018-08-04 14:43:08.676383 RBA 42207 GGSCI (king02 as ggt@king) 12> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT RUNNING REP_SOE 00:00:00 00:00:04
OGG DDL复制 [oracle@king01 ogg]$ ./ggsci GGSCI (king01) 1> edit params ./GLOBALS GGSCHEMA ggs [oracle@king01 ogg]$ sqlplus / as sysdba SQL> show parameter recyclebin NAME TYPE VALUE ------------------------------------ --------------------------------- ------------------------------ recyclebin string on SQL> alter system set recyclebin=off deferred; System altered. SQL> purge recyclebin; Recyclebin purged. 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. 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 ----------------------------------------------------------------------------------------------------------- ------------- NONE LOCATION OF DDL TRACE FILE ----------------------------------------------------------------------------------------------------------- ------------- /u01/app/oracle/diag/rdbms/king/king/trace/ggs_ddl_trace.log Analyzing installation status... VERSION OF DDL REPLICATION ----------------------------------------------------------------------------------------------------------- ------------- OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401 STATUS OF DDL REPLICATION ----------------------------------------------------------------------------------------------------------- ------------- SUCCESSFUL installation of DDL Replication software components Script complete. 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. SQL> @ddl_enable.sql Trigger altered. SQL> @marker_status.sql Please enter the name of a schema for the GoldenGate database objects: ggs Setting schema name to GGS MARKER TABLE --------------------------------------------------------------------------------------------- OK MARKER SEQUENCE --------------------------------------------------------------------------------------------- OK [oracle@king01 ogg]$ ./ggsci GGSCI (king01) 1> edit params ext_soe EXTRACT ext_soe USERID ggs,PASSWORD ggs EXTTRAIL ./dirdat/st DDL INCLUDE ALL DDLOPTIONS ADDTRANDATA DDLOPTIONS REPORT TABLEEXCLUDE SOE.ORDERENTRY_METADATA TABLE SOE.*; [oracle@king02 ogg]$ ./ggsci GGSCI (king02) 1> edit params rep_soe REPLICAT rep_soe USERID ggt, PASSWORD ggt DISCARDFILE ./dirrpt/rep_soe.dsc,APPEND,MEGABYTES 1024 ASSUMETARGETDEFS ALLOWNOOPUPDATES DDL INCLUDE MAPPED DDLERROR DEFAULT ABEND DDLOPTIONS REPORT MAP SOE.*, TARGET SOE.*;
源端OGG监控 GGSCI (king01) 1> info ext_soe EXTRACT EXT_SOE Last Started 2018-08-11 14:16 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:09 ago) Process ID 8491 Log Read Checkpoint Oracle Redo Logs 2018-08-11 14:50:10 Seqno 38, RBA 25028608 SCN 0.1085945 (1085945) GGSCI (king01) 2> info pmp_soe EXTRACT PMP_SOE Last Started 2018-08-11 14:16 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:01 ago) Process ID 8504 Log Read Checkpoint File ./dirdat/st000000002 2018-08-11 14:23:46.000000 RBA 2188582 GGSCI (king01) 3> dblogin userid ggs,password ggs Successfully logged into database. GGSCI (king01 as ggs@king) 4> lag ext_soe Sending GETLAG request to EXTRACT EXT_SOE ... Last record lag 2 seconds. At EOF, no more records to process. GGSCI (king01 as ggs@king) 5> stats ext_soe,daily,table soe.orders Sending STATS request to EXTRACT EXT_SOE ... Start of Statistics at 2018-08-11 14:49:34. DDL replication statistics (for all trails): *** Total statistics since extract started *** Operations 11.00 Mapped operations 2.00 Unmapped operations 7.00 Other operations 2.00 Excluded operations 0.00 Output to ./dirdat/st: Extracting from SOE.ORDERS to SOE.ORDERS: *** Daily statistics since 2018-08-11 14:16:36 *** Total inserts 851.00 Total updates 971.00 Total deletes 0.00 Total discards 0.00 Total operations 1822.00 End of Statistics. 目标端OGG监控 GGSCI (king02) 1> info rep_soe REPLICAT REP_SOE Last Started 2018-08-11 14:21 Status RUNNING Checkpoint Lag 00:00:00 (updated 00:00:06 ago) Process ID 1890 Log Read Checkpoint File ./dirdat/rt000000004 2018-08-11 14:23:46.590809 RBA 2188623 GGSCI (king02) 2> dblogin userid ggt,password ggt Successfully logged into database. GGSCI (king02 as ggt@king) 3> lag rep_soe Sending GETLAG request to REPLICAT REP_SOE ... Last record lag 6 seconds. GGSCI (king02 as ggt@king) 4> stats rep_soe,daily,table soe.orders Sending STATS request to REPLICAT REP_SOE ... Start of Statistics at 2018-08-11 14:50:49. DDL replication statistics: *** Total statistics since replicat started *** Operations 11.00 Mapped operations 1.00 Unmapped operations 8.00 Other operations 2.00 Excluded operations 10.00 Errors 0.00 Retried errors 0.00 Discarded errors 0.00 Ignored errors 0.00 Replicating from SOE.ORDERS to SOE.ORDERS: *** Daily statistics since 2018-08-11 14:21:50 *** Total inserts 851.00 Total updates 971.00 Total deletes 0.00 Total discards 0.00 Total operations 1822.00 End of Statistics.
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。