我是Oracle的新手.我遇到了一个问题.
首先,我想检查sysman帐户的权限:
SQL> select * from dba_sys_privs where grantee='sysman';
no rows selected
Run Code Online (Sandbox Code Playgroud)
我知道这意味着我的视图dba_sys_privs中没有内容.但无论如何,我已经建立了一个数据库.所以,我再试一次,只是缩短声明:
SQL> select * from dba_sys_privs
2
Run Code Online (Sandbox Code Playgroud)
所以这是我的两个问题:
任何人都有一套很好的sqlplus配置指令来帮助将给定的sql查询转换为精确的制表符分隔输出,以便进入电子表格或进一步处理?
我有一些SQL脚本,我正在尝试自动化.在过去,我使用过SQL*Plus,并从bash脚本手动调用sqlplus二进制文件.
但是,我试图弄清楚是否有一种连接到数据库的方法,并从bash脚本内部调用脚本...这样我就可以插入date并使查询运行相对于特定天数过去.
我正在做以下假脱机声明:
SET VERIFY OFF
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMSPOOL ON
SET TERM OFF
SPOOL &pathRelations
START scripts/relations.sql &parent
SPOOL OFF
SET TERM ON
Run Code Online (Sandbox Code Playgroud)
该scripts/relations.sql文件包含一个简单的select语句.
不幸的是,假脱机文件包含一个空行作为文件中的第一行.这条线在我们的框架中引起了麻烦.
当然,我可以摆脱这些路线sed但是有没有办法首先压制它的创造?
嗯,是的,这是一个不严肃的问题,但是在我们很多人都经历过 2020 年之后,是时候来点轻率了。享受...
如何在Windows下更改SQL Plus中的当前目录.
我正在尝试用几个"@ filename"命令编写一个脚本.
我知道可以使用File - > Open命令打开一个脚本,这将更改当前目录,但我正在寻找一种自动无人值守的方法.
基于Plasmer的响应,我在Windows中设置了SQLPATH环境变量,并且得到了一些对我来说足够好的东西.我没有尝试使用HOST命令设置它(我怀疑它会起作用).
Pourquoi Litytestdata的答案很好,但对我不起作用(目录相距太远).当然盖伊回答说无法做到也是正确的.我将把这两个投票,并接受Plasmer的回答.
当然这应该与会话终止相同并导致回滚?在我看来,这是最不可能的甲骨文.当我发现它做到了这一点时,我感到非常震惊
更重要的是 - 如果Oracle在退出时将其更改为回滚,那么有人会反对吗?
#!/bin/sh
echo "Please enter evaluate database username"
read eval_user
echo "Please enter evaluate database password"
read eval_pass
echo "Please enter the database name"
read db_name
LOGFILE=shell_log.txt
$ORACLE_HOME/bin/sqlplus -s /nolog <<-EOF>> ${LOGFILE}
connect $eval_user/$eval_pass@$db_name
WHENEVER OSERROR EXIT 9;
WHENEVER SQLERROR EXIT SQL.SQLCODE;
DBMS_OUTPUT.put_line('Connected to db');
EOF
if [ $? != 0 ]
then
echo "The upgrade script failed. Please refer to the log results.txt for more information"
echo "Error code $?"
exit 0;
fi
Run Code Online (Sandbox Code Playgroud)
我正在输入垃圾值,试图强制此脚本失败.但是,令人讨厌的是,它一直在前进,没有提到任何错误代码.还有什么需要做的吗?
我正在尝试从sql plus中的列输出中删除最后一个字符.列条目的长度不固定
例如,XYZA应输出为XYZ
我尝试过使用该substr()功能,但似乎无法正常工作.
SUBSTR(ooo.CO_NAME,1,LENGTH(ooo.CO_NAME-1))
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用SQLPlus创建自己的数据库.所以首先我以管理员身份登录:
sqlplus sys/sys_password as sysdba
Run Code Online (Sandbox Code Playgroud)
然后我尝试创建一个名为sqlzoo的新用户:
CREATE USER sqlzoo IDENTIFIED BY sqlzoo
DEFAULT TABLESPACE tbs_perm_01sqlzoo
TEMPORARY TABLESPACE tbs_perm_01sqlzoo
QUOTA 20M ON tbs_perm_01sqlzoo;
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
ERROR at line 1:
ORA-01109: database not open
Run Code Online (Sandbox Code Playgroud)
为什么它会给我这样的错误?