我想编写一个SQL脚本来创建数据库。我想对它进行参数化以便能够将其重用于未来的数据库。作为基础,我想使用Oracle文档页面中的脚本:
CREATE DATABASE mynewdb
USER SYS IDENTIFIED BY sys_password
USER SYSTEM IDENTIFIED BY system_password
LOGFILE GROUP 1 ('/u01/app/oracle/oradata/mynewdb/redo01.log') SIZE 100M,
GROUP 2 ('/u01/app/oracle/oradata/mynewdb/redo02.log') SIZE 100M,
GROUP 3 ('/u01/app/oracle/oradata/mynewdb/redo03.log') SIZE 100M
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXLOGHISTORY 1
MAXDATAFILES 100
CHARACTER SET US7ASCII
NATIONAL CHARACTER SET AL16UTF16
EXTENT MANAGEMENT LOCAL
DATAFILE '/u01/app/oracle/oradata/mynewdb/system01.dbf' SIZE 325M REUSE
SYSAUX DATAFILE '/u01/app/oracle/oradata/mynewdb/sysaux01.dbf' SIZE 325M REUSE
DEFAULT TABLESPACE users
DATAFILE '/u01/app/oracle/oradata/mynewdb/users01.dbf'
SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
DEFAULT TEMPORARY TABLESPACE tempts1
TEMPFILE '/u01/app/oracle/oradata/mynewdb/temp01.dbf'
SIZE 20M REUSE
UNDO TABLESPACE undotbs
DATAFILE '/u01/app/oracle/oradata/mynewdb/undotbs01.dbf'
SIZE 200M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;
要运行Oracle-sqlplus,必须设置一些系统变量,如ORACLE_SID。
我希望我的问题足够明确。任何提示都赞赏。
答案 0 :(得分:1)
Alex已经为您提供了最好的实践帮助,但对于任何有兴趣或参考的人,请参阅下文。
如果您需要在sqlplus中引用shell环境变量,我使用的方法是运行一个脚本,将shell变量转换为sqlplus DEFINE语句,例如。
cat shell2define.sh
set | grep '=' | sed 's/^/define /' > shell.sql
然后在sqlplus中:
SQL> ! ./shell2define.sh
SQL> @shell.sql
SQL> define
现在你可以像任何sqlplus DEFINEd变量一样引用shell变量,例如: &安培; ORACLE_SID。最后一个“define”命令只列出了所有变量。扩展脚本以删除/处理特殊变量(如$ _)和带引号的变量,或者只使用它来包含所需的变量。如果每次都需要,也不要忘记使用$ ORACLE_HOME / sqlplus / admin / glogin.sql自动调用它。