ConvertingtoOracleRealAppl

Converting to Oracle Real Application Clusters from Single-Instance Oracle Databases

This chapter describes the procedures for converting from Oracle Database 11g release 2 (11.2) single-instance databases to Oracle Real Application Clusters (Oracle RAC) databases.

专注于为中小企业提供成都网站制作、成都做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业大渡口免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了数千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

if you are upgrading from Oracle Parallel Server to Oracle RAC, or from an earlier version of Oracle RAC, then use Oracle Database Upgrade Assistant (DBUA).

Note:

The procedures in this chapter assume that your original single-instance database and the target Oracle RAC database are using the same release, and running on the same platform.

This appendix contains the following topics:

  • Administrative Issues for Converting Databases to Oracle RAC

  • Converting to Oracle RAC with DBCA

  • Preparing to Convert with rconfig and Oracle Enterprise Manager

  • Converting Databases to Oracle RAC Using rconfig

  • Example of rconfig XML Input Files for ConvertToRAC

  • Post-Conversion Steps

Note:

You must use clustered Oracle ASM instances for Oracle RAC databases.

See Also:

Oracle Database Licensing Information for compliance requirements that apply to the license you have purchased

C.1 Administrative Issues for Converting Databases to Oracle RAC

Note the following administrative considerations before converting single-instance databases to Oracle RAC:

  • A backup of your existing database should available before converting from a single-instance Oracle Database to Oracle RAC and you should be ready to take a backup of your Oracle RAC database immediately following the conversion.

  • For archiving with Oracle RAC environments, the archive file format requires a thread number.

  • The archived logs from all instances of an Oracle RAC database are required for media recovery. Because of this, if you archive to a file and you do not use a cluster file system, or some other means to provide shared file systems, then you require a method of accessing the archive logs from all nodes on which the cluster database has instances.

  • By default, all database files are migrated to Oracle-Managed Files (OMF). This feature simplifies tablespace creation, ensures datafile location consistency and compliance with OFA rules, and reduces human error with data file management.

C.2 Converting to Oracle RAC with DBCA

You can use Database Configuration Assistant to convert from single-instance Oracle databases to Oracle RAC. DBCA automates the configuration of the control file attributes, creates the undo tablespaces and the redo logs, and makes the initialization parameter file entries for cluster-enabled environments. It also configures Oracle Net Services, Oracle Clusterware resources, and the configuration for Oracle RAC database management for use by Oracle Enterprise Manager or the SRVCTL utility.

Before you use DBCA to convert a single-instance database to an Oracle RAC database, ensure that your system meets the following conditions:

  • It is a supported hardware and operating system software configuration.

  • It has shared storage: either Oracle Cluster File System or Oracle ASM is available and accessible from all nodes.

  • Your applications have no design characteristics that preclude their use with cluster database processing.

If your platform supports a cluster file system, then you can use it for Oracle RAC. You can also convert to Oracle RAC and use a non-shared file system. In either case, Oracle strongly recommends that you use Oracle Universal Installer (OUI) to perform an Oracle Database 11g release 2 (11.2) installation that sets up the Oracle home and inventory in an identical location on each of the selected nodes in your cluster.

This section describes the following scenarios:

  • Converting Oracle Database 11g Installations to Oracle RAC Using DBCA

  • Converting Single Instance on a Cluster to Oracle RAC using DBCA


C.2.1 Converting Oracle Database 11g Installations to Oracle RAC Using DBCA

To convert from a single-instance Oracle Database that is on a non-cluster computer to Oracle RAC, perform the procedures described in the following sections, and in the order shown:

  • Back Up the Original Single-Instance Database

  • Complete Oracle Clusterware Installation

  • Validate the Cluster

  • Copy the Preconfigured Database Image

  • Install Oracle Database 11g Software with Oracle RAC

C.2.1.1 Back Up the Original Single-Instance Database

Use DBCA to create a preconfigured p_w_picpath of your single-instance database by using the following procedure:

  1. Navigate to the bin directory in Oracle_home, and start DBCA.

  2. At the Welcome page, click Next.

  3. On the Operations page, select Manage Templates, and click Next.

  4. On the Template Management page, select Create a database template and From an existing database (structure as well as data), and click Next.

  5. On the Source Database page, select the database name in the Database instance list, and click Next.

  6. On the Template Properties page, enter a name for your template in the Name field. Oracle recommends that you use the database name.

    By default, the template files are generated in the directory Oracle_home\assistants\dbca\templates. You can enter a description of the file in the Description field and change the template file location in the Template data file field.

    When you have completed entries, click Next.

  7. On the Location of Database Related Files page, select Maintain the file locations, so that you can restore the database to the current directory structure, and click Finish.

DBCA generates two files: a database structure file (template_name.dbc), and a database preconfigured p_w_picpath file (template_name.dfb).


C.2.1.2 Complete Oracle Clusterware Installation

Complete Oracle Clusterware installation, as described in Oracle Grid Infrastructure Installation Guide for your platform.

C.2.1.3 Validate the Cluster

Validate the cluster configuration using the Cluster Verification Utility.

C.2.1.4 Copy the Preconfigured Database Image

Copy the preconfigured database p_w_picpath. This includes copying the database structure *.dbc file and the database preconfigured p_w_picpath *.dfb file that DBCA created in the previous procedure "Back Up the Original Single-Instance Database" to a temporary location on the node in the cluster from which you plan to run DBCA.

C.2.1.5 Install Oracle Database 11g Software with Oracle RAC
  1. Run OUI to perform an Oracle Database installation with Oracle RAC.

  2. Select Cluster Installation Mode on the Specify Hardware Cluster Installation page of OUI, and select the nodes to include in your Oracle RAC database.

  3. On the OUI Database Configuration Types page, select the Advanced install type.

    After installing the Oracle Database software, OUI runs postinstallation configuration tools, such as Network Configuration Assistant (NETCA), DBCA, and so on.

  4. On the DBCA Template Selection page, use the template that you copied to a temporary location in the "Copy the Preconfigured Database Image" procedure. Use the browse option to select the template location.

  5. If you selected raw storage on the OUI Storage Options page, then on the DBCA File Locations Tab on the Initialization Parameters page, replace the data files, control files, and log files, and so on, with the corresponding raw device files if you have not set up the DBCA_RAW_CONFIG environment variable. You must also replace default database files with raw devices on the Storage page.

    See Also:

    Chapter 3, "Creating Oracle Real Application Clusters Databases with Database Configuration Assistant" for more details about DBCA

  6. After creating the Oracle RAC database, DBCA displays the Password Management page on which you must change the passwords for database privileged users who have SYSDBA and SYSOPER roles. When DBCA exits, the conversion process is complete.

    See Also:

    Oracle Database Platform Guide for Microsoft Windows for more information about configuring user roles


C.2.2 Converting Single Instance on a Cluster to Oracle RAC using DBCA

There are three scenarios in which a single-instance database can exist on a cluster computer:

  • Scenario 1: The Oracle home from which the single-instance database is running is cluster-installed. The steps to perform a conversion to Oracle RAC in this scenario are described in "Single Instance Database on a Cluster Running from a Cluster-Enabled Oracle Home".

  • Scenario 2: The Oracle home from which the single-instance database is running is cluster-installed, but the Oracle RAC feature is disabled.

  • Scenario 3: The Oracle home from which the single-instance database is running is not cluster-installed. The procedure to convert the single-instance database to Oracle RAC in this scenario is described in "Single Instance Database on a Cluster Running from a Single-Instance Installed Oracle Home".

C.2.2.1 Single Instance Database on a Cluster Running from a Cluster-Enabled Oracle Home

Perform the following procedures to convert a single-instance database on a cluster running from a cluster-installed (Oracle Database 11g with Oracle RAC) Oracle home.

  1. Use DBCA to create a preconfigured p_w_picpath of your single-instance database as described in the section "Back Up the Original Single-Instance Database". To perform the conversion manually, shut down the single-instance database.

  2. To add nodes to your cluster, add and connect these nodes to the cluster as described in Oracle Grid Infrastructure Installation Guide for your platform. Ensure that all of these nodes can access the shared storage. Also, extend the Oracle Clusterware home to the new nodes using the procedures for "Adding and Deleting Cluster Nodes on Windows Systems" as described in Oracle Clusterware Administration and Deployment Guide.

  3. From one of the newly added nodes, configure the listeners on the additional nodes using NETCA. Choose the same port number and protocol that you used on the existing node. If NETCA displays the existing node in the node list page, then do not select this node, because the listener is already configured on it.

  4. Convert the database using one of the following procedures:

  • Automated Conversion Procedure Using DBCA

  • Manual Conversion Procedure

C.2.2.1.1 Automated Conversion Procedure Using DBCA
  1. If you created the preconfigured p_w_picpath of the single instance database as described in the section "Back Up the Original Single-Instance Database", then use DBCA to complete the conversion to an Oracle RAC database.

  2. Start DBCA from the initial node. Select the names of the nodes that you want to include as part of your cluster database. On the Template Selection page, select the preconfigured template that you created in Step 1. Enter the database name and respond to the remaining DBCA prompts.

  3. To use raw devices for the cluster database files:

    1. When the Initialization Parameters page appears, enter the raw device name for the SPFILE on the File Locations tab.

    2. On the Storage page, replace the default database file names with the raw devices for the control files, redo logs, and data files to create the cluster database.

    3. Click Finish, and create the database.

After creating the Oracle RAC database, DBCA displays the Password Management page on which you must change the passwords for the database privileged users who have SYSDBA and SYSOPER roles. When DBCA exits, the conversion process is complete.

C.2.2.1.2 Manual Conversion Procedure

Because you did not use DBCA to create a preconfigured p_w_picpath of your single-instance database in step 1, perform the following steps to complete the conversion:


  1. Create the Optimal Flexible Architecture (OFA) directory structure on each of the nodes that you have added.

    See Also:

    "Directory Structures for Oracle RAC" for more information about OFA

  2. If you are converting single-instance database files on a file system to raw devices, then copy the database data files, control files, redo logs, and server parameter file to their corresponding raw devices using the OCOPY command. Otherwise, continue to the next step.

  3. Re-create the control files by running the CREATE CONTROLFILE SQL statement with the REUSE keyword and specify MAXINSTANCES and MAXLOGFILES, and so on, as needed for your Oracle RAC configuration. The MAXINSTANCES recommended default is 32.

  4. Shut down the database instance.

  5. If your single-instance database was using an SPFILE, then create a temporary PFILE from the SPFILE using the following SQL statement:

    CREATE PFILE='pfile_name' from spfile='spfile_name'
  6. Set the CLUSTER_DATABASE parameter to TRUE, set the INSTANCE_NUMBER parameter to a unique value for each instance, using a sid.parameter=value syntax.

    If you optimized memory usage on your single-instance database, then adjust the size of the system global area (SGA) to avoid swapping and paging when you convert to Oracle RAC. You should make this adjustment because Oracle RAC requires about 350 bytes for each buffer to accommodate the Global Cache Service (GCS). For example, if you have 10,000 buffers, then Oracle RAC requires about 350 multiplied by 10,000 bytes more memory. Therefore, adjust the size of the SGA by changing the DB_CACHE_SIZE and DB_nK_CACHE_SIZE parameters accordingly.

  7. Start up the database instance using the PFILE created in step 5.

  8. If your single-instance database was using automatic undo management, then create an undo tablespace for each additional instance using the CREATE UNDO TABLESPACE SQL statement. If you are using raw devices, then ensure that the data file for the undo tablespace is on the raw device.

  9. Create redo threads that have at least two redo logs for each additional instance. If you are using raw devices, then ensure that the redo log files are on raw devices. Enable the new redo threads by using an ALTER DATABASE SQL statement. Then, shut down the database instance.

  10. Copy the Oracle password file from the initial node, or from the node on which you are working, to the corresponding location on the additional nodes on which the cluster database will have an instance. Replace the ORACLE_SID name in each password file appropriately for each additional instance.

  11. Set the REMOTE_LISTENER parameter to the single client access name (SCAN) port and SCAN.

  12. Create the SPFILE from the PFILE using the procedures in the section "Migrating to the SPFILE in Oracle RAC Environments". If you are not using Oracle Automatic Storage Management (Oracle ASM) or a cluster file system, then ensure that the SPFILE is on a raw device that is accessible from every node in the cluster.

  13. Create the Oracle_home\dbs\initsid.ora file that contains the following entry:

    spfile='spfile_path_name'

    In this example, spfile_path_name is the complete path name of the SPFILE.

  14. On the local node, run catclust.sql. This command creates the dictionary views needed for Oracle RAC databases. For example:

    SQL> start Oracle_home\RDBMS\ADMIN\catclust.sql
  15. Add the configuration for the Oracle RAC database and its instance-to-node mapping using SRVCTL.

    srvctl add database -d db_name -o Oracle_home -p spfile_path_namesrvctl add instance -d db_name -i inst1_name -n node1_namesrvctl add instance -d db_name -i inst2_name -n node2_name
  16. Start the Oracle RAC database using SRVCTL.

    srvctl start database -d db_name

After starting the database with SRVCTL, your conversion process is complete and, for example, you can run the following SQL statement to see the status of all the instances in your Oracle RAC database:

SQL> select * from v$active_instances

C.2.2.2 Single Instance Database on a Cluster Running from a Single-Instance Installed Oracle Home

You can only install a single instance on a cluster running from a single-instance installed Oracle home if you selected the local installation option on the OUI Specify Hardware Cluster Installation page during the single-instance Oracle Database 11g release 2 (11.2) installation.

To convert this type of database to an Oracle RAC database, perform the procedures described in the following sections:

  1. "Back Up the Original Single-Instance Database".

  2. "Complete Oracle Clusterware Installation".

  3. "Validate the Cluster".

  4. "Install Oracle Database 11g Software with Oracle RAC". In this step, make sure that you select a new Oracle home other than the one from which the single-instance database was running.

C.3 Preparing to Convert with rconfig and Oracle Enterprise Manager

You can use rconfig, or Oracle Enterprise Manager to assist you with the task of converting a single-instance database installation to an Oracle RAC database. The first of these, rconfig, is a command line utility. Oracle Enterprise Manager Grid Control database administration option, Convert to Cluster Database, provides a GUI conversion tool. The following sections describe how to use these conversion tools:

  • Prerequisites for Converting to Oracle RAC Databases

  • Configuration Changes during Oracle RAC Conversion Using rconfig

  • Converting Databases to Oracle RAC Using rconfig or Oracle Enterprise Manager

  • Converting Databases to Oracle RAC Using Oracle Enterprise Manager

Note:

Before you start the conversion, back up your existing database, as you should do before starting any major change to your database.

C.3.1 Prerequisites for Converting to Oracle RAC Databases

Before you convert a single-instance database to an Oracle RAC database, ensure that the following conditions are met for each cluster node that you intend to make an Oracle RAC database node:

  • Oracle Clusterware 11g release 2 (11.2) is installed, configured, and running.

  • Oracle RAC 11g release 2 (11.2) software is installed.

  • The Oracle binary is enabled for Oracle RAC.

  • Shared storage, either Oracle Cluster File System or Oracle ASM, is available and accessible from all nodes.

  • User equivalence exists for the oracle account, or the user account used to install the Oracle software.

  • If you intend to use Oracle Enterprise Manager, then all Oracle Enterprise Manager agents are configured and running, and are configured with cluster and host information.

  • You have backed up your existing database.

Note:

You must use clustered Oracle ASM instances for Oracle RAC databases. Oracle ASM is installed with the Oracle Grid infrastructure software.

C.3.2 Configuration Changes during Oracle RAC Conversion Using rconfig

Note the following changes that occur when you convert a single-instance database to Oracle RAC using rconfig:

  • During the conversion, rconfig places the target Oracle RAC database into archive log mode, and enables archiving for the database. If you do not plan to use archivelog space, then you can disable archive logging after the conversion has completed.

  • For the Shared Storage Type value, if you enter CFS, and you use a cluster file system for your single-instance database storage, then rconfig converts the environment to use Oracle Managed Files (OMF) for database storage, and places the datafiles in a subdirectory located under the shared storage location.

  • During the conversion, rconfig moves database files to a specified shared location, and configures them using OMF.

    If you want to avoid using OMF with your converted database, then the single-instance database files must already be located in a shared file system, and you must indicate that rconfig should not move the files.

C.3.3 Converting Databases to Oracle RAC Using rconfig or Oracle Enterprise Manager

The following is a list of scenarios for converting a single-instance Oracle database to an Oracle RAC database:

  • Converting a single-instance Oracle Database 11g release 2 (11.2) to an Oracle RAC 11g release 2 (11.2) database, running out of the same Oracle home and using the same data files as the single-instance database.

    In this scenario, either use the rconfig utility, or use the Convert to RAC option on the single-instance database target of Oracle Enterprise Manager Grid Control.

  • Converting a single-instance Oracle Database version previous to Oracle RAC 11g release 2 (11.2), running out of the same Oracle home and using the same data files as the single-instance database

    In this scenario, use OUI and Database Upgrade Assistant (DBUA) to update the single-instance database to Oracle Database 11g release 2 (11.2). Then use rconfig or the Oracle Enterprise Manager Convert to RAC option, as described in the preceding scenario.

  • Converting a single-instance Oracle Database 11g release 2 (11.2) to an Oracle RAC 11g release 2 (11.2) database, running out of a different Oracle home and using the same data files as the single-instance database.

    In this scenario, either use the rconfig utility in the source database home (the database that you are converting), or use the Convert to RAC option in the single-instance database target of Oracle Enterprise Manager Grid Control. Provide the file storage location when prompted.

  • Converting a single-instance Oracle Database 11g release 2 (11.2) to an Oracle RAC 11g release 2 (11.2) database, running out of a different Oracle home, and where the host where the single-instance database is running is not one of the nodes of the Oracle RAC database.

    In this scenario, create a clone p_w_picpath of the single-instance database, and move the clone p_w_picpath to a host that is one of the nodes of the cluster. Then use rconfig or the Oracle Enterprise Manager Convert to RAC option, as described in the preceding scenario.

C.3.4 Converting Databases to Oracle RAC Using Oracle Enterprise ManagerYou can use Oracle Enterprise Manager Grid Control to convert a single-instance database to Oracle RAC. To use this feature, complete the following steps:

See Also:

Oracle Database Upgrade Guide for information about upgrading existing Oracle Database installations

  1. Log in to Grid Control. From the Grid Control Home page, click the Targets tab.

  2. On the Targets page, click the Databases secondary tab, and click the link in the Names column of the database that you want to convert to Oracle RAC.

  3. On the Database Instance Home page, click the Change Database secondary tab.

  4. On the Administration page, in the Database Administration Change Database section, click Convert to Cluster Database.

  5. Log in as the database user SYS with SYSDBA privileges to the database you want to convert, and click Next.

  6. On the Convert to Cluster Database: Cluster Credentials page, provide a user name and password for the oracle user and password of the target database that you want to convert. If the target database is using Oracle ASM, then also provide the SYSASM user and password, and click Next.

  7. On the Hosts screen, select the host nodes in the cluster that you want to be cluster members in the installed Oracle RAC database. When you have completed your selection, click Next.

  8. On the Convert to Database: Options page, select whether you want to use the existing listener and port number, or specify a new listener and port number for the cluster. Also provide a prefix for cluster database instances on the cluster.

    When you have finished entering information, click Next, or click Help if you need assistance in deciding how to enter information.

  9. On the Convert to Cluster Database: Shared Storage page, either select the option to use your existing shared storage area, or select the option to have your database files copied to a new shared storage location. Also, decide if you want to use your existing Fast Recovery Area, or if you want to copy your Flash Recovery files to a new Fast Recovery Area using files managed by Oracle Database.

    If you use Oracle ASM, then Oracle recommends that you place the database area and the recovery area in separate failure groups. If you do not use Oracle ASM, then Oracle recommends that the data files and the Fast Recovery Area are located on separate locations, as with separate Oracle ASM failure groups, so that a hardware failure does not affect availability.

    See Also:

    Oracle Database Storage Administrator's Guide for more information about failure groups

    When you have finished entering information, click Next, or click Help if you need assistance in deciding how to enter information.

  10. On the Convert to Cluster Database: Review page, review the options you have selected. Click Submit Job if you want to proceed with the conversion. If you want to change any of the options you have selected, then click Back. To cancel the conversion, click Cancel.

  11. On the Confirmation page, click View Job to check the status of the conversion.

C.4 Converting Databases to Oracle RAC Using rconfig

You can use the command line utility rconfig to convert a single-instance database to Oracle RAC. To use this feature, complete the following steps:

See Also:

Oracle Database Upgrade Guide for information about upgrading existing Oracle Database installations

  1. As the oracle user, navigate to the directory Oracle_home\assistants\rconfig\sampleXMLs, and open the file ConvertToRAC.xml using a text editor.


  2. Review the ConvertToRAC.xml file, and modify the parameters as required for your system. The XML sample file contains comment lines that provide instructions for how to configure the file.

    Caution:

    Set the convert option Convert verify="ONLY" to perform a test conversion to ensure that a conversion can be completed successfully.

    When you have completed making changes, save the file with the syntax filename.xml. Make a note of the name you select.

  3. Navigate to the directory Oracle_home\bin, and use the following syntax to run the command rconfig:

    rconfig input.xml

    where input.xml is the name of the XML input file you configured in Step 2.

    For example, if you create an input XML file called convert.xml, then enter the following command

    C:\...\bin> rconfig.bat convert.xml

Note:

The Convert verify option in the ConvertToRAC.xml file has three options:

  • Convert verify="YES": rconfig performs checks to ensure that the prerequisites for single-instance to Oracle RAC conversion have been met before it starts conversion

  • Convert verify="NO": rconfig does not perform prerequisite checks, and starts conversion

  • Convert verify="ONLY" rconfig only performs prerequisite checks; it does not start conversion after completing prerequisite checks

If performing the conversion fails, then use the following procedure to recover and reattempt the conversion:

  1. Attempt to delete the database using the DBCA delete database option.

  2. Restore the source database.

  3. Review the conversion log, and fix any problems reported by rconfig that may have caused the conversion failure. The rconfig log files are under the rconfig directory in %ORACLE_BASE%\cfgtoollogs.

  4. Reattempt the conversion.

C.5 Example of rconfig XML Input Files for ConvertToRAC

The following are two examples of an XML ConvertToRAC input file for the rconfig utility. Example C-1 is an XML input file to convert a single-instance database with Oracle ASM to a policy-managed Oracle RAC database (using server pools) on Oracle ASM storage. Example C-2 is an XML input file to convert a single-instance database with Oracle ASM to an administrator-managed Oracle RAC database.

Example C-1 rconfig ConvertToRAC for Policy-Managed Database



       

        

              C:\app\oracle\product\11.2.0\db_1

              C:\app\oracle\product\11.2.0\db_1

              
                
                  sys
                  oracle
                  sysdba
                
              

              
                
                
              



              

                +ASMDG

                +ASMDG
              
        
    

Example C-2 rconfig ConvertToRAC for Administrator-Managed Database



       

        

              C:\app\oracle\product\11.2.0\db_1

              C:\app\oracle\product\11.2.0\db_1

              
                
                  sys
                  oracle
                  sysdba
                
              

                      
                
                
              

              sales


              

                +ASMDG

                +ASMDG
              
        
    

C.6 Post-Conversion Steps

After completing the conversion, note the following recommendations for Oracle RAC environments, as described in the Oracle RAC documentation:

  • Follow the recommendations for using load balancing and transparent application failover, as described in Oracle Real Application Clusters Administration and Deployment Guide

  • Use locally managed tablespaces instead of dictionary managed tablespaces to reduce contention and manage sequences in Oracle RAC as described in Oracle Real Application Clusters Administration and Deployment Guide

  • Follow the guidelines for using automatic segment space management as described in Oracle Real Application Clusters Administration and Deployment Guide

The buffer cache and shared pool capacity requirements in Oracle RAC are slightly greater than the requirements for single-instance Oracle databases. Therefore, you should increase the size of the buffer cache by about 10%, and the size of the shared pool by about 15%.


本文名称:ConvertingtoOracleRealAppl
URL标题:http://bzwzjz.com/article/jdcsoi.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 重庆网站建设 重庆网站设计 高端定制网站设计 网站建设方案 达州网站设计 成都网站建设 成都网站设计 定制网站制作 古蔺网站建设 成都网站制作公司 公司网站建设 成都网站建设公司 企业网站建设 成都网站设计 手机网站制作 手机网站建设 网站建设推广 移动手机网站制作 企业网站设计 成都网站制作 阿坝网站设计 成都网站建设公司