切换oracle用户,就是安装oracle的那个用户。

su - oracle

网上教程太多,大多数都是一个命令一个命令的创建,这里分享一段linux环境下实例创建脚本实现快速创建

cd /home/oracle
vi create_instance.sh

粘贴以下内容:

#!/bin/bash

##########################################
## create_database.sh ##
##########################################
LOGFILE=/home/oracle/create_database.log

# 设置环境变量 指定好相关目录   sh执行后,会让你输入一个实例名(SID)
read -p "Please Enter OracleSID:" SID
export ORACLE_SID=$SID

read -r -p "设置ORACLE_BASE为/u01/app/oracle? [Y/n] " input
case $input in
    [yY][eE][sS]|[yY])
    
        export ORACLE_BASE=/u01/app/oracle
        if [ ! -x "$ORACLE_BASE" ]; then
          mkdir -p "$ORACLE_BASE"
        fi
        echo "已设置ORACLE_BASE为$ORACLE_BASE"
        ;;

    [nN][oO]|[nN])
        read -r -p "请输入你需要设置的ORACLE_BASE( 结尾不要带/ ):" input
        export ORACLE_BASE=$input
        if [ ! -x "$ORACLE_BASE" ]; then
          mkdir -p "$ORACLE_BASE"
        fi
        echo "已设置ORACLE_BASE为$ORACLE_BASE"
           ;;

    *)
        echo "Invalid input..."
        exit 1
        ;;
esac

read -r -p "设置ORACLE_HOME为$ORACLE_BASE/product/112010/db_1? [Y/n] " input2
case $input2 in
    [yY][eE][sS]|[yY])
        export ORACLE_HOME=$ORACLE_BASE/product/112010/db_1
        if [ ! -x "$ORACLE_HOME" ]; then
          mkdir -p "$ORACLE_HOME"
        fi
        echo "已设置ORACLE_HOME为$ORACLE_HOME"
        ;;

    [nN][oO]|[nN])
        read -r -p "请输入你需要设置的ORACLE_HOME( 结尾不要带/ ):" input2
        export ORACLE_HOME=$input2
        if [ ! -x "$ORACLE_HOME" ]; then
          mkdir -p "$ORACLE_HOME"
        fi
        echo "已设置ORACLE_HOME为$ORACLE_HOME"
           ;;

    *)
        echo "Invalid input..."
        exit 1
        ;;
esac

read -r -p "设置oradata目录在oracle_home下面? [Y/n] " input3
case $input3 in
    [yY][eE][sS]|[yY])
        export ORACLE_ORADATA=$ORACLE_HOME/$ORACLE_SID/oradata
        if [ ! -x "$ORACLE_ORADATA" ]; then
          mkdir -p "$ORACLE_ORADATA"
        fi
        echo "已设置ORACLE_ORADATA为$ORACLE_ORADATA"
        ;;

    [nN][oO]|[nN])
        read -r -p "请输入你需要设置的ORACLE_ORADATA(如:/oradata  结尾不要带/  ):" input3
        export ORACLE_ORADATA=$input3/$ORACLE_SID
        if [ ! -x "$ORACLE_ORADATA" ]; then
          mkdir -p "$ORACLE_ORADATA"
        fi
        echo "已设置ORACLE_ORADATA为$ORACLE_ORADATA"
           ;;

    *)
        echo "Invalid input..."
        exit 1
        ;;
esac

# 创建必要的目录
mkdir -p $ORACLE_BASE/admin/$ORACLE_SID/{adump,dpdump,pfile}

# 创建相关初始化参数 #注意,memory_target=512M此处先保持512M,我开始设置的300M报错了说小了,大家根据环境来看吧
rm -f $ORACLE_HOME/dbs/init$ORACLE_SID.ora
touch $ORACLE_HOME/dbs/init$ORACLE_SID.ora
INITPAR=$ORACLE_HOME/dbs/init$ORACLE_SID.ora
echo "audit_file_dest='$ORACLE_BASE/admin/$ORACLE_SID/adump'" >> $INITPAR
echo "audit_trail='db'" >> $INITPAR
echo "compatible='11.2.0.1.0'" >> $INITPAR
echo "control_files='$ORACLE_ORADATA/control01.ctl'" >> $INITPAR
echo "db_block_size=8192" >> $INITPAR
echo "db_name='$ORACLE_SID'" >> $INITPAR
echo "diagnostic_dest='$ORACLE_BASE'" >> $INITPAR
echo "dispatchers='(PROTOCOL=TCP) (SERVICE=$ORACLE_SIDXDB)'" >> $INITPAR
echo "job_queue_processes=1000" >> $INITPAR
echo "memory_target=512M" >> $INITPAR
echo "open_cursors=300" >> $INITPAR
echo "processes=300" >> $INITPAR
echo "remote_login_passwordfile='EXCLUSIVE'" >> $INITPAR
echo "sessions=335" >> $INITPAR
echo "undo_tablespace='UNDOTBS1'" >> $INITPAR

# 创建数据库的脚本
rm -f /home/oracle/cr_db.sql
touch /home/oracle/cr_db.sql
CR_DB=/home/oracle/cr_db.sql
echo "create database $ORACLE_SID" >> $CR_DB
echo "USER SYS IDENTIFIED BY oracle" >> $CR_DB
echo "USER SYSTEM IDENTIFIED BY oracle" >> $CR_DB
echo "LOGFILE  " >> $CR_DB
echo "GROUP 1 ('$ORACLE_ORADATA/redo01.log') SIZE 100M reuse," >> $CR_DB
echo "GROUP 2 ('$ORACLE_ORADATA/redo02.log') SIZE 100M reuse," >> $CR_DB
echo "GROUP 3 ('$ORACLE_ORADATA/redo03.log') SIZE 100M reuse" >> $CR_DB
echo "MAXLOGFILES 5" >> $CR_DB
echo "MAXLOGMEMBERS 5" >> $CR_DB
echo "MAXLOGHISTORY 1" >> $CR_DB
echo "MAXDATAFILES 100" >> $CR_DB
echo "MAXINSTANCES 1" >> $CR_DB
echo "CHARACTER SET AL32UTF8" >> $CR_DB
echo "DATAFILE '$ORACLE_ORADATA/system01.dbf' SIZE 350M REUSE " >> $CR_DB
echo "AUTOEXTEND ON NEXT 10240K" >> $CR_DB
echo "EXTENT MANAGEMENT LOCAL" >> $CR_DB
echo "SYSAUX DATAFILE '$ORACLE_ORADATA/sysaux01.dbf' SIZE 325M REUSE" >> $CR_DB
echo "DEFAULT TEMPORARY TABLESPACE temp" >> $CR_DB
echo "TEMPFILE '$ORACLE_ORADATA/temp01.dbf'" >> $CR_DB
echo "SIZE 20M REUSE" >> $CR_DB
echo "UNDO TABLESPACE undotbs1" >> $CR_DB
echo "DATAFILE '$ORACLE_ORADATA/undotbs1.dbf'" >> $CR_DB
echo "SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;" >> $CR_DB

# create database hrxj_poc  
# LOGFILE  
# GROUP 1 ('/data/oracletablespace/mrmsdb/hrxj_poc/redo01.log','/data/oracletablespace/mrmsdb/hrxj_poc/redo01_1.log') size 100m reuse,  
# GROUP 2 ('/data/oracletablespace/mrmsdb/hrxj_poc/redo02.log','/data/oracletablespace/mrmsdb/hrxj_poc/redo02_1.log') size 100m reuse,  
# GROUP 3 ('/data/oracletablespace/mrmsdb/hrxj_poc/redo03.log','/data/oracletablespace/mrmsdb/hrxj_poc/redo03_1.log') size 100m reuse  
# MAXLOGFILES 50  
# MAXLOGMEMBERS 5  
# MAXLOGHISTORY 200  
# MAXDATAFILES 500  
# MAXINSTANCES 5  
# ARCHIVELOG  
# CHARACTER SET AL32UTF8  
# NATIONAL CHARACTER SET AL32UTF8  
# DATAFILE '/data/oracletablespace/mrmsdb/hrxj_poc/system01.dbf' SIZE 1000M EXTENT MANAGEMENT LOCAL  
# SYSAUX DATAFILE '/data/oracletablespace/mrmsdb/hrxj_poc/sysaux01.dbf' SIZE 1000M  
# UNDO TABLESPACE UNDOTBS1 DATAFILE '/data/oracletablespace/mrmsdb/hrxj_poc/undo.dbf' SIZE 500M  
# DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '/data/oracletablespace/mrmsdb/hrxj_poc/temp.dbf' SIZE 500M;  

# 创建数据字典脚本 此处可能报 ORA-06553: PLS-213: package STANDARD not accessible,解决方案在文章后面
rm -f /home/oracle/cr_dict.sql
touch w
CR_DICT=/home/oracle/cr_dict.sql
echo "$ORACLE_HOME/rdbms/admin/catalog" >> $CR_DICT
echo "$ORACLE_HOME/rdbms/admin/catproc" >> $CR_DICT
echo "conn system/oracle" >> $CR_DICT
echo "$ORACLE_HOME/sqlplus/admin/pupbld" >> $CR_DICT
echo "conn / as sysdba" >> $CR_DICT

# 创建pfile
rm -f /home/oracle/cr_spfile.sql
touch /home/oracle/cr_spfile.sql
CR_SPFILE=/home/oracle/cr_spfile.sql
echo "CREATE spfile FROM pfile;" >> $CR_SPFILE

# 创建用户表空间
rm -f /home/oracle/cr_users.sql
touch /home/oracle/cr_users.sql
CR_USERS=/home/oracle/cr_users.sql
echo "CREATE TABLESPACE users" >> $CR_USERS
echo "   DATAFILE '$ORACLE_ORADATA/user01.dbf' SIZE 100M" >> $CR_USERS
echo "   AUTOEXTEND ON;" >> $CR_USERS
echo "ALTER DATABASE DEFAULT TABLESPACE users;" >> $CR_USERS

sleep 5

# Execute Script
sqlplus / as sysdba >> $LOGFILE 2>&1 << EOF
startup nomount
@$CR_DB
@$CR_DICT
@$CR_SPFILE
@$CR_USERS
EOF

# Script End


常用命令:

查看当前SID

echo $ORACLE_SID

查看HOME路径

echo $ORACLE_HOME

查看监听状态

lsnrctl status

开启监听

lsnrctl start

启动用户实例

dbstart

启动监听(MRMSDW为实例名)

lsnrctl start MRMSDW

连接数据库

sqlplus / as sysdba

关闭数据库

shutdown immediate

启动数据库

startup

设置当前的SID

export ORACLE_SID=MRMSDW

修改监听配置文件listener.ora

cd $ORACLE_HOME/network/admin
vi listener.ora

修改权限

chown oracle:oinstall  XXX


关于: ORA-06553: PLS-213: package STANDARD not accessible
解决方案

sqlplus /nolog 
SQL> connect / as sysdba 
SQL> $ORACLE_HOME/rdbms/admin/catalog.sql 
SQL> $ORACLE_HOME/rdbms/admin/catproc.sql 
SQL> $ORACLE_HOME/rdbms/admin/catexp.sql