新建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!



相关文章
|
SQL 机器学习/深度学习 人工智能
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
本文系统性地阐述了自然语言转SQL(NL2SQL) 技术如何让非技术背景的业务分析师实现数据自助查询,从而提升数据驱动决策的效率与准确性。
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
998 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
595 6
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
836 8
|
SQL 人工智能 Java
用 LangChain4j+Ollama 打造 Text-to-SQL AI Agent,数据库想问就问
本文介绍了如何利用AI技术简化SQL查询操作,让不懂技术的用户也能轻松从数据库中获取信息。通过本地部署PostgreSQL数据库和Ollama模型,结合Java代码,实现将自然语言问题自动转换为SQL查询,并将结果以易懂的方式呈现。整个流程简单直观,适合初学者动手实践,同时也展示了AI在数据查询中的潜力与局限。
1625 8
|
SQL 人工智能 Linux
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC0 发布 - 从本地到云端的 AI 就绪企业数据库
619 5
|
SQL 缓存 监控
SqlRest让SQL秒变Http API,还支持20+数据库(含国产数据库)
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
SQL 存储 数据库
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
SQL Server Management Studio (SSMS) 21 - 微软数据库管理工具
1792 0
|
Shell 数据库 数据格式
《懒人Shell脚本》之七——格式化处理数据存入数据库实现
实际应用开发中遇到:将非格式化的文件数据存储到数据库中。对于传统的格式化的数据:ini/json/xml我们都有现成的类库去实现。而对于如下非格式化的数据呢?以下是我的思考与实现。
910 0
|
关系型数据库 MySQL Shell
MySQL 备份 Shell 脚本:支持远程同步与阿里云 OSS 备份
一款自动化 MySQL 备份 Shell 脚本,支持本地存储、远程服务器同步(SSH+rsync)、阿里云 OSS 备份,并自动清理过期备份。适用于数据库管理员和开发者,帮助确保数据安全。

推荐镜像

更多