Metadata-Version: 2.4
Name: qivo-scanora
Version: 0.1.5
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Rust
Classifier: Topic :: Database
Requires-Dist: oracledb>=3.0
Summary: ScanOra: export an Oracle database's catalogue and code to one file, read-only, for QiVo Studio
Keywords: oracle,plsql,data dictionary,export,data lineage,read-only
Author-email: QiVo Studio <admin@qivo.studio>
License: Proprietary: free to use under the QiVo Studio Licence Agreement 1.0
	(LICENSE.md in the package)
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Homepage, https://qivo.studio
Project-URL: Issues, https://github.com/qivo-studio/qivo-studio/issues

# ScanOra

Export an Oracle database's catalogue and code to one `.scanora` file, read-only, and analyse it in
[QiVo Studio](https://qivo.studio) anywhere else. For databases that the analysis server cannot reach: run ScanOra
on a machine that can (a jump host, a DBA's laptop), then move the file. Free to use; part of QiVo Studio.

```bash
pip install qivo-scanora           # no Oracle client needed (python-oracledb thin mode)
scanora check  --dsn db.example.com:1521/ORCLPDB --user QIVO_READER --schemas ETL,DW
scanora export --dsn db.example.com:1521/ORCLPDB --user QIVO_READER --schemas ETL,DW -o finance.scanora
scanora verify finance.scanora
```

Then in QiVo Studio: `qivo import-scan finance.scanora --analyse`.

**Read-only, by construction.** Every statement is checked to be a query (SELECT or WITH) before it is sent, inside
a read-only transaction (`SET TRANSACTION READ ONLY`), so the database itself refuses any change. The account needs
`SELECT ANY DICTIONARY` (and, for executed statements, `SELECT` on `V$SQL`; leave it out with `--no-vsql`).
`scanora queries` prints every query, for a DBA to review before it runs.

**What the file holds**: objects, columns, constraints, synonyms, comments, dependencies, triggers, type attributes,
the source of PL/SQL units, views and materialized views, scheduler jobs, external tables, PL/Scope (unless
`--no-plscope`), the rows of the configuration tables you name (`--control-table OWNER.TABLE`), and V$SQL (unless
`--no-vsql`). No table data otherwise, and never the password. The password is typed, or read from
`SCANORA_PASSWORD`.

**The file**: a zip archive with one member per query and a manifest with each member's row count and SHA-256.
`scanora verify` checks them; QiVo Studio checks them again on import and refuses a changed or damaged file.

Licence: the QiVo Studio Licence Agreement 1.0 (`LICENSE.md` in the package). Open-source components:
`THIRD_PARTY_NOTICES.md`.

Questions, bugs or ideas: admin@qivo.studio, or [open an issue](https://github.com/qivo-studio/qivo-studio/issues).

