新建Oracle 数据库的Shell+SQL脚本

简介: 不用图形界面,也不用DBCA的静默方式,下面是用Shell+SQL创建Oracle数据库的脚本。

不用图形界面,也不用DBCA的静默方式,下面是用Shell+SQL创建Oracle数据库的脚本。

创建12C和11G的数据库的脚本

Usage: ./create_ora11g.sh <ORACLE_SID>
create_ora11g.sh
#!/bin/bash
# check SID
if [ "$#" -ne "3" ]; then
    echo "USAGE: $0 <ORACLE_SID> <ORADATA> <PASSWORD>"
    exit 1
fi
SID=$1
ORADATA=`mkdir -p $2 && cd $2 && pwd`
PASSWD=$3
export ORACLE_SID=$SID
# check ORACLE_BASE
if [ -z "$ORACLE_BASE" ]; then
    echo "ERROR: please set ORACLE_BASE"
    exit 1
fi
# check ORACLE_HOME
if [ -z "$ORACLE_HOME" ]; then
    echo "ERROR: please set ORACLE_HOME"
    exit 1
fi
# check sqlplus
if [ -z "`which sqlplus`" ]; then
    export PATH=$ORACLE_HOME/bin:$PATH
    if [ -z "`which sqlplus`" ]; then
        echo "ERROR: no sqlplus found in $ORACLE_HOME/bin"
        exit 1
    fi  
fi
# create dir
echo creating directories ...
mkdir -p -m 750 $ORADATA/$SID
mkdir -p -m 750 $ORACLE_BASE/diag/rdbms/$SID/$SID/trace
mkdir -p -m 750 $ORACLE_BASE/diag/rdbms/$SID/$SID/cdump
mkdir -p -m 750 $ORACLE_BASE/flash_recovery_area
mkdir -p -m 750 $ORACLE_BASE/admin/$SID/adump
# create password file
echo creating password file ...
rm -f $ORACLE_HOME/dbs/orapw$SID
orapwd file=$ORACLE_HOME/dbs/orapw$SID password=$PASSWD entries=9
# create pfile
echo creating pfile ...
PFILE=/tmp/init$SID.ora
cat > $PFILE << EOD
*.audit_file_dest='$ORACLE_BASE/admin/$SID/adump'
*.control_files='$ORADATA/$SID/control01.ctl','$ORADATA/$SID/control02.ctl','$ORADATA/$SID/control03.ctl'
*.db_block_size=8192
*.db_domain=''
*.db_name='$SID'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=${SID}XDB)'
*.open_cursors=3000
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=1238860800 # 1200M
*.sga_target=1238860800  # 1200M
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
EOD
# startup sqlplus and create db
echo creating database ...
sqlplus / as sysdba > /dev/null 2>&1 <<EOD
set echo on
spool create_$SID.log
startup nomount pfile='$PFILE';
create spfile from pfile='$PFILE';
CREATE DATABASE "$SID"
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 5
MAXDATAFILES 100
DATAFILE '$ORADATA/$SID/system01.dbf'
    SIZE 325M
    AUTOEXTEND ON NEXT 10M
    EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '$ORADATA/$SID/sysaux01.dbf'
    SIZE 325M
    AUTOEXTEND ON NEXT 10M
  DEFAULT TABLESPACE users
      DATAFILE '$ORADATA/$SID/users01.dbf'
      SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '$ORADATA/$SID/temp01.dbf'
    SIZE 200M AUTOEXTEND ON MAXSIZE UNLIMITED
UNDO TABLESPACE "UNDOTBS1" DATAFILE '$ORADATA/$SID/undotbs01.dbf'
    SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
LOGFILE
    GROUP 1 ('$ORADATA/$SID/redo01.log') SIZE 2G,
    GROUP 2 ('$ORADATA/$SID/redo02.log') SIZE 2G,
    GROUP 3 ('$ORADATA/$SID/redo03.log') SIZE 2G
NOARCHIVELOG
CHARACTER SET AL32UTF8
NATIONAL CHARACTER SET AL16UTF16
USER SYS IDENTIFIED BY "$PASSWD"
USER SYSTEM IDENTIFIED BY "$PASSWD";
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
@?/sqlplus/admin/pupbld.sql
startup force
spool off
EOD
echo DONE! Please view create_$SID.log!


如果要创建em需要


emca -config dbcontrol db -repos create

创建一个10G的数据库


#!/bin/bash
# check SID
if [ "$#" -ne "3" ]; then
    echo "USAGE: $0 <ORACLE_SID> <ORADATA> <PASSWORD>"
    exit 1
fi
SID=$1
ORADATA=`mkdir -p $2 && cd $2 && pwd`
PASSWD=$3
export ORACLE_SID=$SID
# check ORACLE_BASE
if [ -z "$ORACLE_BASE" ]; then
    echo "ERROR: please set ORACLE_BASE"
    exit 1
fi
# check ORACLE_HOME
if [ -z "$ORACLE_HOME" ]; then
    echo "ERROR: please set ORACLE_HOME"
    exit 1
fi
# check sqlplus
if [ -z "`which sqlplus`" ]; then
    export PATH=$ORACLE_HOME/bin:$PATH
    if [ -z "`which sqlplus`" ]; then
        echo "ERROR: no sqlplus found in $ORACLE_HOME/bin"
        exit 1
    fi  
fi
# create dir
echo creating directories ...
mkdir -p -m 750 $ORADATA/$SID
mkdir -p -m 750 $ORACLE_BASE/admin/$SID/adump
mkdir -p -m 750 $ORACLE_BASE/admin/$SID/bdump
mkdir -p -m 750 $ORACLE_BASE/admin/$SID/cdump
mkdir -p -m 750 $ORACLE_BASE/admin/$SID/udump
mkdir -p -m 750 $ORACLE_BASE/flash_recovery_area
# create password file
echo creating password file ...
rm -f $ORACLE_HOME/dbs/orapw$SID
orapwd file=$ORACLE_HOME/dbs/orapw$SID password=$PASSWD entries=9
# create pfile
echo creating pfile ...
PFILE=/tmp/init$SID.ora
cat > $PFILE << EOD
$SID.__db_cache_size=92274688 # 88M
$SID.__large_pool_size=8388608 # 8M
$SID.__shared_pool_size=26214400 # 25M
$SID.__streams_pool_size=0
*.audit_file_dest='$ORACLE_BASE/admin/$SID/adump'
*.background_dump_dest='$ORACLE_BASE/admin/$SID/bdump'
*.compatible='10.2.0.1.0'
*.control_files='$ORADATA/$SID/control01.ctl','$ORADATA/$SID/control02.ctl','$ORADATA/$SID/control03.ctl'
*.core_dump_dest='$ORACLE_BASE/admin/$SID/cdump'
*.db_block_size=8192
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='$SID'
*.db_recovery_file_dest='$ORACLE_BASE/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=${SID}XDB)'
*.job_queue_processes=10
*.open_cursors=300
*.pga_aggregate_target=47185920 # 45M
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=262144000 # 250M
*.sga_target=142606336 # 136M
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='$ORACLE_BASE/admin/$SID/udump'
EOD
# startup sqlplus and create db
echo creating database ...
sqlplus / as sysdba > /dev/null 2>&1 <<EOD
set echo on
spool create_$SID.log
startup nomount pfile='$PFILE';
create spfile from pfile='$PFILE';
CREATE DATABASE "$SID"
MAXINSTANCES 8
MAXLOGHISTORY 1
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
DATAFILE '$ORADATA/$SID/system01.dbf'
    SIZE 50M
    AUTOEXTEND ON NEXT 10M
    EXTENT MANAGEMENT LOCAL
SYSAUX DATAFILE '$ORADATA/$SID/sysaux01.dbf'
    SIZE 10M
    AUTOEXTEND ON NEXT 10M
DEFAULT TEMPORARY TABLESPACE TEMP TEMPFILE '$ORADATA/$SID/temp01.dbf'
    SIZE 20M
UNDO TABLESPACE "UNDOTBS1" DATAFILE '$ORADATA/$SID/undotbs01.dbf'
    SIZE 50M
LOGFILE
    GROUP 1 ('$ORADATA/$SID/redo01.log') SIZE 5M,
    GROUP 2 ('$ORADATA/$SID/redo02.log') SIZE 5M,
    GROUP 3 ('$ORADATA/$SID/redo03.log') SIZE 5M
ARCHIVELOG
CHARACTER SET ZHS16GBK
NATIONAL CHARACTER SET AL16UTF16
USER SYS IDENTIFIED BY "$PASSWD"
USER SYSTEM IDENTIFIED BY "$PASSWD";
@?/rdbms/admin/catalog.sql
@?/rdbms/admin/catproc.sql
startup force
spool off
EOD
echo DONE! Please view create_$SID.log!



相关文章
|
8天前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
31 11
|
17天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
64 11
|
22天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
21天前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
1月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
1月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
23天前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
54 7
|
1月前
|
SQL 数据采集 监控
局域网监控电脑屏幕软件:PL/SQL 实现的数据库关联监控
在当今网络环境中,基于PL/SQL的局域网监控系统对于企业和机构的信息安全至关重要。该系统包括屏幕数据采集、数据处理与分析、数据库关联与存储三个核心模块,能够提供全面而准确的监控信息,帮助管理者有效监督局域网内的电脑使用情况。
35 2
|
1月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象

推荐镜像

更多