[英]Check Oracle database is open and ready
首先。 當然,我嘗試用谷歌搜索並看到其他答案,但沒有一個對我有幫助。
我啟動服務器的問題,當它啟動時我想插入一個 PDB。 要在插入新 PDB 之前等待 DB 初始化並打開,我運行腳本:
for (; ; )
{
$process = Start-Process "sqlplus" -ArgumentList "-S sys/Qq123456 as sysdba @$Env:INSTALL_DIR\$Env:SCRIPT_DIR\ping.sql" -Wait -PassThru
if ($process.ExitCode -eq 0)
{
Write-Output "DB started!"
break;
}
Start-Sleep -s 1
}
ping.sql:
WHENEVER SQLERROR EXIT SQL.SQLCODE;
declare
db_not_open exception;
pragma exception_init (db_not_open, -20123);
l_count number(10);
begin
select count(*) into l_count from v$instance where status = 'OPEN' and database_status = 'ACTIVE';
if (l_count = 0) then
RAISE db_not_open;
end if;
end;
/
exit 0;
然后我嘗試插入 PDB sqlplus -S / as sysdba "@$Env:INSTALL_DIR\$Env:SCRIPT_DIR\attach_pdb.sql"
attach_pdb.sql:
WHENEVER SQLERROR EXIT SQL.SQLCODE;
create pluggable database test_pdb using 'c:\data\oracle\oradata\orcl\test_pdb\test_pdb.xml' nocopy tempfile reuse;
alter pluggable database test_pdb open;
exit;
所以我循環直到我的數據庫狀態打開並處於活動狀態,但有時我在嘗試插入 PDB 時仍然會出錯:
create pluggable database test_pdb using 'c:\data\oracle\oradata\orcl\test_pdb\test_pdb.xml' nocopy tempfile reuse
*
ERROR at line 1:
ORA-01109: database not open
那么,誰來檢查數據庫是否已打開並准備好進行任何操作?
我不知道正確的解決方案,但我使用這個 ping 腳本解決了這個問題:
WHENEVER SQLERROR EXIT SQL.SQLCODE;
declare
db_not_open exception;
pragma exception_init (db_not_open, -20123);
l_count number(10);
begin
select count(*) into l_count from v$instance where status = 'OPEN' and database_status = 'ACTIVE';
if (l_count = 0) then
RAISE db_not_open;
end if;
-- we have to be sure that simple operation is already possible
execute immediate '
CREATE PLUGGABLE DATABASE ping_pdb ADMIN USER ping_user identified by ping
DEFAULT TABLESPACE USERS
DATAFILE ''C:\data\oracle\oradata\ORCL\ping_pdb\users01.dbf''
SIZE 10M AUTOEXTEND ON
FILE_NAME_CONVERT=(
''C:\data\oracle\oradata\ORCL\pdbseed'',
''C:\data\oracle\oradata\ORCL\ping_pdb\''
)';
execute immediate 'drop pluggable database ping_pdb INCLUDING DATAFILES';
end;
/
exit 0;
這不是一個好的解決方案,但我沒有想法。 如果有人有更好的解決方案,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.